diff options
author | Jeremy Allison <jra@samba.org> | 2010-03-22 15:57:31 -0700 |
---|---|---|
committer | Jeremy Allison <jra@samba.org> | 2010-03-22 15:57:31 -0700 |
commit | 7509b56b5f59a7aeeb2ad1538ef71cbb8b459948 (patch) | |
tree | 89f23b2296826f6e1e807abf7841d8ddefc1ab0a /source3/param | |
parent | 31b45854891f194c46629185b4bb494691f06441 (diff) | |
download | samba-7509b56b5f59a7aeeb2ad1538ef71cbb8b459948.tar.gz samba-7509b56b5f59a7aeeb2ad1538ef71cbb8b459948.tar.bz2 samba-7509b56b5f59a7aeeb2ad1538ef71cbb8b459948.zip |
share_info.tdb could use non-canonicalized sharenames.
Fix this by moving canonicalization into lib/sharesec.c. Update the
db version to 3. Ensures we always find share names with security
descriptors attached.
Jeremy.
Diffstat (limited to 'source3/param')
-rw-r--r-- | source3/param/loadparm.c | 12 |
1 files changed, 6 insertions, 6 deletions
diff --git a/source3/param/loadparm.c b/source3/param/loadparm.c index a6e096e09f..9e9930f7d4 100644 --- a/source3/param/loadparm.c +++ b/source3/param/loadparm.c @@ -5792,7 +5792,6 @@ static void init_copymap(struct service *pservice); static bool hash_a_service(const char *name, int number); static void free_service_byindex(int iService); static void free_param_opts(struct param_opt_struct **popts); -static char * canonicalize_servicename(const char *name); static void show_parameter(int parmIndex); static bool is_synonym_of(int parm1, int parm2, bool *inverse); @@ -6117,6 +6116,7 @@ static void free_service_byindex(int idx) if (ServicePtrs[idx]->szService) { char *canon_name = canonicalize_servicename( + talloc_tos(), ServicePtrs[idx]->szService ); dbwrap_delete_bystring(ServiceHash, canon_name ); @@ -6208,7 +6208,7 @@ static int add_a_service(const struct service *pservice, const char *name) Convert a string to uppercase and remove whitespaces. ***************************************************************************/ -static char *canonicalize_servicename(const char *src) +char *canonicalize_servicename(TALLOC_CTX *ctx, const char *src) { char *result; @@ -6217,7 +6217,7 @@ static char *canonicalize_servicename(const char *src) return NULL; } - result = talloc_strdup(talloc_tos(), src); + result = talloc_strdup(ctx, src); SMB_ASSERT(result != NULL); strlower_m(result); @@ -6244,7 +6244,7 @@ static bool hash_a_service(const char *name, int idx) DEBUG(10,("hash_a_service: hashing index %d for service name %s\n", idx, name)); - canon_name = canonicalize_servicename( name ); + canon_name = canonicalize_servicename(talloc_tos(), name ); dbwrap_store_bystring(ServiceHash, canon_name, make_tdb_data((uint8 *)&idx, sizeof(idx)), @@ -6751,7 +6751,7 @@ static int getservicebyname(const char *pszServiceName, struct service *pservice return -1; } - canon_name = canonicalize_servicename(pszServiceName); + canon_name = canonicalize_servicename(talloc_tos(), pszServiceName); data = dbwrap_fetch_bystring(ServiceHash, canon_name, canon_name); @@ -8732,7 +8732,7 @@ static int process_usershare_file(const char *dir_name, const char *file_name, i } { - char *canon_name = canonicalize_servicename(service_name); + char *canon_name = canonicalize_servicename(talloc_tos(), service_name); TDB_DATA data = dbwrap_fetch_bystring( ServiceHash, canon_name, canon_name); |