handle error code from size_too_large more correct
This commit is contained in:
@@ -792,12 +792,15 @@ krb5_ret_stringz(krb5_storage *sp,
|
|||||||
ssize_t ret;
|
ssize_t ret;
|
||||||
|
|
||||||
while((ret = sp->fetch(sp, &c, 1)) == 1){
|
while((ret = sp->fetch(sp, &c, 1)) == 1){
|
||||||
|
krb5_error_code eret;
|
||||||
char *tmp;
|
char *tmp;
|
||||||
|
|
||||||
len++;
|
len++;
|
||||||
ret = size_too_large(sp, len);
|
eret = size_too_large(sp, len);
|
||||||
if (ret)
|
if (eret) {
|
||||||
break;
|
free(s);
|
||||||
|
return eret;
|
||||||
|
}
|
||||||
tmp = realloc (s, len);
|
tmp = realloc (s, len);
|
||||||
if (tmp == NULL) {
|
if (tmp == NULL) {
|
||||||
free (s);
|
free (s);
|
||||||
@@ -852,6 +855,7 @@ krb5_ret_stringnl(krb5_storage *sp,
|
|||||||
ssize_t ret;
|
ssize_t ret;
|
||||||
|
|
||||||
while((ret = sp->fetch(sp, &c, 1)) == 1){
|
while((ret = sp->fetch(sp, &c, 1)) == 1){
|
||||||
|
krb5_error_code eret;
|
||||||
char *tmp;
|
char *tmp;
|
||||||
|
|
||||||
if (c == '\r') {
|
if (c == '\r') {
|
||||||
@@ -864,9 +868,11 @@ krb5_ret_stringnl(krb5_storage *sp,
|
|||||||
}
|
}
|
||||||
|
|
||||||
len++;
|
len++;
|
||||||
ret = size_too_large(sp, len);
|
eret = size_too_large(sp, len);
|
||||||
if (ret)
|
if (eret) {
|
||||||
break;
|
free(s);
|
||||||
|
return eret;
|
||||||
|
}
|
||||||
tmp = realloc (s, len);
|
tmp = realloc (s, len);
|
||||||
if (tmp == NULL) {
|
if (tmp == NULL) {
|
||||||
free (s);
|
free (s);
|
||||||
|
Reference in New Issue
Block a user