From ef6206f51596d3c643dc0efe441ecaa0159f5632 Mon Sep 17 00:00:00 2001 From: Jonathan Beck Date: Sun, 17 Aug 2008 22:15:44 +0200 Subject: use NULL at end of dictionary values (fixes a memory leak). --- src/lockdown.c | 12 ++++++------ src/plist.c | 7 +++---- 2 files changed, 9 insertions(+), 10 deletions(-) (limited to 'src') diff --git a/src/lockdown.c b/src/lockdown.c index 76dbf7b..7f48dda 100644 --- a/src/lockdown.c +++ b/src/lockdown.c @@ -202,7 +202,7 @@ int lockdownd_hello(lockdownd_client *control) { xmlFreeDoc(plist); free(XML_content); - for (i = 0; strcmp(dictionary[i], ""); i+=2) { + for (i = 0; dictionary[i]; i+=2) { if (!strcmp(dictionary[i], "Result") && !strcmp(dictionary[i+1], "Success")) { free_dictionary(dictionary); if (debug) printf("lockdownd_hello(): success\n"); @@ -258,7 +258,7 @@ int lockdownd_get_device_public_key(lockdownd_client *control, char **public_key free(XML_content); int success = 0; - for (i = 0; strcmp(dictionary[i], ""); i+=2) { + for (i = 0; dictionary[i]; i+=2) { if (!strcmp(dictionary[i], "Result") && !strcmp(dictionary[i+1], "Success")) { success = 1; } @@ -395,7 +395,7 @@ int lockdownd_pair_device(lockdownd_client *control, char *public_key_b64, char free(XML_content); int success = 0; - for (i = 0; strcmp(dictionary[i], ""); i+=2) { + for (i = 0; dictionary[i]; i+=2) { if (!strcmp(dictionary[i], "Result") && !strcmp(dictionary[i+1], "Success")) { success = 1; } @@ -592,7 +592,7 @@ int lockdownd_start_SSL_session(lockdownd_client *control, const char *HostID) { dictionary = read_dict_element_strings(dict); xmlFreeDoc(plist); free(what2send); - for (i = 0; strcmp(dictionary[i], ""); i+=2) { + for (i = 0; dictionary[i]; i+=2) { if (!strcmp(dictionary[i], "Result") && !strcmp(dictionary[i+1], "Success")) { // Set up GnuTLS... //gnutls_anon_client_credentials_t anoncred; @@ -650,7 +650,7 @@ int lockdownd_start_SSL_session(lockdownd_client *control, const char *HostID) { if (debug) { printf("Apparently failed negotiating with lockdownd.\n"); printf("Responding dictionary: \n"); - for (i = 0; strcmp(dictionary[i], ""); i+=2) { + for (i = 0; dictionary[i]; i+=2) { printf("\t%s: %s\n", dictionary[i], dictionary[i+1]); } } @@ -814,7 +814,7 @@ int lockdownd_start_service(lockdownd_client *control, const char *service) { if (!dict) return 0; dictionary = read_dict_element_strings(dict); - for (i = 0; strcmp(dictionary[i], ""); i+=2) { + for (i = 0; dictionary[i]; i+=2) { if (debug) printf("lockdownd_start_service() dictionary %s: %s\n", dictionary[i], dictionary[i+1]); if (!xmlStrcmp(dictionary[i], "Port")) { diff --git a/src/plist.c b/src/plist.c index e64cff2..31490d0 100644 --- a/src/plist.c +++ b/src/plist.c @@ -212,7 +212,7 @@ char **read_dict_element_strings(xmlNode *dict) { old = return_me; return_me = realloc(return_me, sizeof(char*) * (current_length+1)); - return_me[current_pos] = strdup(""); + return_me[current_pos] = NULL; return return_me; } @@ -224,11 +224,10 @@ void free_dictionary(char **dictionary) { if (!dictionary) return; - for (i = 0; strcmp(dictionary[i], ""); i++) { + for (i = 0; dictionary[i]; i++) { free(dictionary[i]); } - - free(dictionary[i]); + free(dictionary); } -- cgit v1.1-32-gdbae