discomfitor pushed a commit to branch enlightenment-0.19.

http://git.enlightenment.org/core/enlightenment.git/commit/?id=e19b19672c1f50ff58c7e42e4f3a39a847cc6fc9

commit e19b19672c1f50ff58c7e42e4f3a39a847cc6fc9
Author: Mike Blumenkrantz <zm...@osg.samsung.com>
Date:   Wed Feb 18 17:07:39 2015 -0500

    fix crashing when changing desklock settings and using pin/personal auth
---
 src/modules/conf_display/e_int_config_desklock.c | 34 ++++++++++++++++--------
 1 file changed, 23 insertions(+), 11 deletions(-)

diff --git a/src/modules/conf_display/e_int_config_desklock.c 
b/src/modules/conf_display/e_int_config_desklock.c
index b2150c1..eec32de 100644
--- a/src/modules/conf_display/e_int_config_desklock.c
+++ b/src/modules/conf_display/e_int_config_desklock.c
@@ -435,9 +435,13 @@ _basic_apply(E_Config_Dialog *cfd __UNUSED__, 
E_Config_Dialog_Data *cfdata)
    e_config->desklock_auth_method = cfdata->desklock_auth_method;
    if (e_config->desklock_auth_method == E_DESKLOCK_AUTH_METHOD_PERSONAL)
      {
-        e_config->desklock_passwd =
-          e_auth_hash_djb2(cfdata->desklock_personal_passwd,
-          strlen(cfdata->desklock_personal_passwd));
+        if ((!e_config->desklock_passwd) &&
+            cfdata->desklock_personal_passwd && 
cfdata->desklock_personal_passwd[0])
+          {
+             e_config->desklock_passwd =
+               e_auth_hash_djb2(cfdata->desklock_personal_passwd,
+               strlen(cfdata->desklock_personal_passwd));
+          }
      }
    else if (cfdata->desklock_auth_method == E_DESKLOCK_AUTH_METHOD_PIN)
      {
@@ -533,17 +537,25 @@ _basic_check_changed(E_Config_Dialog *cfd __UNUSED__, 
E_Config_Dialog_Data *cfda
      return 1;
    if (e_config->desklock_auth_method == E_DESKLOCK_AUTH_METHOD_PERSONAL)
      {
-        if (e_config->desklock_passwd !=
-          e_auth_hash_djb2(cfdata->desklock_personal_passwd,
-          strlen(cfdata->desklock_personal_passwd)))
-          return 1;
+        if ((!e_config->desklock_passwd) &&
+            cfdata->desklock_personal_passwd && 
cfdata->desklock_personal_passwd[0])
+          {
+             if (e_config->desklock_passwd !=
+               e_auth_hash_djb2(cfdata->desklock_personal_passwd,
+               strlen(cfdata->desklock_personal_passwd)))
+               return 1;
+          }
      }
    if (e_config->desklock_auth_method == E_DESKLOCK_AUTH_METHOD_PIN)
      {
-        if (e_config->desklock_pin !=
-          e_auth_hash_djb2(cfdata->pin_str,
-          strlen(cfdata->pin_str)))
-          return 1;
+        if ((!e_config->desklock_pin) &&
+            cfdata->pin_str && cfdata->pin_str[0])
+          {
+             if (e_config->desklock_pin !=
+               e_auth_hash_djb2(cfdata->pin_str,
+               strlen(cfdata->pin_str)))
+               return 1;
+          }
      }
 
    if (e_config->desklock_autolock_screensaver != cfdata->screensaver_lock)

-- 


Reply via email to