From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on inbox.vuxu.org X-Spam-Level: X-Spam-Status: No, score=0.2 required=5.0 tests=DKIM_INVALID,DKIM_SIGNED autolearn=no autolearn_force=no version=3.4.4 Received: (qmail 12321 invoked from network); 28 Sep 2023 06:56:30 -0000 Received: from 9front.inri.net (168.235.81.73) by inbox.vuxu.org with ESMTPUTF8; 28 Sep 2023 06:56:30 -0000 Received: from pb-smtp2.pobox.com ([64.147.108.71]) by 9front; Thu Sep 28 02:53:39 -0400 2023 Received: from pb-smtp2.pobox.com (unknown [127.0.0.1]) by pb-smtp2.pobox.com (Postfix) with ESMTP id 18CDF1A1360 for <9front@9front.org>; Thu, 28 Sep 2023 02:53:38 -0400 (EDT) (envelope-from unobe@cpan.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed; d=pobox.com; h=message-id :to:from:date:subject:mime-version:content-type :content-transfer-encoding; s=sasl; bh=GSFvf3nHFgKR+9gvxF9w9cZYZ nDQuHD/cmRqY1pbk/s=; b=YNHj8YjxAaH+I28ReFlrxmZFA4i3+As3XJBBC0r2z y/012vfmo8GshWiARyp4RSVGRDOOYAa2nQ34kowFQwgQSHDMBSqyxVz8gGPH4r2w vAq6Ss4th1Z7nGXGvkgdmT5gLuvk4qKl3pxi9uZgXz/S+O8RzDeOGUH5+51bq987 g0= Received: from pb-smtp2.nyi.icgroup.com (unknown [127.0.0.1]) by pb-smtp2.pobox.com (Postfix) with ESMTP id 0FC8E1A135F for <9front@9front.org>; Thu, 28 Sep 2023 02:53:38 -0400 (EDT) (envelope-from unobe@cpan.org) Received: from strider.localdomain (unknown [75.237.252.53]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by pb-smtp2.pobox.com (Postfix) with ESMTPSA id 49B521A135E for <9front@9front.org>; Thu, 28 Sep 2023 02:53:37 -0400 (EDT) (envelope-from unobe@cpan.org) Message-ID: <338BDD1F7133D9F883631FC57D34393C@smtp.pobox.com> To: 9front@9front.org From: Romano Date: Thu, 28 Sep 2023 06:34:09 +0000 MIME-Version: 1.0 Content-Type: text/plain; charset="US-ASCII" Content-Transfer-Encoding: 7bit X-Pobox-Relay-ID: BFE3B39E-5DCB-11EE-962C-25B3960A682E-09620299!pb-smtp2.pobox.com List-ID: <9front.9front.org> List-Help: X-Glyph: ➈ X-Bullshit: template enhancement self-signing software Subject: [9front] [PATCH 2/6] cifsd: clarify SMBv1 is supported, not SMB 2/3. Reply-To: 9front@9front.org Precedence: bulk SMB 2/3 is not supported by cifsd, so clarify that in the man page and update teh code to mention in the log file if SMB2/3 is attempted. Also, while in the code, fix a typo, add a few more commands to the explicitly unsupported list, and align the return value for unsupported calls to the SMBv1 spec. --- diff 755ac2c11ce134f76d83a2a42edb07a6304d1de8 f48ee862768b677d0b0fca82a7efecd0b4fb3b06 --- a/sys/man/8/cifsd +++ b/sys/man/8/cifsd @@ -1,6 +1,6 @@ .TH CIFSD 8 .SH NAME -cifsd \- CIFS/SMB network daemon +cifsd \- CIFS/SMBv1 network daemon .SH SYNOPSIS .PP .B ip/cifsd @@ -25,6 +25,7 @@ exports filesystems to .SM CIFS or .SM SMB +version 1 clients like Microsoft \(tm Windows. .PP It is normally started by the network listen process via the --- a/sys/src/cmd/ip/cifsd/dat.h +++ b/sys/src/cmd/ip/cifsd/dat.h @@ -139,9 +139,11 @@ STATUS_SMB_BAD_TID = 0x00050002, STATUS_SMB_BAD_FID = 0x00060001, STATUS_OS2_INVALID_ACCESS = 0x000C0001, + STATUS_SMB_BAD_COMMAND = 0x00160002, STATUS_SMB_BAD_UID = 0x005B0002, STATUS_OS2_INVALID_LEVEL = 0x007C0001, STATUS_NO_MORE_FILES = 0x80000006, + STATUS_NOT_IMPLEMENTED = 0xC0000002, STATUS_INVALID_HANDLE = 0xC0000008, STATUS_NO_SUCH_FILE = 0xC000000F, STATUS_ACCESS_DENIED = 0xC0000022, --- a/sys/src/cmd/ip/cifsd/main.c +++ b/sys/src/cmd/ip/cifsd/main.c @@ -7,6 +7,7 @@ LENHDR = 4, MAGIC = 0xFF | ('S'<<8) | ('M'<<16) | ('B'<<24), + MAGIC_SMB2 = 0xFE | ('S'<<8) | ('M'<<16) | ('B'<<24), SMB_FLAGS_CASE_INSENSITIVE = 0x08, SMB_FLAGS_CANONICALIZED_PATHS = 0x10, @@ -88,8 +89,8 @@ exits("botch"); return; } - if(magic != MAGIC){ - logit("bad smb magic"); + if(magic != MAGIC) { + logit("bad smb magic [%x] %s", magic, (magic == MAGIC_SMB2 ? "(SMB2/3 not supported)" : "")); exits("botch"); return; } --- a/sys/src/cmd/ip/cifsd/smb.c +++ b/sys/src/cmd/ip/cifsd/smb.c @@ -135,7 +135,7 @@ free(mcr); } remoteuser = getuser(); - logit("auth successfull"); + logit("auth successful"); break; } sessionuid = (namehash(getuser()) & 0x7FFF) | 1; @@ -794,6 +794,12 @@ } void +smbstatusnotimplemented(Req *r, uchar *, uchar *, uchar *) +{ + r->respond(r, STATUS_NOT_IMPLEMENTED); +} + +void smbecho(Req *r, uchar *h, uchar *p, uchar *e) { uchar *t, *d, *de; @@ -1711,7 +1717,7 @@ void smbnoandxcommand(Req *r, uchar *, uchar *, uchar *) { - r->respond(r, (r->cmd == 0xFF) ? STATUS_INVALID_SMB : 0); + r->respond(r, (r->cmd == 0xFF) ? STATUS_SMB_BAD_COMMAND : 0); } struct { @@ -1731,6 +1737,10 @@ [0x23] { "SMB_COM_QUERY_INFORMATION2", smbqueryinformation2 }, [0x24] { "SMB_COM_LOCKING_ANDX", smblockingandx }, [0x25] { "SMB_COM_TRANSACTION", smbtransaction }, + [0x27] { "SMB_COM_IOCTL", smbstatusnotimplemented }, + [0x28] { "SMB_COM_IOCTL_SECONDARY", smbstatusnotimplemented }, + [0x29] { "SMB_COM_COPY", smbstatusnotimplemented }, + [0x2a] { "SMB_COM_MOVE", smbstatusnotimplemented }, [0x2b] { "SMB_COM_ECHO", smbecho }, [0x2d] { "SMB_COM_OPEN_ANDX", smbopenandx }, [0x2e] { "SMB_COM_READ_ANDX", smbreadandx }, @@ -1737,6 +1747,7 @@ [0x2f] { "SMB_COM_WRITE_ANDX", smbwriteandx }, [0x32] { "SMB_COM_TRANSACTION2", smbtransaction }, [0x34] { "SMB_COM_FIND_CLOSE2", smbcloseflush }, + [0x40] { "SMB_IOS", smbnoandxcommand }, [0x71] { "SMB_COM_DISCONNECT_TREE", smbdisconnecttree }, [0x72] { "SMB_COM_NEGOTIATE", smbnegotiate }, [0x73] { "SMB_COM_SESSION_SETUP_ANX", smbsessionsetupandx }, @@ -1750,6 +1761,7 @@ void smbcmd(Req *r, int cmd, uchar *h, uchar *p, uchar *e) { + logit("processing [%.2x] command", cmd); if((cmd >= nelem(optab)) || (optab[cmd].fun == nil)){ logit("[%.2x] command not implemented", cmd); r->respond(r, STATUS_NOT_SUPPORTED);