diff options
author | 2018-11-03 09:13:24 +0000 | |
---|---|---|
committer | 2018-11-03 09:13:24 +0000 | |
commit | 172d89a7c9bfd1a002b8b73eecc3d14704949255 (patch) | |
tree | beb02ad5f8862b5f35b5d5609333d0b703ef9263 /lib/libc | |
parent | remove log_debug (diff) | |
download | wireguard-openbsd-172d89a7c9bfd1a002b8b73eecc3d14704949255.tar.xz wireguard-openbsd-172d89a7c9bfd1a002b8b73eecc3d14704949255.zip |
For correctness, do not read struct servent if getservbyname_r() failed.
Also simplify code.
Diffstat (limited to 'lib/libc')
-rw-r--r-- | lib/libc/asr/getaddrinfo_async.c | 12 |
1 files changed, 5 insertions, 7 deletions
diff --git a/lib/libc/asr/getaddrinfo_async.c b/lib/libc/asr/getaddrinfo_async.c index 057890f56c6..9bfc0d6c7cd 100644 --- a/lib/libc/asr/getaddrinfo_async.c +++ b/lib/libc/asr/getaddrinfo_async.c @@ -1,4 +1,4 @@ -/* $OpenBSD: getaddrinfo_async.c,v 1.55 2018/10/22 17:31:24 krw Exp $ */ +/* $OpenBSD: getaddrinfo_async.c,v 1.56 2018/11/03 09:13:24 eric Exp $ */ /* * Copyright (c) 2012 Eric Faurot <eric@openbsd.org> * @@ -467,7 +467,7 @@ get_port(const char *servname, const char *proto, int numonly) { struct servent se; struct servent_data sed; - int port, r; + int port; const char *e; if (servname == NULL) @@ -482,14 +482,12 @@ get_port(const char *servname, const char *proto, int numonly) if (numonly) return (-2); + port = -1; memset(&sed, 0, sizeof(sed)); - r = getservbyname_r(servname, proto, &se, &sed); - port = ntohs(se.s_port); + if (getservbyname_r(servname, proto, &se, &sed) != -1) + port = ntohs(se.s_port); endservent_r(&sed); - if (r == -1) - return (-1); /* not found */ - return (port); } |