diff options
| author | Garming Sam <garming@catalyst.net.nz> | 2014-01-17 10:16:12 +1300 |
|---|---|---|
| committer | Andrew Bartlett <abartlet@samba.org> | 2014-02-20 10:11:00 +1300 |
| commit | bce62e600085270f26053882c5a4e35f5fe4fb5e (patch) | |
| tree | 36be15d3c9867498693ae247c119c18b933e835f /source4/rpc_server/common | |
| parent | 497f0327a08fbfa444308c90a418ccb6b45b96d6 (diff) | |
| download | samba-bce62e600085270f26053882c5a4e35f5fe4fb5e.tar.gz samba-bce62e600085270f26053882c5a4e35f5fe4fb5e.tar.xz samba-bce62e600085270f26053882c5a4e35f5fe4fb5e.zip | |
s4: pass down a memory context when performing share_string_option, to allow substitutions
Signed-off-by: Garming Sam <garming@catalyst.net.nz>
Change-Id: I24b36db3ac11834c3268b2da929e214c10268b16
Reviewed-by: Andrew Bartlett <abartlet@samba.org>
Reviewed-by: Nadezhda Ivanova <nivanova@samba.org>
Diffstat (limited to 'source4/rpc_server/common')
| -rw-r--r-- | source4/rpc_server/common/share_info.c | 23 |
1 files changed, 16 insertions, 7 deletions
diff --git a/source4/rpc_server/common/share_info.c b/source4/rpc_server/common/share_info.c index 218901026f..34330b92ca 100644 --- a/source4/rpc_server/common/share_info.c +++ b/source4/rpc_server/common/share_info.c @@ -53,23 +53,26 @@ enum srvsvc_ShareType dcesrv_common_get_share_type(TALLOC_CTX *mem_ctx, struct d * this ones are hidden in NetShareEnum, but shown in NetShareEnumAll */ enum srvsvc_ShareType share_type = 0; - const char *sharetype; + char *sharetype; if (!share_bool_option(scfg, SHARE_BROWSEABLE, SHARE_BROWSEABLE_DEFAULT)) { share_type |= STYPE_HIDDEN; } - sharetype = share_string_option(scfg, SHARE_TYPE, SHARE_TYPE_DEFAULT); + sharetype = share_string_option(mem_ctx, scfg, SHARE_TYPE, SHARE_TYPE_DEFAULT); if (sharetype && strcasecmp(sharetype, "IPC") == 0) { share_type |= STYPE_IPC; + TALLOC_FREE(sharetype); return share_type; } if (sharetype && strcasecmp(sharetype, "PRINTER") == 0) { share_type |= STYPE_PRINTQ; + TALLOC_FREE(sharetype); return share_type; } + TALLOC_FREE(sharetype); share_type |= STYPE_DISKTREE; return share_type; @@ -78,16 +81,20 @@ enum srvsvc_ShareType dcesrv_common_get_share_type(TALLOC_CTX *mem_ctx, struct d /* This hardcoded value should go into a ldb database! */ const char *dcesrv_common_get_share_path(TALLOC_CTX *mem_ctx, struct dcesrv_context *dce_ctx, struct share_config *scfg) { - const char *sharetype; + char *sharetype; char *p; - - sharetype = share_string_option(scfg, SHARE_TYPE, SHARE_TYPE_DEFAULT); + char *path; + + sharetype = share_string_option(mem_ctx, scfg, SHARE_TYPE, SHARE_TYPE_DEFAULT); if (sharetype && strcasecmp(sharetype, "IPC") == 0) { + TALLOC_FREE(sharetype); return talloc_strdup(mem_ctx, ""); } - p = talloc_strdup(mem_ctx, share_string_option(scfg, SHARE_PATH, "")); + TALLOC_FREE(sharetype); + + p = share_string_option(mem_ctx, scfg, SHARE_PATH, ""); if (!p) { return NULL; } @@ -96,7 +103,9 @@ const char *dcesrv_common_get_share_path(TALLOC_CTX *mem_ctx, struct dcesrv_cont } all_string_sub(p, "/", "\\", 0); - return talloc_asprintf(mem_ctx, "C:%s", p); + path = talloc_asprintf(mem_ctx, "C:%s", p); + TALLOC_FREE(p); + return path; } /* This hardcoded value should go into a ldb database! */ |
