]> git.ipfire.org Git - thirdparty/samba.git/commitdiff
s3:net: Pass a talloc context to ads_startup()
authorSamuel Cabrero <scabrero@samba.org>
Thu, 26 May 2022 12:41:24 +0000 (14:41 +0200)
committerJeremy Allison <jra@samba.org>
Mon, 27 Jun 2022 15:50:30 +0000 (15:50 +0000)
The ads struct will be allocated under this context.

Signed-off-by: Samuel Cabrero <scabrero@samba.org>
Reviewed-by: Jeremy Allison <jra@samba.org>
source3/utils/net_ads.c
source3/utils/net_ads_gpo.c
source3/utils/net_proto.h

index d58f107af29647df37e4674edf6a8fcf0a580fc8..e2c0bfc35b046ced484a6ccf23ad5a74858d69ef 100644 (file)
@@ -740,7 +740,10 @@ retry:
        return status;
 }
 
-ADS_STATUS ads_startup(struct net_context *c, bool only_own_domain, ADS_STRUCT **ads)
+ADS_STATUS ads_startup(struct net_context *c,
+                      bool only_own_domain,
+                      TALLOC_CTX *mem_ctx,
+                      ADS_STRUCT **ads)
 {
        return ads_startup_int(c, only_own_domain, 0, ads);
 }
@@ -889,7 +892,7 @@ static int ads_user_add(struct net_context *c, int argc, const char **argv)
                return net_ads_user_usage(c, argc, argv);
        }
 
-       status = ads_startup(c, false, &ads);
+       status = ads_startup(c, false, tmp_ctx, &ads);
        if (!ADS_ERR_OK(status)) {
                goto done;
        }
@@ -997,7 +1000,7 @@ static int ads_user_info(struct net_context *c, int argc, const char **argv)
                goto out;
        }
 
-       status = ads_startup(c, false, &ads);
+       status = ads_startup(c, false, tmp_ctx, &ads);
        if (!ADS_ERR_OK(status)) {
                goto out;
        }
@@ -1078,7 +1081,7 @@ static int ads_user_delete(struct net_context *c, int argc, const char **argv)
                return net_ads_user_usage(c, argc, argv);
        }
 
-       status = ads_startup(c, false, &ads);
+       status = ads_startup(c, false, tmp_ctx, &ads);
        if (!ADS_ERR_OK(status)) {
                goto out;
        }
@@ -1164,7 +1167,7 @@ int net_ads_user(struct net_context *c, int argc, const char **argv)
                return -1;
        }
 
-       status = ads_startup(c, false, &ads);
+       status = ads_startup(c, false, tmp_ctx, &ads);
        if (!ADS_ERR_OK(status)) {
                goto out;
        }
@@ -1211,7 +1214,7 @@ static int ads_group_add(struct net_context *c, int argc, const char **argv)
                return net_ads_group_usage(c, argc, argv);
        }
 
-       status = ads_startup(c, false, &ads);
+       status = ads_startup(c, false, tmp_ctx, &ads);
        if (!ADS_ERR_OK(status)) {
                goto out;
        }
@@ -1265,7 +1268,7 @@ static int ads_group_delete(struct net_context *c, int argc, const char **argv)
                return net_ads_group_usage(c, argc, argv);
        }
 
-       status = ads_startup(c, false, &ads);
+       status = ads_startup(c, false, tmp_ctx, &ads);
        if (!ADS_ERR_OK(status)) {
                goto out;
        }
@@ -1342,7 +1345,7 @@ int net_ads_group(struct net_context *c, int argc, const char **argv)
                return -1;
        }
 
-       status = ads_startup(c, false, &ads);
+       status = ads_startup(c, false, tmp_ctx, &ads);
        if (!ADS_ERR_OK(status)) {
                goto out;
        }
@@ -1388,7 +1391,7 @@ static int net_ads_status(struct net_context *c, int argc, const char **argv)
                return -1;
        }
 
-       status = ads_startup(c, true, &ads);
+       status = ads_startup(c, true, tmp_ctx, &ads);
        if (!ADS_ERR_OK(status)) {
                goto out;
        }
@@ -1535,7 +1538,7 @@ static ADS_STATUS net_ads_join_ok(struct net_context *c)
 
        get_dc_name(lp_workgroup(), lp_realm(), dc_name, &dcip);
 
-       status = ads_startup(c, true, &ads);
+       status = ads_startup(c, true, tmp_ctx, &ads);
        if (!ADS_ERR_OK(status)) {
                goto out;
        }
@@ -1899,7 +1902,7 @@ static int net_ads_dns_register(struct net_context *c, int argc, const char **ar
                }
        }
 
