projects
/
musl
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
fix integer overflow in elf.h macro SHF_EXCLUDE
[musl]
/
src
/
network
/
proto.c
diff --git
a/src/network/proto.c
b/src/network/proto.c
index
c569232
..
43aa17a
100644
(file)
--- a/
src/network/proto.c
+++ b/
src/network/proto.c
@@
-4,17
+4,28
@@
/* do we really need all these?? */
static int idx;
/* do we really need all these?? */
static int idx;
-static const unsigned char protos[][6] = {
- "\000ip",
- "\001icmp",
- "\002igmp",
- "\003ggp",
- "\006tcp",
- "\014pup",
- "\021udp",
- "\026idp",
- "\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)
};
void endprotoent(void)
@@
-31,10
+42,11
@@
struct protoent *getprotoent(void)
{
static struct protoent p;
static const char *aliases;
{
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;
p.p_aliases = (char **)&aliases;
+ idx += strlen(p.p_name) + 2;
return &p;
}
return &p;
}