diff options
author | Ulrich Drepper <drepper@redhat.com> | 2003-09-04 04:43:56 +0000 |
---|---|---|
committer | Ulrich Drepper <drepper@redhat.com> | 2003-09-04 04:43:56 +0000 |
commit | 35504a6f2d420cb5c80dff987d7e76d5fd0f109b (patch) | |
tree | 0bce0c3637f1eee9a124640795290b2b3341ac29 /nss/getXXbyYY_r.c | |
parent | 9c42bc3b9ed33179fadc2f37bb4274ddb84bf503 (diff) | |
download | glibc-35504a6f2d420cb5c80dff987d7e76d5fd0f109b.tar.gz glibc-35504a6f2d420cb5c80dff987d7e76d5fd0f109b.tar.xz glibc-35504a6f2d420cb5c80dff987d7e76d5fd0f109b.zip |
Update.
2003-09-03 Ulrich Drepper <drepper@redhat.com> * nss/getXXbyYY_r.c (INTERNAL): Explicitly set errno and avoid returning ERANGE if this wasn't intended.
Diffstat (limited to 'nss/getXXbyYY_r.c')
-rw-r--r-- | nss/getXXbyYY_r.c | 21 |
1 files changed, 16 insertions, 5 deletions
diff --git a/nss/getXXbyYY_r.c b/nss/getXXbyYY_r.c index aca6a94a35..a0e0e003b7 100644 --- a/nss/getXXbyYY_r.c +++ b/nss/getXXbyYY_r.c @@ -247,13 +247,24 @@ done: #ifdef POSTPROCESS POSTPROCESS; #endif - return (status == NSS_STATUS_SUCCESS ? 0 + + int result; + if (status == NSS_STATUS_SUCCESS) + result = 0; + /* Don't pass back ERANGE if this is not for a too-small buffer. */ + else if (errno == ERANGE && status != NSS_STATUS_TRYAGAIN) + { #ifdef NEED_H_ERRNO - /* These functions only set errno if h_errno is NETDB_INTERNAL. */ - : status == NSS_STATUS_TRYAGAIN && *h_errnop != NETDB_INTERNAL - ? EAGAIN + /* These functions only set errno if h_errno is NETDB_INTERNAL. */ + if (*h_errnop != NETDB_INTERNAL) #endif - : errno); + result = ENOENT; + } + else + return errno; + + __set_errno (result); + return result; } |