From 7af81533ef1993b4be283e8ec7682fd36f988ce1 Mon Sep 17 00:00:00 2001 From: "Roland C. Dowdeswell" Date: Tue, 22 May 2012 11:07:19 +0100 Subject: [PATCH] Don't clobber errno during error cleanup in krb5_storage_from_fd(). --- lib/krb5/store_fd.c | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/lib/krb5/store_fd.c b/lib/krb5/store_fd.c index 2b72dea3a..a40826568 100644 --- a/lib/krb5/store_fd.c +++ b/lib/krb5/store_fd.c @@ -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;