evas: track modifier in the limited range of unsigned long long.
authorCedric BAIL <cedric.bail@samsung.com>
Thu, 13 Mar 2014 01:52:37 +0000 (10:52 +0900)
committerCedric BAIL <cedric.bail@samsung.com>
Thu, 13 Mar 2014 01:52:37 +0000 (10:52 +0900)
This fix CID 1191924, CID 1191923, CID 1191922 and CID 1191921.

src/lib/evas/canvas/evas_key.c

index 22c9f2e..188870c 100644 (file)
@@ -150,7 +150,7 @@ _evas_key_modifier_on(Eo *eo_e EINA_UNUSED, Evas_Public_Data *e, const char *key
    int n;
 
    n = (Evas_Modifier_Mask)evas_key_modifier_number(&(e->modifiers), keyname);
-   if (n < 0) return;
+   if (n < 0 || n > 63) return;
    num = (Evas_Modifier_Mask)n;
    num = 1 << num;
    e->modifiers.mask |= num;
@@ -163,7 +163,7 @@ _evas_key_modifier_off(Eo *eo_e EINA_UNUSED, Evas_Public_Data *e, const char *ke
    int n;
 
    n = evas_key_modifier_number(&(e->modifiers), keyname);
-   if (n < 0) return;
+   if (n < 0 || n > 63) return;
    num = (Evas_Modifier_Mask)n;
    num = 1 << num;
    e->modifiers.mask &= ~num;
@@ -176,7 +176,7 @@ _evas_key_lock_on(Eo *eo_e EINA_UNUSED, Evas_Public_Data *e, const char *keyname
    int n;
 
    n = evas_key_lock_number(&(e->locks), keyname);
-   if (n < 0) return;
+   if (n < 0 || n > 63) return;
    num = (Evas_Modifier_Mask)n;
    num = 1 << num;
    e->locks.mask |= num;
@@ -189,7 +189,7 @@ _evas_key_lock_off(Eo *eo_e EINA_UNUSED, Evas_Public_Data *e, const char *keynam
    int n;
 
    n = evas_key_lock_number(&(e->locks), keyname);
-   if (n < 0) return;
+   if (n < 0 || n > 63) return;
    num = (Evas_Modifier_Mask)n;
    num = 1 << num;
    e->locks.mask &= ~num;
@@ -206,7 +206,7 @@ _evas_key_modifier_mask_get(Eo *eo_e EINA_UNUSED, Evas_Public_Data *e, const cha
 
    if (!keyname) return 0;
    n = evas_key_modifier_number(&(e->modifiers), keyname);
-   if (n < 0) return 0;
+   if (n < 0 || n > 63) return 0;
    num = (Evas_Modifier_Mask)n;
    return 1 << num;
 }