diff options
author | Günther Deschner <gd@samba.org> | 2007-07-09 15:48:17 +0000 |
---|---|---|
committer | Gerald (Jerry) Carter <jerry@samba.org> | 2007-10-10 12:23:55 -0500 |
commit | 5512dacbca699ab06df045ca7f1253c6a58251af (patch) | |
tree | 2be04741242487cb92981f5e46a1b407a7139814 /source3/libgpo/gpo_ldap.c | |
parent | 5e4962d9e78caab4a4294dd0ae3e4a6caf179d77 (diff) | |
download | samba-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.c | 108 |
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 */ } } |