summaryrefslogtreecommitdiff
path: root/source3
diff options
context:
space:
mode:
authorJeremy Allison <jra@samba.org>2020-08-26 12:41:27 -0700
committerAndreas Schneider <asn@cryptomilk.org>2020-08-27 08:16:37 +0000
commitf8b7ee024ba6ecabe75180047222335b6a970dda (patch)
treebdf2dbead6d18c62c44c2d69d0bc0e6c4de07b94 /source3
parent42d01987d3d5e90360e0ad63da08cf0994983f68 (diff)
downloadsamba-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.c26
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;
}
}