BUG/MINOR: tools: fix set_net_port() / set_host_port() on IPv4
These two functions were apparently written on the same model as their
parents when added by commit 11bcb6c4f
("[MEDIUM] IPv6 support for syslog")
except that they perform an assignment instead of a return, and as a
result fall through the next case where the assigned value may possibly
be partially overwritten. At least under Linux the port offset is the
same in both sockaddr_in and sockaddr_in6 so the value is written twice
without side effects.
This needs to be backported as far as 1.5.
This commit is contained in:
parent
5cc8a0a7ac
commit
4c0fcc2314
|
@ -1007,8 +1007,10 @@ static inline int set_net_port(struct sockaddr_storage *addr, int port)
|
|||
switch (addr->ss_family) {
|
||||
case AF_INET:
|
||||
((struct sockaddr_in *)addr)->sin_port = port;
|
||||
break;
|
||||
case AF_INET6:
|
||||
((struct sockaddr_in6 *)addr)->sin6_port = port;
|
||||
break;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
@ -1019,8 +1021,10 @@ static inline int set_host_port(struct sockaddr_storage *addr, int port)
|
|||
switch (addr->ss_family) {
|
||||
case AF_INET:
|
||||
((struct sockaddr_in *)addr)->sin_port = htons(port);
|
||||
break;
|
||||
case AF_INET6:
|
||||
((struct sockaddr_in6 *)addr)->sin6_port = htons(port);
|
||||
break;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue