]> git.ipfire.org Git - thirdparty/samba.git/commitdiff
s3: libsmb: Make resolve_ads() return a size_t * address count.
authorJeremy Allison <jra@samba.org>
Tue, 8 Sep 2020 22:24:26 +0000 (15:24 -0700)
committerNoel Power <npower@samba.org>
Tue, 15 Sep 2020 10:09:37 +0000 (10:09 +0000)
All resolve_XXXX() functions inside internal_resolve_name()
now use size_t and we can clean this up.

Signed-off-by: Jeremy Allison <jra@samba.org>
Signed-off-by: Noel Power<npower@samba.org>
source3/libsmb/namequery.c

index 7fda3ab75fbc84507356efdec0f37d292b64bc70..0c80acd87d326de6b1444a19df3b80be43ac2a09 100644 (file)
@@ -2943,13 +2943,13 @@ static NTSTATUS resolve_ads(TALLOC_CTX *ctx,
                            int name_type,
                            const char *sitename,
                            struct sockaddr_storage **return_addrs,
-                           int *return_count)
+                           size_t *return_count)
 {
        int                     i;
        NTSTATUS                status;
        struct dns_rr_srv       *dcs = NULL;
        int                     numdcs = 0;
-       int                     numaddrs = 0;
+       size_t                  numaddrs = 0;
        size_t num_srv_addrs = 0;
        struct sockaddr_storage *srv_addrs = NULL;
        size_t num_dns_addrs = 0;
@@ -3143,9 +3143,8 @@ static NTSTATUS resolve_ads(TALLOC_CTX *ctx,
          */
 
        numaddrs = num_srv_addrs + num_dns_addrs;
-       /* Wrap check + bloody int conversion check :-(. */
-       if (numaddrs < num_srv_addrs ||
-                               numaddrs < 0) {
+       /* Wrap check */
+       if (numaddrs < num_srv_addrs) {
                TALLOC_FREE(dcs);
                TALLOC_FREE(srv_addrs);
                TALLOC_FREE(dns_addrs);
@@ -3392,31 +3391,45 @@ NTSTATUS internal_resolve_name(TALLOC_CTX *ctx,
                } else if(strequal( tok, "kdc")) {
                        /* deal with KDC_NAME_TYPE names here.
                         * This will result in a SRV record lookup */
+                       size_t acount = 0;
                        status = resolve_ads(talloc_tos(),
                                             name,
                                             KDC_NAME_TYPE,
                                             sitename,
                                             &ss_list,
-                                            &icount);
+                                            &acount);
                        if (!NT_STATUS_IS_OK(status)) {
                                continue;
                        }
                        /* Ensure we don't namecache
                         * this with the KDC port. */
                        name_type = KDC_NAME_TYPE;
+                       /*
+                        * This uglyness will go away once
+                        * all resolve_XXX() return size_t *
+                        * number of addresses.
+                        */
+                       icount = (int)acount;
                        goto done;
                } else if(strequal( tok, "ads")) {
                        /* deal with 0x1c and 0x1b names here.
                         * This will result in a SRV record lookup */
+                       size_t acount = 0;
                        status = resolve_ads(talloc_tos(),
                                             name,
                                             name_type,
                                             sitename,
                                             &ss_list,
-                                            &icount);
+                                            &acount);
                        if (!NT_STATUS_IS_OK(status)) {
                                continue;
                        }
+                       /*
+                        * This uglyness will go away once
+                        * all resolve_XXX() return size_t *
+                        * number of addresses.
+                        */
+                       icount = (int)acount;
                        goto done;
                } else if (strequal(tok, "lmhosts")) {
                        size_t lmcount = 0;