summaryrefslogtreecommitdiffstats
path: root/eurephiadm/client_session.c
diff options
context:
space:
mode:
authorDavid Sommerseth <dazo@users.sourceforge.net>2009-09-07 21:10:22 +0200
committerDavid Sommerseth <dazo@users.sourceforge.net>2009-09-07 21:10:22 +0200
commit66b29488a7ed5909564ed03b3e89cd0d008df09e (patch)
tree2ef1558a3c54b37b59a775f4734cb467cac183cb /eurephiadm/client_session.c
parent428d4fd45100c5c9b799f2fb127775b8b2382ecc (diff)
downloadeurephia-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.c14
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);