-       status = ads_startup(c, true, &ads);
+       status = ads_startup(c, true, tmp_ctx, &ads);
        if ( !ADS_ERR_OK(status) ) {
                DEBUG(1, ("error on ads_startup: %s\n", ads_errstr(status)));
                goto out;
@@ -1966,7 +1969,7 @@ static int net_ads_dns_unregister(struct net_context *c,
        /* Get the hostname for un-registering */
        hostname = argv[0];
 
-       status = ads_startup(c, true, &ads);
+       status = ads_startup(c, true, tmp_ctx, &ads);
        if ( !ADS_ERR_OK(status) ) {
                DEBUG(1, ("error on ads_startup: %s\n", ads_errstr(status)));
                goto out;
@@ -2150,7 +2153,7 @@ static int net_ads_printer_search(struct net_context *c,
                return -1;
        }
 
-       status = ads_startup(c, false, &ads);
+       status = ads_startup(c, false, tmp_ctx, &ads);
        if (!ADS_ERR_OK(status)) {
                goto out;
        }
@@ -2200,7 +2203,7 @@ static int net_ads_printer_info(struct net_context *c,
                return -1;
        }
 
-       status = ads_startup(c, false, &ads);
+       status = ads_startup(c, false, tmp_ctx, &ads);
        if (!ADS_ERR_OK(status)) {
                goto out;
        }
@@ -2279,7 +2282,7 @@ static int net_ads_printer_publish(struct net_context *c,
                goto out;
        }
 
-       status = ads_startup(c, true, &ads);
+       status = ads_startup(c, true, tmp_ctx, &ads);
        if (!ADS_ERR_OK(status)) {
                goto out;
        }
@@ -2410,7 +2413,7 @@ static int net_ads_printer_remove(struct net_context *c,
                return -1;
        }
 
-       status = ads_startup(c, true, &ads);
+       status = ads_startup(c, true, tmp_ctx, &ads);
        if (!ADS_ERR_OK(status)) {
                goto out;
        }
@@ -2642,7 +2645,7 @@ int net_ads_changetrustpw(struct net_context *c, int argc, const char **argv)
 
        use_in_memory_ccache();
 
-       status = ads_startup(c, true, &ads);
+       status = ads_startup(c, true, tmp_ctx, &ads);
        if (!ADS_ERR_OK(status)) {
                goto out;
        }
@@ -2719,7 +2722,7 @@ static int net_ads_search(struct net_context *c, int argc, const char **argv)
                return net_ads_search_usage(c, argc, argv);
        }
 
-       status = ads_startup(c, false, &ads);
+       status = ads_startup(c, false, tmp_ctx, &ads);
        if (!ADS_ERR_OK(status)) {
                goto out;
        }
@@ -2788,7 +2791,7 @@ static int net_ads_dn(struct net_context *c, int argc, const char **argv)
                return net_ads_dn_usage(c, argc, argv);
        }
 
-       status = ads_startup(c, false, &ads);
+       status = ads_startup(c, false, tmp_ctx, &ads);
        if (!ADS_ERR_OK(status)) {
                goto out;
        }
@@ -2856,7 +2859,7 @@ static int net_ads_sid(struct net_context *c, int argc, const char **argv)
                return net_ads_sid_usage(c, argc, argv);
        }
 
-       status = ads_startup(c, false, &ads);
+       status = ads_startup(c, false, tmp_ctx, &ads);
        if (!ADS_ERR_OK(status)) {
                goto out;
        }
@@ -2911,7 +2914,7 @@ static int net_ads_keytab_flush(struct net_context *c,
                net_use_krb_machine_account(c);
        }
 
-       status = ads_startup(c, true, &ads);
+       status = ads_startup(c, true, tmp_ctx, &ads);
        if (!ADS_ERR_OK(status)) {
                goto out;
        }
@@ -2951,7 +2954,7 @@ static int net_ads_keytab_add(struct net_context *c,
                net_use_krb_machine_account(c);
        }
 
-       status = ads_startup(c, true, &ads);
+       status = ads_startup(c, true, tmp_ctx, &ads);
        if (!ADS_ERR_OK(status)) {
                goto out;
        }
@@ -3000,7 +3003,7 @@ static int net_ads_keytab_create(struct net_context *c, int argc, const char **a
                net_use_krb_machine_account(c);
        }
 
-       status = ads_startup(c, true, &ads);
+       status = ads_startup(c, true, tmp_ctx, &ads);
        if (!ADS_ERR_OK(status)) {
                goto out;
        }
@@ -3396,7 +3399,7 @@ static int net_ads_setspn_list(struct net_context *c,
                return -1;
        }
 
-       status = ads_startup(c, true, &ads);
+       status = ads_startup(c, true, tmp_ctx, &ads);
        if (!ADS_ERR_OK(status)) {
                goto out;
        }
