summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRich Felker <dalias@aerifal.cx>2014-09-05 13:52:20 -0400
committerRich Felker <dalias@aerifal.cx>2014-09-05 13:52:20 -0400
commit633183b5d1c298e4335da841926efe96252057b3 (patch)
tree06e24aa9b6b09b54c73db2741204678d4c8317ef
parent4ec2d25a6aba30781640b84160002ed3e7fee051 (diff)
downloadmusl-633183b5d1c298e4335da841926efe96252057b3.tar.gz
musl-633183b5d1c298e4335da841926efe96252057b3.tar.bz2
musl-633183b5d1c298e4335da841926efe96252057b3.tar.xz
musl-633183b5d1c298e4335da841926efe96252057b3.zip
fix potential read past end of buffer in getnameinfo service name lookup
if the loop stopped due to reaching the end of the string, the subsequent increment could possibly move the position one past the end of the buffer. no further writes happen, the reads cannot fault anyway unless the stack completely lacks any zero bytes, and reading junk should not yield an incorrect result from the function either. nonetheless the code was wrong and needs to be fixed.
-rw-r--r--src/network/getnameinfo.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/src/network/getnameinfo.c b/src/network/getnameinfo.c
index 2ba66e33..3484fc69 100644
--- a/src/network/getnameinfo.c
+++ b/src/network/getnameinfo.c
@@ -96,7 +96,7 @@ static void reverse_services(char *buf, int port, int dgram)
if ((p=strchr(line, '#'))) *p++='\n', *p=0;
for (p=line; *p && !isspace(*p); p++);
- if (!p) continue;
+ if (!*p) continue;
*p++ = 0;
svport = strtoul(p, &z, 10);