Don't clobber errno during error cleanup in krb5_storage_from_fd().

This commit is contained in:
Roland C. Dowdeswell
2012-05-22 11:07:19 +01:00
parent 2656659fc2
commit 7af81533ef

View File

@@ -89,6 +89,7 @@ KRB5_LIB_FUNCTION krb5_storage * KRB5_LIB_CALL
krb5_storage_from_fd(krb5_socket_t fd_in)
{
krb5_storage *sp;
int saved_errno;
int fd;
#ifdef SOCKET_IS_NOT_AN_FD
@@ -108,16 +109,22 @@ krb5_storage_from_fd(krb5_socket_t fd_in)
if (fd < 0)
return NULL;
errno = ENOMEM;
sp = malloc(sizeof(krb5_storage));
if (sp == NULL) {
saved_errno = errno;
close(fd);
errno = saved_errno;
return NULL;
}
errno = ENOMEM;
sp->data = malloc(sizeof(fd_storage));
if (sp->data == NULL) {
saved_errno = errno;
close(fd);
free(sp);
errno = saved_errno;
return NULL;
}
sp->flags = 0;