@@ -3430,7 +3433,7 @@ static int net_ads_setspn_add(struct net_context *c, int argc, const char **argv
                return -1;
        }
 
-       status = ads_startup(c, true, &ads);
+       status = ads_startup(c, true, tmp_ctx, &ads);
        if (!ADS_ERR_OK(status)) {
                goto out;
        }
@@ -3464,7 +3467,7 @@ static int net_ads_setspn_delete(struct net_context *c, int argc, const char **a
                return -1;
        }
 
-       status = ads_startup(c, true, &ads);
+       status = ads_startup(c, true, tmp_ctx, &ads);
        if (!ADS_ERR_OK(status)) {
                goto out;
        }
@@ -3612,7 +3615,7 @@ static int net_ads_enctypes_list(struct net_context *c, int argc, const char **a
                return -1;
        }
 
-       status = ads_startup(c, false, &ads);
+       status = ads_startup(c, false, tmp_ctx, &ads);
        if (!ADS_ERR_OK(status)) {
                goto out;
        }
@@ -3655,7 +3658,7 @@ static int net_ads_enctypes_set(struct net_context *c, int argc, const char **ar
                return -1;
        }
 
-       status = ads_startup(c, false, &ads);
+       status = ads_startup(c, false, tmp_ctx, &ads);
        if (!ADS_ERR_OK(status)) {
                goto done;
        }
@@ -3743,7 +3746,7 @@ static int net_ads_enctypes_delete(struct net_context *c, int argc, const char *
                return -1;
        }
 
-       status = ads_startup(c, false, &ads);
+       status = ads_startup(c, false, tmp_ctx, &ads);
        if (!ADS_ERR_OK(status)) {
                goto done;
        }
index 1c6508bc653a01129085efa8fadea4cb0da6d5b7..376d846026caae2828c7c0aea2db56c9a3717ac3 100644 (file)
@@ -62,7 +62,7 @@ static int net_ads_gpo_list_all(struct net_context *c, int argc, const char **ar
                return -1;
        }
 
-       status = ads_startup(c, false, &ads);
+       status = ads_startup(c, false, mem_ctx, &ads);
        if (!ADS_ERR_OK(status)) {
                goto out;
        }
@@ -139,7 +139,7 @@ static int net_ads_gpo_list(struct net_context *c, int argc, const char **argv)
                goto out;
        }
 
-       status = ads_startup(c, false, &ads);
+       status = ads_startup(c, false, mem_ctx, &ads);
        if (!ADS_ERR_OK(status)) {
                goto out;
        }
@@ -204,7 +204,7 @@ static int net_ads_gpo_link_get(struct net_context *c, int argc, const char **ar
                return -1;
        }
 
-       status = ads_startup(c, false, &ads);
+       status = ads_startup(c, false, mem_ctx, &ads);
        if (!ADS_ERR_OK(status)) {
                goto out;
        }
@@ -253,7 +253,7 @@ static int net_ads_gpo_link_add(struct net_context *c, int argc, const char **ar
                gpo_opt = atoi(argv[2]);
        }
 
-       status = ads_startup(c, false, &ads);
+       status = ads_startup(c, false, mem_ctx, &ads);
        if (!ADS_ERR_OK(status)) {
                goto out;
        }
@@ -293,7 +293,7 @@ static int net_ads_gpo_link_delete(struct net_context *c, int argc, const char *
                return -1;
        }
 
-       status = ads_startup(c, false, &ads);
+       status = ads_startup(c, false, mem_ctx, &ads);
        if (!ADS_ERR_OK(status)) {
                goto out;
        }
@@ -346,7 +346,7 @@ static int net_ads_gpo_get_gpo(struct net_context *c, int argc, const char **arg
                return -1;
        }
 
-       status = ads_startup(c, false, &ads);
+       status = ads_startup(c, false, mem_ctx, &ads);
        if (!ADS_ERR_OK(status)) {
                goto out;
        }
index 3e4f1639bbdbfb4da21323afeaf40ccdfd2425e2..1cc8fdf35afe53020080e1fa0d4bc5234bd9f91f 100644 (file)
@@ -33,7 +33,10 @@ enum netr_SchannelType get_sec_channel_type(const char *param);
 
 /* The following definitions come from utils/net_ads.c  */
 struct ads_struct;
-ADS_STATUS ads_startup(struct net_context *c, bool only_own_domain, struct ads_struct **ads);
+ADS_STATUS ads_startup(struct net_context *c,
+                      bool only_own_domain,
+                      TALLOC_CTX *mem_ctx,
+                      struct ads_struct **ads);
 ADS_STATUS ads_startup_nobind(struct net_context *c,
                              bool only_own_domain,
                              TALLOC_CTX *mem_ctx,