Fix NULL pointer dereference in LDAP lookup code.
[claws.git] / src / ldapupdate.c
index df12439223164b80e89bebcdd771cbaf10ed04a3..e8ea64ae2779012888f1c841ba1a8ba7b2a3c0f5 100644 (file)
@@ -186,7 +186,7 @@ gboolean ldapsvr_retrieve_item_person(ItemPerson *person, GHashTable *array) {
                case ADD_ENTRY: g_hash_table_insert(array, "status", "new"); break;
                case UPDATE_ENTRY: g_hash_table_insert(array, "status", "update"); break;
                case DELETE_ENTRY: g_hash_table_insert(array, "status", "delete"); break;
-               default: g_critical(_("ldapsvr_retrieve_item_person->Unknown status: %d"), person->status);
+               default: g_critical("ldapsvr_retrieve_item_person->Unknown status: %d", person->status);
        }
        g_hash_table_insert(array, "uid", ADDRITEM_ID(person));
        g_hash_table_insert(array, "cn", ADDRITEM_NAME(person));
@@ -403,24 +403,14 @@ Rdn *ldapsvr_modify_dn(GHashTable *hash, gchar *dn) {
                        update_rdn(rdn, compare, rest);
                        return rdn;
                }
-               else {
-                       /* We cannot remove dn */
-                       rdn_free(rdn);
-                       return NULL;
-               }
        }
        else {
                compare = g_hash_table_lookup(hash, rdn->attribute);
                /* if compare and rdn->attribute are equal then dn removed/empty */
-               if (strcmp(compare, rdn->attribute) != 0) {
+               if (compare != NULL && strcmp(compare, rdn->attribute) != 0) {
                        update_rdn(rdn, compare, rest);
                        return rdn;
                }
-               else {
-                       /* We cannot remove dn */
-                       rdn_free(rdn);
-                       return NULL;
-               }
        }
        rdn_free(rdn);
        return NULL;
@@ -479,7 +469,7 @@ void clean_up(LDAP *ld, LdapServer *server, GHashTable *contact) {
                        ItemPerson *res = 
                                addrcache_remove_person(server->addressCache, person);
                        if (!res)
-                               g_critical(N_("ldapsvr_update_book: Could not clean cache\n"));
+                               g_critical("ldapsvr_update_book: Could not clean cache\n");
                        else
                                addritem_free_item_person(res);
                }
@@ -1447,7 +1437,7 @@ void ldapsvr_update_book(LdapServer *server, ItemPerson *item) {
                        ldapsvr_delete_contact(server, contact);
                }
                else
-                       g_critical(_("ldapsvr_update_book->Unknown status: %s\n"), status);
+                       g_critical("ldapsvr_update_book->Unknown status: %s\n", status);
                contacts = g_list_next(contacts);
        }
        ldapsvr_free_hashtable(head);