From 2daeea4febe322ba134fff2c12c6ba54bd993d6f Mon Sep 17 00:00:00 2001 From: Love Hornquist Astrand Date: Thu, 22 Sep 2011 16:36:52 +0200 Subject: [PATCH] handle error code from size_too_large more correct --- lib/krb5/store.c | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/lib/krb5/store.c b/lib/krb5/store.c index 3aeb8d628..1f6622e23 100644 --- a/lib/krb5/store.c +++ b/lib/krb5/store.c @@ -792,12 +792,15 @@ krb5_ret_stringz(krb5_storage *sp, ssize_t ret; while((ret = sp->fetch(sp, &c, 1)) == 1){ + krb5_error_code eret; char *tmp; len++; - ret = size_too_large(sp, len); - if (ret) - break; + eret = size_too_large(sp, len); + if (eret) { + free(s); + return eret; + } tmp = realloc (s, len); if (tmp == NULL) { free (s); @@ -852,6 +855,7 @@ krb5_ret_stringnl(krb5_storage *sp, ssize_t ret; while((ret = sp->fetch(sp, &c, 1)) == 1){ + krb5_error_code eret; char *tmp; if (c == '\r') { @@ -864,9 +868,11 @@ krb5_ret_stringnl(krb5_storage *sp, } len++; - ret = size_too_large(sp, len); - if (ret) - break; + eret = size_too_large(sp, len); + if (eret) { + free(s); + return eret; + } tmp = realloc (s, len); if (tmp == NULL) { free (s);