This fixes issue introduced by 72e1a1ce186c39f07282398e2af9eb0253e60f15 This should also fix the following testcase to exit with error rather than cause an endless loop.
int main(void) { if (getservbyname("non-existing", "udp") == NULL) err(1, "getservbyname"); return 0; } Reported by Pirmin Walthert http://lists.uclibc.org/pipermail/uclibc/2010-August/044277.html Signed-off-by: Natanael Copa <natanael.c...@gmail.com> --- libc/inet/getservice.c | 5 ++--- 1 files changed, 2 insertions(+), 3 deletions(-) diff --git a/libc/inet/getservice.c b/libc/inet/getservice.c index 1532df9..ccf9816 100644 --- a/libc/inet/getservice.c +++ b/libc/inet/getservice.c @@ -69,7 +69,7 @@ int getservent_r(struct servent *result_buf, char **serv_aliases; char **tok = NULL; const size_t aliaslen = sizeof(*serv_aliases) * MAXALIASES; - int ret = ENOENT; + int ret = ERANGE; *result = NULL; if (buflen < aliaslen @@ -77,7 +77,7 @@ int getservent_r(struct servent *result_buf, goto DONE_NOUNLOCK; __UCLIBC_MUTEX_LOCK(mylock); - + ret = ENOENT; if (servp == NULL) setservent(serv_stayopen); if (servp == NULL) @@ -88,7 +88,6 @@ int getservent_r(struct servent *result_buf, servp->line_len = buflen - aliaslen; /* <name>[[:space:]]<port>/<proto>[[:space:]][<aliases>] */ if (!config_read(servp, &tok, MAXALIASES, 3, "# \t/", PARSE_NORMAL)) { - ret = ERANGE; goto DONE; } result_buf->s_name = *(tok++); -- 1.7.2.3 _______________________________________________ uClibc mailing list uClibc@uclibc.org http://lists.busybox.net/mailman/listinfo/uclibc