From abafa0a0a0f95054e92b7f8602a8cae7ea8e3b6c Mon Sep 17 00:00:00 2001 From: Nicolas Williams Date: Tue, 26 Jan 2016 18:56:06 -0600 Subject: [PATCH] krb5_storage_free(): preserve errno --- lib/krb5/store_fd.c | 4 +++- lib/krb5/store_sock.c | 6 +++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/lib/krb5/store_fd.c b/lib/krb5/store_fd.c index 4f7466eeb..ead18be67 100644 --- a/lib/krb5/store_fd.c +++ b/lib/krb5/store_fd.c @@ -111,7 +111,9 @@ fd_sync(krb5_storage * sp) static void fd_free(krb5_storage * sp) { - close(FD(sp)); + int save_errno = errno; + if (close(FD(sp)) == 0) + errno = save_errno; } /** diff --git a/lib/krb5/store_sock.c b/lib/krb5/store_sock.c index 56bb57a77..f7dc2256d 100644 --- a/lib/krb5/store_sock.c +++ b/lib/krb5/store_sock.c @@ -81,7 +81,11 @@ socket_sync(krb5_storage * sp) static void socket_free(krb5_storage * sp) { - rk_closesocket(SOCK(sp)); + int save_errno = errno; + if (rk_IS_SOCKET_ERROR(rk_closesocket(SOCK(sp)))) + errno = rk_SOCK_ERRNO; + else + errno = save_errno; } /**