From 126a8ca3e96dea686f42fbf822d8cf519668e232 Mon Sep 17 00:00:00 2001 From: Georg Hopp Date: Mon, 25 Nov 2013 21:55:32 +0000 Subject: [PATCH] fixed various memory management issues detected with valgrind --- src/application/controller/signup/create.c | 8 ++++---- src/application/controller/user/create.c | 8 ++++---- src/application/controller/user/update.c | 9 +++++---- src/application/create_user.c | 2 ++ src/application/login.c | 3 +++ src/application/update_password.c | 4 ++-- src/application/update_user.c | 2 ++ src/config/config.c | 2 +- src/config/value.c | 2 +- 9 files changed, 24 insertions(+), 16 deletions(-) diff --git a/src/application/controller/signup/create.c b/src/application/controller/signup/create.c index 3a7642a..8b34d0e 100644 --- a/src/application/controller/signup/create.c +++ b/src/application/controller/signup/create.c @@ -42,14 +42,13 @@ controllerSignupCreate( { Credential credential; User user; + Uuid user_id; char * response_data; _controllerProcessUserCreateArgs(args, &user, &credential); - if (0 == uuidCompare( - uuidZero, - applicationCreateUser(application, credential, user))) - { + user_id = applicationCreateUser(application, credential, user); + if (0 == uuidCompare(uuidZero, user_id)) { response_data = NULL; } else { applicationLogin(application, credential, session); @@ -58,6 +57,7 @@ controllerSignupCreate( delete(credential); delete(user); + delete(user_id); return response_data; diff --git a/src/application/controller/user/create.c b/src/application/controller/user/create.c index 6623b23..9a4a197 100644 --- a/src/application/controller/user/create.c +++ b/src/application/controller/user/create.c @@ -41,14 +41,13 @@ controllerUserCreate( { Credential credential; User user; + Uuid user_id; char * response_data; _controllerProcessUserCreateArgs(args, &user, &credential); - if (0 == uuidCompare( - uuidZero, - applicationCreateUser(application, credential, user))) - { + user_id = applicationCreateUser(application, credential, user); + if (0 == uuidCompare(uuidZero, user_id)) { response_data = NULL; } else { response_data = controllerCurrentuserRead(application, session, NULL); @@ -56,6 +55,7 @@ controllerUserCreate( delete(credential); delete(user); + delete(user_id); return response_data; } diff --git a/src/application/controller/user/update.c b/src/application/controller/user/update.c index 2169252..7a41b83 100644 --- a/src/application/controller/user/update.c +++ b/src/application/controller/user/update.c @@ -39,16 +39,17 @@ controllerUserUpdate( Session session, Hash args) { + Uuid user_id; + if (! _controllerUpdateUserFromArgs(args, &(session->user))) { return NULL; } - if (0 == uuidCompare( - uuidZero, - applicationUpdateUser(application, session->user))) - { + user_id = applicationUpdateUser(application, session->user); + if (0 == uuidCompare(uuidZero, user_id)) { return NULL; } + delete(user_id); return controllerCurrentuserRead(application, session, NULL); } diff --git a/src/application/create_user.c b/src/application/create_user.c index 41231b0..278e259 100644 --- a/src/application/create_user.c +++ b/src/application/create_user.c @@ -62,6 +62,8 @@ applicationCreateUser( return uuidZero; } + MEM_FREE(user_serialized); + if (! applicationUpdatePassword(this, cred, user)) { /** * \todo diff --git a/src/application/login.c b/src/application/login.c index 2168f50..52eec44 100644 --- a/src/application/login.c +++ b/src/application/login.c @@ -120,9 +120,12 @@ applicationLogin( break; } + delete(search); return TRUE; } + delete(search); + return FALSE; } diff --git a/src/application/update_password.c b/src/application/update_password.c index 307b374..730f4af 100644 --- a/src/application/update_password.c +++ b/src/application/update_password.c @@ -48,8 +48,6 @@ applicationUpdatePassword( unsigned char * hash = hash_data+SALT_SIZE; Uuid index; - index = indexUuid(user, this->user_namespace); - if (FALSE == hash_pw( CRED_PWD(cred).pass, CRED_PWD(cred).npass, @@ -61,12 +59,14 @@ applicationUpdatePassword( memcpy(hash_data, salt, SALT_SIZE); MEM_FREE(salt); + index = indexUuid(user, this->user_namespace); storageUpdate( this->passwords, (char *)(index->uuid).value, sizeof((index->uuid).value), (char *)hash_data, SALT_SIZE + HASH_SIZE); + delete(index); return TRUE; } diff --git a/src/application/update_user.c b/src/application/update_user.c index d6f99d6..63d6f7c 100644 --- a/src/application/update_user.c +++ b/src/application/update_user.c @@ -61,6 +61,8 @@ applicationUpdateUser( return uuidZero; } + MEM_FREE(user_serialized); + return index; } diff --git a/src/config/config.c b/src/config/config.c index 909c25f..af85bf5 100644 --- a/src/config/config.c +++ b/src/config/config.c @@ -67,7 +67,7 @@ configCtor(void * _this, va_list * params) key++; } - if ('#' == *key) { + if ('#' == *key || 0 == *key) { continue; } diff --git a/src/config/value.c b/src/config/value.c index 7472dd5..b9628b6 100644 --- a/src/config/value.c +++ b/src/config/value.c @@ -54,7 +54,7 @@ configValueCtor(void * _this, va_list * params) { this->type = CONFIG_VALUE_STRING; (this->value).string = memMalloc(nvalue-1); - (this->value).string[nvalue-1] = '\0'; + (this->value).string[nvalue-2] = '\0'; memcpy((this->value).string, value+1, nvalue-2); this->nvalue = nvalue; } else {