X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=src%2Fnetwork%2Fproto.c;h=43aa17a42ac38e77bc238db5c79873b4c39b5d88;hb=6fef8cafbd0f6f185897bc87feb1ff66e2e204e1;hp=3d0f584fbf695f2b5ac385d44021281d21b58f0e;hpb=3e02ce1b411306fb3cbf0194662bec667fed1008;p=musl diff --git a/src/network/proto.c b/src/network/proto.c index 3d0f584f..43aa17a4 100644 --- a/src/network/proto.c +++ b/src/network/proto.c @@ -4,19 +4,28 @@ /* do we really need all these?? */ static int idx; -static const unsigned char protos[][8] = { - "\000ip", - "\001icmp", - "\002igmp", - "\003ggp", - "\006tcp", - "\014pup", - "\021udp", - "\026idp", - "\051ipv6", - "\072icmpv6", - "\377raw", - "\0\0" +static const unsigned char protos[] = { + "\000ip\0" + "\001icmp\0" + "\002igmp\0" + "\003ggp\0" + "\006tcp\0" + "\014pup\0" + "\021udp\0" + "\026idp\0" + "\051ipv6\0" + "\053ipv6-route\0" + "\054ipv6-frag\0" + "\057gre\0" + "\062esp\0" + "\063ah\0" + "\072ipv6-icmp\0" + "\073ipv6-nonxt\0" + "\074ipv6-opts\0" + "\131ospf\0" + "\136ipip\0" + "\147pim\0" + "\377raw" }; void endprotoent(void) @@ -33,10 +42,11 @@ struct protoent *getprotoent(void) { static struct protoent p; static const char *aliases; - if (!protos[idx][1]) return NULL; - p.p_proto = protos[idx][0]; - p.p_name = (char *)protos[idx++]+1; + if (idx >= sizeof protos) return NULL; + p.p_proto = protos[idx]; + p.p_name = (char *)&protos[idx+1]; p.p_aliases = (char **)&aliases; + idx += strlen(p.p_name) + 2; return &p; }