diff options
author | Jeremy Allison <jra@samba.org> | 2020-08-26 12:41:27 -0700 |
---|---|---|
committer | Andreas Schneider <asn@cryptomilk.org> | 2020-08-27 08:16:37 +0000 |
commit | f8b7ee024ba6ecabe75180047222335b6a970dda (patch) | |
tree | bdf2dbead6d18c62c44c2d69d0bc0e6c4de07b94 /source3 | |
parent | 42d01987d3d5e90360e0ad63da08cf0994983f68 (diff) | |
download | samba-f8b7ee024ba6ecabe75180047222335b6a970dda.tar.gz |
s3: libsmb: Remove one more ugly sockaddr cast in resolve_name_list() by converting to samba_sockaddr.
Signed-off-by: Jeremy Allison <jra@samba.org>
Reviewed-by: Andreas Schneider <asn@samba.org>
Autobuild-User(master): Andreas Schneider <asn@cryptomilk.org>
Autobuild-Date(master): Thu Aug 27 08:16:37 UTC 2020 on sn-devel-184
Diffstat (limited to 'source3')
-rw-r--r-- | source3/libsmb/namequery.c | 26 |
1 files changed, 22 insertions, 4 deletions
diff --git a/source3/libsmb/namequery.c b/source3/libsmb/namequery.c index 57f2222b904..57ef58ec12e 100644 --- a/source3/libsmb/namequery.c +++ b/source3/libsmb/namequery.c @@ -3521,8 +3521,17 @@ NTSTATUS resolve_name_list(TALLOC_CTX *ctx, /* only return valid addresses for TCP connections */ for (i=0, num_entries = 0; i<count; i++) { - if (!is_zero_addr(&ss_list[i].ss) && - !is_broadcast_addr((struct sockaddr *)(void *)&ss_list[i].ss)) { + struct samba_sockaddr sa = {0}; + bool ok; + + ok = sockaddr_storage_to_samba_sockaddr(&sa, + &ss_list[i].ss); + if (!ok) { + status = NT_STATUS_INVALID_ADDRESS; + goto done; + } + if (!is_zero_addr(&sa.u.ss) && + !is_broadcast_addr(&sa.u.sa)) { num_entries++; } } @@ -3540,8 +3549,17 @@ NTSTATUS resolve_name_list(TALLOC_CTX *ctx, } for (i=0, num_entries = 0; i<count; i++) { - if (!is_zero_addr(&ss_list[i].ss) && - !is_broadcast_addr((struct sockaddr *)(void *)&ss_list[i].ss)) { + struct samba_sockaddr sa = {0}; + bool ok; + + ok = sockaddr_storage_to_samba_sockaddr(&sa, + &ss_list[i].ss); + if (!ok) { + status = NT_STATUS_INVALID_ADDRESS; + goto done; + } + if (!is_zero_addr(&sa.u.ss) && + !is_broadcast_addr(&sa.u.sa)) { (*return_ss_arr)[num_entries++] = ss_list[i].ss; } } |