summaryrefslogtreecommitdiff
path: root/source3/libgpo/gpo_util.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_util.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_util.c')
-rw-r--r--source3/libgpo/gpo_util.c149
1 files changed, 93 insertions, 56 deletions
diff --git a/source3/libgpo/gpo_util.c b/source3/libgpo/gpo_util.c
index 7c29a63ecc..6b3f55bb9f 100644
--- a/source3/libgpo/gpo_util.c
+++ b/source3/libgpo/gpo_util.c
@@ -221,54 +221,71 @@ void dump_gpo(TALLOC_CTX *mem_ctx, struct GROUP_POLICY_OBJECT *gpo, int debuglev
DEBUGADD(lvl,("link:\t\t\t%s\n", gpo->link));
DEBUGADD(lvl,("link_type:\t\t%d ", gpo->link_type));
switch (gpo->link_type) {
- case GP_LINK_UNKOWN:
- DEBUGADD(lvl,("GP_LINK_UNKOWN\n"));
- break;
- case GP_LINK_OU:
- DEBUGADD(lvl,("GP_LINK_OU\n"));
- break;
- case GP_LINK_DOMAIN:
- DEBUGADD(lvl,("GP_LINK_DOMAIN\n"));
- break;
- case GP_LINK_SITE:
- DEBUGADD(lvl,("GP_LINK_SITE\n"));
- break;
- case GP_LINK_MACHINE:
- DEBUGADD(lvl,("GP_LINK_MACHINE\n"));
- break;
- default:
- break;
+ case GP_LINK_UNKOWN:
+ DEBUGADD(lvl,("GP_LINK_UNKOWN\n"));
+ break;
+ case GP_LINK_OU:
+ DEBUGADD(lvl,("GP_LINK_OU\n"));
+ break;
+ case GP_LINK_DOMAIN:
+ DEBUGADD(lvl,("GP_LINK_DOMAIN\n"));
+ break;
+ case GP_LINK_SITE:
+ DEBUGADD(lvl,("GP_LINK_SITE\n"));
+ break;
+ case GP_LINK_MACHINE:
+ DEBUGADD(lvl,("GP_LINK_MACHINE\n"));
+ break;
+ default:
+ break;
}
+ DEBUGADD(lvl,("machine_extensions:\t%s\n", gpo->machine_extensions));
+
if (gpo->machine_extensions) {
- struct GP_EXT gp_ext;
+ struct GP_EXT *gp_ext = NULL;
ADS_STATUS status;
- DEBUGADD(lvl,("machine_extensions:\t%s\n", gpo->machine_extensions));
-
status = ads_parse_gp_ext(mem_ctx, gpo->machine_extensions, &gp_ext);
if (!ADS_ERR_OK(status)) {
return;
}
- dump_gp_ext(&gp_ext, lvl);
+ dump_gp_ext(gp_ext, lvl);
}
+ DEBUGADD(lvl,("user_extensions:\t%s\n", gpo->user_extensions));
+
if (gpo->user_extensions) {
- struct GP_EXT gp_ext;
+ struct GP_EXT *gp_ext = NULL;
ADS_STATUS status;
- DEBUGADD(lvl,("user_extensions:\t%s\n", gpo->user_extensions));
-
status = ads_parse_gp_ext(mem_ctx, gpo->user_extensions, &gp_ext);
if (!ADS_ERR_OK(status)) {
return;
}
- dump_gp_ext(&gp_ext, lvl);
+ dump_gp_ext(gp_ext, lvl);
}
}
+/****************************************************************
+****************************************************************/
+
+void dump_gpo_list(TALLOC_CTX *mem_ctx,
+ struct GROUP_POLICY_OBJECT *gpo_list,
+ int debuglevel)
+{
+ struct GROUP_POLICY_OBJECT *gpo = NULL;
+
+ for (gpo = gpo_list; gpo; gpo = gpo->next) {
+ dump_gpo(mem_ctx, gpo, debuglevel);
+ }
+}
+
+/****************************************************************
+****************************************************************/
+
void dump_gplink(ADS_STRUCT *ads, TALLOC_CTX *mem_ctx, struct GP_LINK *gp_link)
{
ADS_STATUS status;
@@ -284,14 +301,14 @@ void dump_gplink(ADS_STRUCT *ads, TALLOC_CTX *mem_ctx, struct GP_LINK *gp_link)
DEBUGADD(lvl,("gplink: %s\n", gp_link->gp_link));
DEBUGADD(lvl,("gpopts: %d ", gp_link->gp_opts));
switch (gp_link->gp_opts) {
- case GPOPTIONS_INHERIT:
- DEBUGADD(lvl,("GPOPTIONS_INHERIT\n"));
- break;
- case GPOPTIONS_BLOCK_INHERITANCE:
- DEBUGADD(lvl,("GPOPTIONS_BLOCK_INHERITANCE\n"));
- break;
- default:
- break;
+ case GPOPTIONS_INHERIT:
+ DEBUGADD(lvl,("GPOPTIONS_INHERIT\n"));
+ break;
+ case GPOPTIONS_BLOCK_INHERITANCE:
+ DEBUGADD(lvl,("GPOPTIONS_BLOCK_INHERITANCE\n"));
+ break;
+ default:
+ break;
}
DEBUGADD(lvl,("num links: %d\n", gp_link->num_links));
@@ -326,6 +343,9 @@ void dump_gplink(ADS_STRUCT *ads, TALLOC_CTX *mem_ctx, struct GP_LINK *gp_link)
}
}
+/****************************************************************
+****************************************************************/
+
ADS_STATUS process_extension_with_snapin(ADS_STRUCT *ads,
TALLOC_CTX *mem_ctx,
const char *extension_guid,
@@ -348,14 +368,17 @@ ADS_STATUS process_extension_with_snapin(ADS_STRUCT *ads,
return ADS_SUCCESS;
}
+/****************************************************************
+****************************************************************/
+
ADS_STATUS gpo_process_a_gpo(ADS_STRUCT *ads,
TALLOC_CTX *mem_ctx,
struct GROUP_POLICY_OBJECT *gpo,
- const char *extension_guid,
+ const char *extension_guid_filter,
uint32 flags)
{
ADS_STATUS status;
- struct GP_EXT gp_ext;
+ struct GP_EXT *gp_ext = NULL;
int i;
if (flags & GPO_LIST_FLAG_MACHINE) {
@@ -388,14 +411,15 @@ ADS_STATUS gpo_process_a_gpo(ADS_STRUCT *ads,
}
}
- for (i=0; i<gp_ext.num_exts; i++) {
+ for (i=0; i<gp_ext->num_exts; i++) {
- if (extension_guid && !strequal(extension_guid, gp_ext.extensions_guid[i])) {
+ if (extension_guid_filter && !strequal(extension_guid_filter, gp_ext->extensions_guid[i])) {
continue;
}
- status = process_extension_with_snapin(ads, mem_ctx, gp_ext.extensions_guid[i],
- gp_ext.snapins_guid[i]);
+ status = process_extension_with_snapin(ads, mem_ctx,
+ gp_ext->extensions_guid[i],
+ gp_ext->snapins_guid[i]);
if (!ADS_ERR_OK(status)) {
return status;
}
@@ -404,16 +428,19 @@ ADS_STATUS gpo_process_a_gpo(ADS_STRUCT *ads,
return ADS_SUCCESS;
}
+/****************************************************************
+****************************************************************/
+
ADS_STATUS gpo_process_gpo_list(ADS_STRUCT *ads,
TALLOC_CTX *mem_ctx,
- struct GROUP_POLICY_OBJECT **gpo_list,
+ struct GROUP_POLICY_OBJECT *gpo_list,
const char *extensions_guid,
uint32 flags)
{
ADS_STATUS status;
- struct GROUP_POLICY_OBJECT *gpo = *gpo_list;
+ struct GROUP_POLICY_OBJECT *gpo;
- for (gpo = *gpo_list; gpo; gpo = gpo->next) {
+ for (gpo = gpo_list; gpo; gpo = gpo->next) {
status = gpo_process_a_gpo(ads, mem_ctx, gpo,
extensions_guid, flags);
@@ -455,6 +482,9 @@ ADS_STATUS gpo_lockout_policy(ADS_STRUCT *ads,
return ADS_ERROR_NT(NT_STATUS_NOT_IMPLEMENTED);
}
+/****************************************************************
+****************************************************************/
+
ADS_STATUS gpo_password_policy(ADS_STRUCT *ads,
TALLOC_CTX *mem_ctx,
const char *hostname,
@@ -512,7 +542,7 @@ ADS_STATUS gpo_password_policy(ADS_STRUCT *ads,
ads_memfree(ads, dn);
- status = gpo_process_gpo_list(ads, mem_ctx, &gpo_list,
+ status = gpo_process_gpo_list(ads, mem_ctx, gpo_list,
cse_gpo_name_to_guid_string("Security"),
GPO_LIST_FLAG_MACHINE);
if (!ADS_ERR_OK(status)) {
@@ -533,22 +563,25 @@ NTSTATUS check_refresh_gpo(ADS_STRUCT *ads,
struct cli_state **cli_out)
{
NTSTATUS result;
- char *server, *share, *nt_path, *unix_path;
+ char *server = NULL;
+ char *share = NULL;
+ char *nt_path = NULL;
+ char *unix_path = NULL;
uint32 sysvol_gpt_version = 0;
- char *display_name;
+ char *display_name = NULL;
struct cli_state *cli = NULL;
- result = ads_gpo_explode_filesyspath(ads, mem_ctx, gpo->file_sys_path,
- &server, &share, &nt_path, &unix_path);
+ result = gpo_explode_filesyspath(mem_ctx, gpo->file_sys_path,
+ &server, &share, &nt_path, &unix_path);
if (!NT_STATUS_IS_OK(result)) {
goto out;
}
- result = ads_gpo_get_sysvol_gpt_version(ads, mem_ctx,
- unix_path,
- &sysvol_gpt_version,
- &display_name);
+ result = gpo_get_sysvol_gpt_version(mem_ctx,
+ unix_path,
+ &sysvol_gpt_version,
+ &display_name);
if (!NT_STATUS_IS_OK(result) &&
!NT_STATUS_EQUAL(result, NT_STATUS_NO_SUCH_FILE)) {
DEBUG(10,("check_refresh_gpo: failed to get local gpt version: %s\n",
@@ -577,15 +610,15 @@ NTSTATUS check_refresh_gpo(ADS_STRUCT *ads,
*cli_out = cli;
}
- result = ads_fetch_gpo_files(ads, mem_ctx, *cli_out, gpo);
+ result = gpo_fetch_files(mem_ctx, *cli_out, gpo);
if (!NT_STATUS_IS_OK(result)) {
goto out;
}
- result = ads_gpo_get_sysvol_gpt_version(ads, mem_ctx,
- unix_path,
- &sysvol_gpt_version,
- &display_name);
+ result = gpo_get_sysvol_gpt_version(mem_ctx,
+ unix_path,
+ &sysvol_gpt_version,
+ &display_name);
if (!NT_STATUS_IS_OK(result)) {
DEBUG(10,("check_refresh_gpo: failed to get local gpt version: %s\n",
nt_errstr(result)));
@@ -627,6 +660,10 @@ NTSTATUS check_refresh_gpo_list(ADS_STRUCT *ads,
struct cli_state *cli = NULL;
struct GROUP_POLICY_OBJECT *gpo;
+ if (!gpo_list) {
+ return NT_STATUS_INVALID_PARAMETER;
+ }
+
for (gpo = gpo_list; gpo; gpo = gpo->next) {
result = check_refresh_gpo(ads, mem_ctx, gpo, &cli);