From a064166bd2dfca37de7b317328781424bcfc200e Mon Sep 17 00:00:00 2001 From: Darshan Sen Date: Sat, 22 May 2021 01:57:22 +0530 Subject: [PATCH] unix,core: fix errno handling in uv__getpwuid_r Fixes: https://github.com/libuv/libuv/issues/3174 PR-URL: https://github.com/libuv/libuv/pull/3177 Reviewed-By: Jameson Nash --- src/unix/core.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/unix/core.c b/src/unix/core.c index 15aa57d9..e0246a2e 100644 --- a/src/unix/core.c +++ b/src/unix/core.c @@ -1184,7 +1184,9 @@ int uv__getpwuid_r(uv_passwd_t* pwd) { if (buf == NULL) return UV_ENOMEM; - r = getpwuid_r(uid, &pw, buf, bufsize, &result); + do + r = getpwuid_r(uid, &pw, buf, bufsize, &result); + while (r == EINTR); if (r != ERANGE) break; @@ -1194,7 +1196,7 @@ int uv__getpwuid_r(uv_passwd_t* pwd) { if (r != 0) { uv__free(buf); - return -r; + return UV__ERR(r); } if (result == NULL) {