summaryrefslogtreecommitdiff
path: root/source3/smbd
diff options
context:
space:
mode:
authorVolker Lendecke <vlendec@samba.org>2003-03-30 16:37:10 +0000
committerVolker Lendecke <vlendec@samba.org>2003-03-30 16:37:10 +0000
commit5fd03bffd3754c1f7ac2a63bcd14afd850a2e45c (patch)
tree62b4a98cf457eaffea01e6c6a455516e57b1ee4f /source3/smbd
parentcdc5e0ac9a6d2bddb926a598f5c879e7fb3d8d9a (diff)
downloadsamba-5fd03bffd3754c1f7ac2a63bcd14afd850a2e45c.tar.gz
samba-5fd03bffd3754c1f7ac2a63bcd14afd850a2e45c.tar.bz2
samba-5fd03bffd3754c1f7ac2a63bcd14afd850a2e45c.zip
This changes our handling of invalid service types that the
client requested on tconx. We now return the same error code like NT4SP6 and W2kSP3 return. TCONDEV is a little test for this. Volker (This used to be commit 6f94ab8ed50ad171f25e9538417c5074feba164d)
Diffstat (limited to 'source3/smbd')
-rw-r--r--source3/smbd/service.c19
1 files changed, 12 insertions, 7 deletions
diff --git a/source3/smbd/service.c b/source3/smbd/service.c
index a5e1ec4e93..080e2f76df 100644
--- a/source3/smbd/service.c
+++ b/source3/smbd/service.c
@@ -227,22 +227,27 @@ static NTSTATUS share_sanity_checks(int snum, fstring dev)
return NT_STATUS_ACCESS_DENIED;
}
- /* you can only connect to the IPC$ service as an ipc device */
- if (strequal(lp_fstype(snum), "IPC"))
- fstrcpy(dev,"IPC");
-
if (dev[0] == '?' || !dev[0]) {
if (lp_print_ok(snum)) {
fstrcpy(dev,"LPT1:");
+ } else if (strequal(lp_fstype(snum), "IPC")) {
+ fstrcpy(dev, "IPC");
} else {
fstrcpy(dev,"A:");
}
}
- /* if the request is as a printer and you can't print then refuse */
strupper(dev);
- if (!lp_print_ok(snum) && (strncmp(dev,"LPT",3) == 0)) {
- DEBUG(1,("Attempt to connect to non-printer as a printer\n"));
+
+ if (lp_print_ok(snum)) {
+ if (!strequal(dev, "LPT:")) {
+ return NT_STATUS_BAD_DEVICE_TYPE;
+ }
+ } else if (strequal(lp_fstype(snum), "IPC")) {
+ if (!strequal(dev, "IPC")) {
+ return NT_STATUS_BAD_DEVICE_TYPE;
+ }
+ } else if (!strequal(dev, "A:")) {
return NT_STATUS_BAD_DEVICE_TYPE;
}