From f93ce025605cd2e0962070b2ff7dbd2c2e4cb86c Mon Sep 17 00:00:00 2001 From: Assar Westerlund Date: Sun, 16 Nov 1997 09:49:56 +0000 Subject: [PATCH] free some more memory. check some more return values. git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@4021 ec53bebd-3082-4978-b11e-865c3cabbd6b --- lib/krb5/keytab.c | 19 +++++++++++++------ lib/krb5/mk_error.c | 2 ++ lib/krb5/mk_rep.c | 2 ++ 3 files changed, 17 insertions(+), 6 deletions(-) diff --git a/lib/krb5/keytab.c b/lib/krb5/keytab.c index 5c85d212a..774d6560f 100644 --- a/lib/krb5/keytab.c +++ b/lib/krb5/keytab.c @@ -54,8 +54,10 @@ krb5_kt_resolve(krb5_context context, if (k == NULL) return ENOMEM; k->filename = strdup(name + 5); - if (k->filename == NULL) + if (k->filename == NULL) { + free(k); return ENOMEM; + } *id = k; return 0; } @@ -248,9 +250,11 @@ krb5_kt_ret_data(krb5_storage *sp, return ret; data->length = size; data->data = malloc(size); + if (data->data == NULL) + return ENOMEM; ret = sp->fetch(sp, data->data, size); if(ret != size) - return (ret < 0)? errno : KRB5_CC_END; + return (ret < 0)? errno : KRB5_KT_END; return 0; } @@ -264,10 +268,12 @@ krb5_kt_ret_string(krb5_storage *sp, if(ret) return ret; *data = malloc(size + 1); + if (*data == NULL) + return ENOMEM; ret = sp->fetch(sp, *data, size); (*data)[size] = '\0'; if(ret != size) - return (ret < 0)? errno : KRB5_CC_END; + return (ret < 0)? errno : KRB5_KT_END; return 0; } @@ -285,7 +291,8 @@ krb5_kt_ret_principal(krb5_storage *sp, return ENOMEM; ret = krb5_ret_int16(sp, &tmp); - if(ret) return ret; + if(ret) + return ret; p->name.name_type = KRB5_NT_SRV_HST; p->name.name_string.len = tmp; ret = krb5_kt_ret_string(sp, &p->realm); @@ -327,7 +334,7 @@ krb5_kt_store_data(krb5_storage *sp, if(ret != data.length){ if(ret < 0) return errno; - return KRB5_CC_END; + return KRB5_KT_END; } return 0; } @@ -345,7 +352,7 @@ krb5_kt_store_string(krb5_storage *sp, if(ret != len){ if(ret < 0) return errno; - return KRB5_CC_END; + return KRB5_KT_END; } return 0; } diff --git a/lib/krb5/mk_error.c b/lib/krb5/mk_error.c index 1baafc09d..ed2e5dc26 100644 --- a/lib/krb5/mk_error.c +++ b/lib/krb5/mk_error.c @@ -81,6 +81,8 @@ krb5_mk_error(krb5_context context, } encode_KRB_ERROR(buf + sizeof(buf) - 1, sizeof(buf), &msg, &reply->length); reply->data = malloc(reply->length); + if (reply->data == NULL) + return ENOMEM; memcpy(reply->data, buf + sizeof(buf) - reply->length, reply->length); return 0; } diff --git a/lib/krb5/mk_rep.c b/lib/krb5/mk_rep.c index 091ed97b8..a74022a0a 100644 --- a/lib/krb5/mk_rep.c +++ b/lib/krb5/mk_rep.c @@ -79,6 +79,8 @@ krb5_mk_rep(krb5_context context, free (ap.enc_part.cipher.data); outbuf->length = len; outbuf->data = malloc(len); + if (outbuf->data == NULL) + return ENOMEM; memcpy(outbuf->data, buf + sizeof(buf) - len, len); return 0; }