Unify checks for source sock addr validity

This commit is contained in:
dmiller 2026-07-20 15:48:55 +00:00
parent b3948715c4
commit 4ddbb1de7f
2 changed files with 7 additions and 4 deletions

View file

@ -150,7 +150,7 @@ int NmapOps::pf() {
}
int NmapOps::SourceSockAddr(struct sockaddr_storage *ss, size_t *ss_len) {
if (sourcesocklen <= 0)
if (sourcesocklen <= 0 || sourcesock.ss_family == AF_UNSPEC)
return 1;
assert(sourcesocklen <= sizeof(*ss));
if (ss)
@ -162,7 +162,7 @@ int NmapOps::SourceSockAddr(struct sockaddr_storage *ss, size_t *ss_len) {
/* Returns a const pointer to the source address if set, or NULL if unset. */
const struct sockaddr_storage *NmapOps::SourceSockAddr() const {
if (sourcesock.ss_family == AF_UNSPEC)
if (sourcesocklen <= 0 || sourcesock.ss_family == AF_UNSPEC)
return NULL;
else
return &sourcesock;

View file

@ -262,7 +262,7 @@ const struct in6_addr *Target::v6hostip() const {
/* The source address used to reach the target */
int Target::SourceSockAddr(struct sockaddr_storage *ss, size_t *ss_len) const {
if (sourcesocklen <= 0)
if (sourcesocklen <= 0 || sourcesock.ss_family == AF_UNSPEC)
return 1;
assert(sourcesocklen <= sizeof(*ss));
if (ss)
@ -273,7 +273,10 @@ int Target::SourceSockAddr(struct sockaddr_storage *ss, size_t *ss_len) const {
}
const struct sockaddr_storage *Target::SourceSockAddr() const {
return &sourcesock;
if (sourcesocklen <= 0 || sourcesock.ss_family == AF_UNSPEC)
return NULL;
else
return &sourcesock;
}
/* Note that it is OK to pass in a sockaddr_in or sockaddr_in6 casted