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; } /**