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.org
This commit is contained in:
Peter Maydell 2021-08-13 16:05:03 +01:00
parent 8efdb7ba1b
commit 5929238462

View File

@ -75,6 +75,8 @@ int parse_host_port(struct sockaddr_in *saddr, const char *str,
const char *addr, *p, *r;
int port, ret = 0;
memset(saddr, 0, sizeof(*saddr));
substrings = g_strsplit(str, ":", 2);
if (!substrings || !substrings[0] || !substrings[1]) {
error_setg(errp, "host address '%s' doesn't contain ':' "