summaryrefslogtreecommitdiff
path: root/source3/libgpo/gpo_ldap.c
diff options
context:
space:
mode:
authorGünther Deschner <gd@samba.org>2007-07-09 15:48:17 +0000
committerGerald (Jerry) Carter <jerry@samba.org>2007-10-10 12:23:55 -0500
commit5512dacbca699ab06df045ca7f1253c6a58251af (patch)
tree2be04741242487cb92981f5e46a1b407a7139814 /source3/libgpo/gpo_ldap.c
parent5e4962d9e78caab4a4294dd0ae3e4a6caf179d77 (diff)
downloadsamba-5512dacbca699ab06df045ca7f1253c6a58251af.tar.gz
samba-5512dacbca699ab06df045ca7f1253c6a58251af.tar.bz2
samba-5512dacbca699ab06df045ca7f1253c6a58251af.zip
r23770: Some minor cleanups in libgpo
(including some valgrind errors, uninitialized vars, etc.) Guenther (This used to be commit 1a2878db2d2fcdc53fa74fea48b82a1903e6a1f1)
Diffstat (limited to 'source3/libgpo/gpo_ldap.c')
-rw-r--r--source3/libgpo/gpo_ldap.c108
1 files changed, 60 insertions, 48 deletions
diff --git a/source3/libgpo/gpo_ldap.c b/source3/libgpo/gpo_ldap.c
index b595e531fe..3f90fa4a62 100644
--- a/source3/libgpo/gpo_ldap.c
+++ b/source3/libgpo/gpo_ldap.c
@@ -28,14 +28,24 @@
ADS_STATUS ads_parse_gp_ext(TALLOC_CTX *mem_ctx,
const char *extension_raw,
- struct GP_EXT *gp_ext)
+ struct GP_EXT **gp_ext)
{
+ struct GP_EXT *ext = NULL;
char **ext_list;
char **ext_strings = NULL;
int i;
+ if (!extension_raw) {
+ goto parse_error;
+ }
+
DEBUG(20,("ads_parse_gp_ext: %s\n", extension_raw));
+ ext = TALLOC_ZERO_P(mem_ctx, struct GP_EXT);
+ if (!ext) {
+ goto parse_error;
+ }
+
ext_list = str_list_make_talloc(mem_ctx, extension_raw, "]");
if (ext_list == NULL) {
goto parse_error;
@@ -45,28 +55,28 @@ ADS_STATUS ads_parse_gp_ext(TALLOC_CTX *mem_ctx,
/* no op */
}
- gp_ext->num_exts = i;
+ ext->num_exts = i;
- 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);
+ if (ext->num_exts) {
+ ext->extensions = TALLOC_ZERO_ARRAY(mem_ctx, char *, ext->num_exts);
+ ext->extensions_guid = TALLOC_ZERO_ARRAY(mem_ctx, char *, ext->num_exts);
+ ext->snapins = TALLOC_ZERO_ARRAY(mem_ctx, char *, ext->num_exts);
+ ext->snapins_guid = TALLOC_ZERO_ARRAY(mem_ctx, char *, ext->num_exts);
} else {
- gp_ext->extensions = NULL;
- gp_ext->extensions_guid = NULL;
- gp_ext->snapins = NULL;
- gp_ext->snapins_guid = NULL;
+ ext->extensions = NULL;
+ ext->extensions_guid = NULL;
+ ext->snapins = NULL;
+ ext->snapins_guid = NULL;
}
- if (gp_ext->extensions == NULL || gp_ext->extensions_guid == NULL ||
- gp_ext->snapins == NULL || gp_ext->snapins_guid == NULL ||
- gp_ext->gp_extension == NULL) {
+ ext->gp_extension = talloc_strdup(mem_ctx, extension_raw);
+
+ if (ext->extensions == NULL || ext->extensions_guid == NULL ||
+ ext->snapins == NULL || ext->snapins_guid == NULL ||
+ ext->gp_extension == NULL) {
goto parse_error;
}
- gp_ext->gp_extension = talloc_strdup(mem_ctx, extension_raw);
-
for (i = 0; ext_list[i] != NULL; i++) {
int k;
@@ -95,11 +105,11 @@ ADS_STATUS ads_parse_gp_ext(TALLOC_CTX *mem_ctx,
q++;
}
- gp_ext->extensions[i] = talloc_strdup(mem_ctx, cse_gpo_guid_string_to_name(q));
- gp_ext->extensions_guid[i] = talloc_strdup(mem_ctx, q);
+ ext->extensions[i] = talloc_strdup(mem_ctx, cse_gpo_guid_string_to_name(q));
+ ext->extensions_guid[i] = talloc_strdup(mem_ctx, q);
/* we might have no name for the guid */
- if (gp_ext->extensions_guid[i] == NULL) {
+ if (ext->extensions_guid[i] == NULL) {
goto parse_error;
}
@@ -112,11 +122,11 @@ ADS_STATUS ads_parse_gp_ext(TALLOC_CTX *mem_ctx,
}
/* FIXME: theoretically there could be more than one snapin per extension */
- gp_ext->snapins[i] = talloc_strdup(mem_ctx, cse_snapin_gpo_guid_string_to_name(m));
- gp_ext->snapins_guid[i] = talloc_strdup(mem_ctx, m);
+ ext->snapins[i] = talloc_strdup(mem_ctx, cse_snapin_gpo_guid_string_to_name(m));
+ ext->snapins_guid[i] = talloc_strdup(mem_ctx, m);
/* we might have no name for the guid */
- if (gp_ext->snapins_guid[i] == NULL) {
+ if (ext->snapins_guid[i] == NULL) {
goto parse_error;
}
}
@@ -129,6 +139,8 @@ ADS_STATUS ads_parse_gp_ext(TALLOC_CTX *mem_ctx,
str_list_free_talloc(mem_ctx, &ext_strings);
}
+ *gp_ext = ext;
+
return ADS_ERROR(LDAP_SUCCESS);
parse_error:
@@ -146,15 +158,15 @@ parse_error:
parse the raw link string into a GP_LINK structure
****************************************************************/
-ADS_STATUS ads_parse_gplink(TALLOC_CTX *mem_ctx,
- const char *gp_link_raw,
- uint32 options,
- struct GP_LINK *gp_link)
+static ADS_STATUS gpo_parse_gplink(TALLOC_CTX *mem_ctx,
+ const char *gp_link_raw,
+ uint32 options,
+ struct GP_LINK *gp_link)
{
char **link_list;
int i;
- DEBUG(10,("ads_parse_gplink: gPLink: %s\n", gp_link_raw));
+ DEBUG(10,("gpo_parse_gplink: gPLink: %s\n", gp_link_raw));
link_list = str_list_make_talloc(mem_ctx, gp_link_raw, "]");
if (link_list == NULL) {
@@ -186,7 +198,7 @@ ADS_STATUS ads_parse_gplink(TALLOC_CTX *mem_ctx,
char *p, *q;
- DEBUGADD(10,("ads_parse_gplink: processing link #%d\n", i));
+ DEBUGADD(10,("gpo_parse_gplink: processing link #%d\n", i));
q = link_list[i];
if (q[0] == '[') {
@@ -207,8 +219,8 @@ ADS_STATUS ads_parse_gplink(TALLOC_CTX *mem_ctx,
gp_link->link_opts[i] = atoi(p + 1);
- DEBUGADD(10,("ads_parse_gplink: link: %s\n", gp_link->link_names[i]));
- DEBUGADD(10,("ads_parse_gplink: opt: %d\n", gp_link->link_opts[i]));
+ DEBUGADD(10,("gpo_parse_gplink: link: %s\n", gp_link->link_names[i]));
+ DEBUGADD(10,("gpo_parse_gplink: opt: %d\n", gp_link->link_opts[i]));
}
@@ -262,7 +274,7 @@ ADS_STATUS ads_get_gpo_link(ADS_STRUCT *ads,
return ADS_ERROR(LDAP_NO_SUCH_ATTRIBUTE);
}
- /* perfectly leggal to have no options */
+ /* perfectly legal to have no options */
if (!ads_pull_uint32(ads, res, "gPOptions", &gp_options)) {
DEBUG(10,("ads_get_gpo_link: no 'gPOptions' attribute found\n"));
gp_options = 0;
@@ -270,7 +282,7 @@ ADS_STATUS ads_get_gpo_link(ADS_STRUCT *ads,
ads_msgfree(ads, res);
- return ads_parse_gplink(mem_ctx, gp_link, gp_options, gp_link_struct);
+ return gpo_parse_gplink(mem_ctx, gp_link, gp_options, gp_link_struct);
}
/****************************************************************
@@ -518,14 +530,14 @@ ADS_STATUS ads_get_gpo(ADS_STRUCT *ads,
add a gplink to the GROUP_POLICY_OBJECT linked list
****************************************************************/
-ADS_STATUS add_gplink_to_gpo_list(ADS_STRUCT *ads,
- TALLOC_CTX *mem_ctx,
- struct GROUP_POLICY_OBJECT **gpo_list,
- const char *link_dn,
- struct GP_LINK *gp_link,
- enum GPO_LINK_TYPE link_type,
- BOOL only_add_forced_gpos,
- struct GPO_SID_TOKEN *token)
+static ADS_STATUS add_gplink_to_gpo_list(ADS_STRUCT *ads,
+ TALLOC_CTX *mem_ctx,
+ struct GROUP_POLICY_OBJECT **gpo_list,
+ const char *link_dn,
+ struct GP_LINK *gp_link,
+ enum GPO_LINK_TYPE link_type,
+ BOOL only_add_forced_gpos,
+ struct GPO_SID_TOKEN *token)
{
ADS_STATUS status;
int i;
@@ -581,10 +593,10 @@ ADS_STATUS add_gplink_to_gpo_list(ADS_STRUCT *ads,
/****************************************************************
****************************************************************/
-ADS_STATUS ads_get_gpo_sid_token(ADS_STRUCT *ads,
- TALLOC_CTX *mem_ctx,
- const char *dn,
- struct GPO_SID_TOKEN **token)
+static ADS_STATUS ads_get_gpo_sid_token(ADS_STRUCT *ads,
+ TALLOC_CTX *mem_ctx,
+ const char *dn,
+ struct GPO_SID_TOKEN **token)
{
ADS_STATUS status;
DOM_SID object_sid;
@@ -684,11 +696,11 @@ ADS_STATUS ads_get_gpo_list(ADS_STRUCT *ads,
status = ads_get_gpo_link(ads, mem_ctx, site_dn, &gp_link);
if (ADS_ERR_OK(status)) {
-
+
if (DEBUGLEVEL >= 100) {
dump_gplink(ads, mem_ctx, &gp_link);
}
-
+
status = add_gplink_to_gpo_list(ads, mem_ctx, gpo_list,
site_dn, &gp_link, GP_LINK_SITE,
add_only_forced_gpos,
@@ -696,11 +708,11 @@ ADS_STATUS ads_get_gpo_list(ADS_STRUCT *ads,
if (!ADS_ERR_OK(status)) {
return status;
}
-
+
if (flags & GPO_LIST_FLAG_SITEONLY) {
return ADS_ERROR(LDAP_SUCCESS);
}
-
+
/* inheritance can't be blocked at the site level */
}
}