diff options
author | Jeremy Allison <jra@samba.org> | 2007-02-21 02:04:28 +0000 |
---|---|---|
committer | Gerald (Jerry) Carter <jerry@samba.org> | 2007-10-10 12:18:07 -0500 |
commit | 90bdcce765998cc0f5768d24926d52b8a4a44f90 (patch) | |
tree | 6fdc74fa737a5ba3e4827b248f57c17d4b69ef6d /source | |
parent | 71dd02cc164197152e76d8141f906390c4bd1526 (diff) | |
download | samba-90bdcce765998cc0f5768d24926d52b8a4a44f90.tar.gz samba-90bdcce765998cc0f5768d24926d52b8a4a44f90.tar.xz samba-90bdcce765998cc0f5768d24926d52b8a4a44f90.zip |
r21481: No one said anything, so I'm disallowing anything
but explicit shares in "default service" :-).
Jeremy.
Diffstat (limited to 'source')
-rw-r--r-- | source/smbd/service.c | 24 |
1 files changed, 17 insertions, 7 deletions
diff --git a/source/smbd/service.c b/source/smbd/service.c index eb464c29b27..1b8e2e1d302 100644 --- a/source/smbd/service.c +++ b/source/smbd/service.c @@ -402,6 +402,13 @@ int find_service(fstring service) if (iService < 0) { } + /* Is it a usershare service ? */ + if (iService < 0 && *lp_usershare_path()) { + /* Ensure the name is canonicalized. */ + strlower_m(service); + iService = load_usershare_service(service); + } + /* just possibly it's a default service? */ if (iService < 0) { char *pdefservice = lp_defaultservice(); @@ -414,6 +421,14 @@ int find_service(fstring service) */ pstring defservice; pstrcpy(defservice, pdefservice); + + /* Disallow anything except explicit share names. */ + if (strequal(defservice,HOMES_NAME) || + strequal(defservice, PRINTERS_NAME) || + strequal(defservice, "ipc$")) { + goto fail; + } + iService = find_service(defservice); if (iService >= 0) { all_string_sub(service, "_","/",0); @@ -426,13 +441,6 @@ int find_service(fstring service) iService = load_registry_service(service); } - /* Is it a usershare service ? */ - if (iService < 0 && *lp_usershare_path()) { - /* Ensure the name is canonicalized. */ - strlower_m(service); - iService = load_usershare_service(service); - } - if (iService >= 0) { if (!VALID_SNUM(iService)) { DEBUG(0,("Invalid snum %d for %s\n",iService, service)); @@ -440,6 +448,8 @@ int find_service(fstring service) } } + fail: + if (iService < 0) DEBUG(3,("find_service() failed to find service %s\n", service)); |