summaryrefslogtreecommitdiff
path: root/source3/libgpo/gpo_ldap.c
diff options
context:
space:
mode:
Diffstat (limited to 'source3/libgpo/gpo_ldap.c')
-rw-r--r--source3/libgpo/gpo_ldap.c28
1 files changed, 20 insertions, 8 deletions
diff --git a/source3/libgpo/gpo_ldap.c b/source3/libgpo/gpo_ldap.c
index 13ec80f2ad..6c1079832d 100644
--- a/source3/libgpo/gpo_ldap.c
+++ b/source3/libgpo/gpo_ldap.c
@@ -47,12 +47,17 @@ ADS_STATUS ads_parse_gp_ext(TALLOC_CTX *mem_ctx,
gp_ext->num_exts = i;
- gp_ext->extensions = TALLOC_ZERO_ARRAY(mem_ctx, char *, gp_ext->num_exts);
- gp_ext->extensions_guid = TALLOC_ZERO_ARRAY(mem_ctx, char *, gp_ext->num_exts);
- gp_ext->snapins = TALLOC_ZERO_ARRAY(mem_ctx, char *, gp_ext->num_exts);
- gp_ext->snapins_guid = TALLOC_ZERO_ARRAY(mem_ctx, char *, gp_ext->num_exts);
-
- gp_ext->gp_extension = talloc_strdup(mem_ctx, extension_raw);
+ if (gp_ext->num_exts) {
+ gp_ext->extensions = TALLOC_ZERO_ARRAY(mem_ctx, char *, gp_ext->num_exts);
+ gp_ext->extensions_guid = TALLOC_ZERO_ARRAY(mem_ctx, char *, gp_ext->num_exts);
+ gp_ext->snapins = TALLOC_ZERO_ARRAY(mem_ctx, char *, gp_ext->num_exts);
+ gp_ext->snapins_guid = TALLOC_ZERO_ARRAY(mem_ctx, char *, gp_ext->num_exts);
+ } else {
+ gp_ext->extensions = NULL;
+ gp_ext->extensions_guid = NULL;
+ gp_ext->snapins = NULL;
+ gp_ext->snapins_guid = NULL;
+ }
if (gp_ext->extensions == NULL || gp_ext->extensions_guid == NULL ||
gp_ext->snapins == NULL || gp_ext->snapins_guid == NULL ||
@@ -60,6 +65,8 @@ ADS_STATUS ads_parse_gp_ext(TALLOC_CTX *mem_ctx,
goto parse_error;
}
+ gp_ext->gp_extension = talloc_strdup(mem_ctx, extension_raw);
+
for (i = 0; ext_list[i] != NULL; i++) {
int k;
@@ -161,8 +168,13 @@ ADS_STATUS ads_parse_gplink(TALLOC_CTX *mem_ctx,
gp_link->gp_opts = options;
gp_link->num_links = i;
- gp_link->link_names = TALLOC_ZERO_ARRAY(mem_ctx, char *, gp_link->num_links);
- gp_link->link_opts = TALLOC_ZERO_ARRAY(mem_ctx, uint32, gp_link->num_links);
+ if (gp_link->num_links) {
+ gp_link->link_names = TALLOC_ZERO_ARRAY(mem_ctx, char *, gp_link->num_links);
+ gp_link->link_opts = TALLOC_ZERO_ARRAY(mem_ctx, uint32, gp_link->num_links);
+ } else {
+ gp_link->link_names = NULL;
+ gp_link->link_opts = NULL;
+ }
gp_link->gp_link = talloc_strdup(mem_ctx, gp_link_raw);