]> git.ipfire.org Git - thirdparty/samba.git/commitdiff
s3:libads: Return ADS_STATUS from ads_build_dn()
authorSamuel Cabrero <scabrero@samba.org>
Wed, 15 Jun 2022 08:50:22 +0000 (10:50 +0200)
committerJeremy Allison <jra@samba.org>
Mon, 27 Jun 2022 15:50:30 +0000 (15:50 +0000)
Signed-off-by: Samuel Cabrero <scabrero@samba.org>
Reviewed-by: Jeremy Allison <jra@samba.org>
source3/libads/ads_proto.h
source3/libads/ads_struct.c
source3/libads/ldap.c

index 7ed363462d457d083b5f1030d4cfd28e7f8cb3fa..9e65faa466894f4e6dfe6713008ed72a2653cc41 100644 (file)
@@ -45,7 +45,7 @@ ADS_STATUS ads_build_path(const char *realm,
                          const char *field,
                          int reverse,
                          char **_path);
-char *ads_build_dn(const char *realm);
+ADS_STATUS ads_build_dn(const char *realm, char **_dn);
 char *ads_build_domain(const char *dn);
 ADS_STRUCT *ads_init(TALLOC_CTX *mem_ctx,
                     const char *realm,
index fdd80b3934a72049391505f182c2659746f6cc14..a1954bd37db6f465c9d9d8fe6246158fc986ce13 100644 (file)
@@ -100,17 +100,19 @@ ADS_STATUS ads_build_path(const char *realm,
    realm of the form AA.BB.CC 
    caller must free
 */
-char *ads_build_dn(const char *realm)
+ADS_STATUS ads_build_dn(const char *realm, char **_dn)
 {
        ADS_STATUS status;
        char *dn = NULL;
 
        status = ads_build_path(realm, ".", "dc=", 0, &dn);
        if (!ADS_ERR_OK(status)) {
-               return NULL;
+               return status;
        }
 
-       return dn;
+       *_dn = dn;
+
+       return ADS_ERROR_NT(NT_STATUS_OK);
 }
 
 /* return a DNS name in the for aa.bb.cc from the DN  
index 3e859ed9039a70d1173b50ff172793bef1df9d15..4fc0ab9b8c2abf4293dd7223970b61ad75abd193 100755 (executable)
@@ -261,6 +261,7 @@ static bool ads_try_connect(ADS_STRUCT *ads, bool gc,
        TALLOC_CTX *frame = talloc_stackframe();
        bool ret = false;
        char addr[INET6_ADDRSTRLEN];
+       ADS_STATUS status;
 
        if (ss == NULL) {
                TALLOC_FREE(frame);
@@ -314,7 +315,14 @@ static bool ads_try_connect(ADS_STRUCT *ads, bool gc,
                goto out;
        }
 
-       ads->config.bind_path          = ads_build_dn(ads->config.realm);
+       status = ads_build_dn(ads->config.realm, &ads->config.bind_path);
+       if (!ADS_ERR_OK(status)) {
+               DBG_DEBUG("Failed to build bind path: %s\n",
+                         ads_errstr(status));
+               ret = false;
+               goto out;
+       }
+
        if (*cldap_reply.server_site) {
                ads->config.server_site_name =
                        SMB_STRDUP(cldap_reply.server_site);