diff --git a/include/asterisk/netsock2.h b/include/asterisk/netsock2.h index a225346b7a..b14c1af970 100644 --- a/include/asterisk/netsock2.h +++ b/include/asterisk/netsock2.h @@ -343,7 +343,8 @@ int ast_sockaddr_split_hostport(char *str, char **host, char **port, int flags); * * Host names are NOT allowed. * - * \param[out] addr The resulting ast_sockaddr + * \param[out] addr The resulting ast_sockaddr. This MAY be NULL from + * functions that are performing validity checks only, e.g. ast_parse_arg(). * \param str The string to parse * \param flags If set to zero, a port MAY be present. If set to * PARSE_PORT_IGNORE, a port MAY be present but will be ignored. If set to diff --git a/main/netsock2.c b/main/netsock2.c index 59ae44175b..aa5e17d9e7 100644 --- a/main/netsock2.c +++ b/main/netsock2.c @@ -235,8 +235,10 @@ int ast_sockaddr_parse(struct ast_sockaddr *addr, const char *str, int flags) "addresses. Ignoring all but the first.\n"); } - addr->len = res->ai_addrlen; - memcpy(&addr->ss, res->ai_addr, addr->len); + if (addr) { + addr->len = res->ai_addrlen; + memcpy(&addr->ss, res->ai_addr, addr->len); + } freeaddrinfo(res);