free on error cid#68
git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@24099 ec53bebd-3082-4978-b11e-865c3cabbd6b
This commit is contained in:
@@ -109,8 +109,10 @@ _krb5_n_fold(const void *str, size_t len, void *key, size_t size)
|
|||||||
unsigned char *tmp = malloc(maxlen);
|
unsigned char *tmp = malloc(maxlen);
|
||||||
unsigned char *buf = malloc(len);
|
unsigned char *buf = malloc(len);
|
||||||
|
|
||||||
if (tmp == NULL || buf == NULL)
|
if (tmp == NULL || buf == NULL) {
|
||||||
return ENOMEM;
|
ret = ENOMEM;
|
||||||
|
goto out;
|
||||||
|
}
|
||||||
|
|
||||||
memcpy(buf, str, len);
|
memcpy(buf, str, len);
|
||||||
memset(key, 0, size);
|
memset(key, 0, size);
|
||||||
@@ -129,9 +131,13 @@ _krb5_n_fold(const void *str, size_t len, void *key, size_t size)
|
|||||||
}
|
}
|
||||||
} while(l != 0);
|
} while(l != 0);
|
||||||
out:
|
out:
|
||||||
memset(buf, 0, len);
|
if (buf) {
|
||||||
free(buf);
|
memset(buf, 0, len);
|
||||||
memset(tmp, 0, maxlen);
|
free(buf);
|
||||||
free(tmp);
|
}
|
||||||
|
if (tmp) {
|
||||||
|
memset(tmp, 0, maxlen);
|
||||||
|
free(tmp);
|
||||||
|
}
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user