summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--source3/passdb/account_pol.c13
-rw-r--r--source3/passdb/proto.h2
-rw-r--r--source3/utils/net_sam.c13
-rw-r--r--source3/utils/pdbedit.c4
4 files changed, 16 insertions, 16 deletions
diff --git a/source3/passdb/account_pol.c b/source3/passdb/account_pol.c
index 3556869bd8..a491c27a9d 100644
--- a/source3/passdb/account_pol.c
+++ b/source3/passdb/account_pol.c
@@ -89,22 +89,21 @@ static const struct ap_table account_policy_names[] = {
{0, NULL, 0, "", NULL}
};
-void account_policy_names_list(const char ***names, int *num_names)
+void account_policy_names_list(TALLOC_CTX *mem_ctx, const char ***names, int *num_names)
{
const char **nl;
- int i, count;
+ int i, count = ARRAY_SIZE(account_policy_names);
- for (count=0; account_policy_names[count].string; count++) {
- }
- nl = SMB_MALLOC_ARRAY(const char *, count);
+ nl = talloc_array(mem_ctx, const char *, count);
if (!nl) {
*num_names = 0;
return;
}
- for (i=0; account_policy_names[i].string; i++) {
+ for (i=0; i<count; i++) {
nl[i] = account_policy_names[i].string;
}
- *num_names = count;
+ /* Do not return the last null entry */
+ *num_names = count-1;
*names = nl;
return;
}
diff --git a/source3/passdb/proto.h b/source3/passdb/proto.h
index 24a7cba891..63208ea9c1 100644
--- a/source3/passdb/proto.h
+++ b/source3/passdb/proto.h
@@ -39,7 +39,7 @@
/* The following definitions come from passdb/account_pol.c */
-void account_policy_names_list(const char ***names, int *num_names);
+void account_policy_names_list(TALLOC_CTX *mem_ctx, const char ***names, int *num_names);
const char *decode_account_policy_name(enum pdb_policy_type type);
const char *get_account_policy_attr(enum pdb_policy_type type);
const char *account_policy_get_desc(enum pdb_policy_type type);
diff --git a/source3/utils/net_sam.c b/source3/utils/net_sam.c
index 4754fb0f34..467e441f60 100644
--- a/source3/utils/net_sam.c
+++ b/source3/utils/net_sam.c
@@ -499,7 +499,7 @@ static int net_sam_policy_set(struct net_context *c, int argc, const char **argv
const char **names;
int i, count;
- account_policy_names_list(&names, &count);
+ account_policy_names_list(talloc_tos(), &names, &count);
d_fprintf(stderr, _("No account policy \"%s\"!\n\n"), argv[0]);
d_fprintf(stderr, _("Valid account policies are:\n"));
@@ -507,7 +507,8 @@ static int net_sam_policy_set(struct net_context *c, int argc, const char **argv
d_fprintf(stderr, "%s\n", names[i]);
}
- SAFE_FREE(names);
+ TALLOC_FREE(names);
+
return -1;
}
@@ -551,7 +552,7 @@ static int net_sam_policy_show(struct net_context *c, int argc, const char **arg
const char **names;
int count;
int i;
- account_policy_names_list(&names, &count);
+ account_policy_names_list(talloc_tos(), &names, &count);
d_fprintf(stderr, _("No account policy by that name!\n"));
if (count != 0) {
d_fprintf(stderr, _("Valid account policies "
@@ -560,7 +561,7 @@ static int net_sam_policy_show(struct net_context *c, int argc, const char **arg
d_fprintf(stderr, "%s\n", names[i]);
}
}
- SAFE_FREE(names);
+ TALLOC_FREE(names);
return -1;
}
@@ -592,7 +593,7 @@ static int net_sam_policy_list(struct net_context *c, int argc, const char **arg
return 0;
}
- account_policy_names_list(&names, &count);
+ account_policy_names_list(talloc_tos(), &names, &count);
if (count != 0) {
d_fprintf(stderr, _("Valid account policies "
"are:\n"));
@@ -600,7 +601,7 @@ static int net_sam_policy_list(struct net_context *c, int argc, const char **arg
d_fprintf(stderr, "%s\n", names[i]);
}
}
- SAFE_FREE(names);
+ TALLOC_FREE(names);
return -1;
}
diff --git a/source3/utils/pdbedit.c b/source3/utils/pdbedit.c
index 123db0f870..cec65a9db7 100644
--- a/source3/utils/pdbedit.c
+++ b/source3/utils/pdbedit.c
@@ -1142,7 +1142,7 @@ int main (int argc, char **argv)
const char **names;
int count;
int i;
- account_policy_names_list(&names, &count);
+ account_policy_names_list(talloc_tos(), &names, &count);
fprintf(stderr, "No account policy by that name!\n");
if (count !=0) {
fprintf(stderr, "Account policy names are:\n");
@@ -1150,7 +1150,7 @@ int main (int argc, char **argv)
d_fprintf(stderr, "%s\n", names[i]);
}
}
- SAFE_FREE(names);
+ TALLOC_FREE(names);
exit(1);
}
if (!pdb_get_account_policy(field, &value)) {