diff options
| author | David Sommerseth <dazo@users.sourceforge.net> | 2009-09-07 21:10:22 +0200 |
|---|---|---|
| committer | David Sommerseth <dazo@users.sourceforge.net> | 2009-09-07 21:10:22 +0200 |
| commit | 66b29488a7ed5909564ed03b3e89cd0d008df09e (patch) | |
| tree | 2ef1558a3c54b37b59a775f4734cb467cac183cb /eurephiadm/client_session.c | |
| parent | 428d4fd45100c5c9b799f2fb127775b8b2382ecc (diff) | |
| download | eurephia-66b29488a7ed5909564ed03b3e89cd0d008df09e.tar.gz eurephia-66b29488a7ed5909564ed03b3e89cd0d008df09e.tar.xz eurephia-66b29488a7ed5909564ed03b3e89cd0d008df09e.zip | |
Moved all malloc() operations over to a calloc wrapper, malloc_nullsafe()
This also improves debugging as well, if debug logging is enabled and log level is >= 40.
Diffstat (limited to 'eurephiadm/client_session.c')
| -rw-r--r-- | eurephiadm/client_session.c | 14 |
1 files changed, 5 insertions, 9 deletions
diff --git a/eurephiadm/client_session.c b/eurephiadm/client_session.c index 90a99a6..0f3ec80 100644 --- a/eurephiadm/client_session.c +++ b/eurephiadm/client_session.c @@ -85,9 +85,8 @@ char *read_session_file(eurephiaCTX *ctx) { return NULL; } - sesskey = (char *) malloc(256); + sesskey = (char *) malloc_nullsafe(ctx, 256); assert( sesskey != NULL ); - memset(sesskey, 0, 256); if( (fgets(sesskey, 254, sfp) == NULL) || (strlen_nullsafe(sesskey) < 64) ) { eurephia_log(ctx, LOG_PANIC, 0, "Could not read session file (%s). Session value too short", fname); @@ -162,22 +161,19 @@ eurephiaSESSION *create_session(eurephiaCTX *ctx, const char *sesskey) { unsigned char sha_res[SHA512_HASH_SIZE+2]; SHA512Context sha; - new_sess = (eurephiaSESSION *) malloc(sizeof(eurephiaSESSION) + 2); + new_sess = (eurephiaSESSION *) malloc_nullsafe(ctx, sizeof(eurephiaSESSION) + 2); assert(new_sess != NULL); - memset(new_sess, 0, sizeof(eurephiaSESSION) + 2); - if( sesskey == NULL ) { // Get data for a unique session key - randdata = (char *) malloc(514); + randdata = (char *) malloc_nullsafe(ctx, 514); assert(randdata != NULL); do { char *ptr = NULL; int i = 0; - memset(randdata, 0, 514); if( !eurephia_randstring(ctx, randdata, 512) ) { eurephia_log(ctx, LOG_FATAL, 0, "Could not generate enough random data for session"); @@ -190,9 +186,8 @@ eurephiaSESSION *create_session(eurephiaCTX *ctx, const char *sesskey) { memset(&sha_res, 0, SHA512_HASH_SIZE+2); free_nullsafe(new_sess->sessionkey); - new_sess->sessionkey = (char *) malloc((SHA512_HASH_SIZE*2) + 3); + new_sess->sessionkey = (char *) malloc_nullsafe(ctx, (SHA512_HASH_SIZE*2) + 3); assert(new_sess->sessionkey != NULL); - memset(new_sess->sessionkey, 0, (SHA512_HASH_SIZE*2) + 3); SHA512Init(&sha); SHA512Update(&sha, randdata, 512); @@ -208,6 +203,7 @@ eurephiaSESSION *create_session(eurephiaCTX *ctx, const char *sesskey) { loop++; uniqchk = eDBcheck_sessionkey_uniqueness(ctx, new_sess->sessionkey); + memset(randdata, 0, 514); } while( (uniqchk == 0) && (loop < 11) ); free_nullsafe(randdata); |
