net: Zero sockaddr_in in parse_host_port()
We don't currently zero-initialize the 'struct sockaddr_in' that parse_host_port() fills in, so any fields we don't explicitly initialize might be left as random garbage. POSIX states that implementations may define extensions in sockaddr_in, and that those extensions must not trigger if zero-initialized. So not zero initializing might result in inadvertently triggering an impdef extension. memset() the sockaddr_in before we start to fill it in. Fixes: Coverity CID 1005338 Signed-off-by: Peter Maydell <peter.maydell@linaro.org> Reviewed-by: Eric Blake <eblake@redhat.com> Message-id: 20210813150506.7768-2-peter.maydell@linaro.orgstaging
parent
8efdb7ba1b
commit
5929238462
|
@ -75,6 +75,8 @@ int parse_host_port(struct sockaddr_in *saddr, const char *str,
|
||||||
const char *addr, *p, *r;
|
const char *addr, *p, *r;
|
||||||
int port, ret = 0;
|
int port, ret = 0;
|
||||||
|
|
||||||
|
memset(saddr, 0, sizeof(*saddr));
|
||||||
|
|
||||||
substrings = g_strsplit(str, ":", 2);
|
substrings = g_strsplit(str, ":", 2);
|
||||||
if (!substrings || !substrings[0] || !substrings[1]) {
|
if (!substrings || !substrings[0] || !substrings[1]) {
|
||||||
error_setg(errp, "host address '%s' doesn't contain ':' "
|
error_setg(errp, "host address '%s' doesn't contain ':' "
|
||||||
|
|
Loading…
Reference in New Issue