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=2.0 required=5.0 tests=DKIM_SIGNED,DKIM_VALID, T_SCC_BODY_TEXT_LINE,URI_TRY_3LD autolearn=no autolearn_force=no version=3.4.4 Received: (qmail 28386 invoked from network); 11 Dec 2023 19:34:14 -0000 Received: from 9front.inri.net (168.235.81.73) by inbox.vuxu.org with ESMTPUTF8; 11 Dec 2023 19:34:14 -0000 Received: from pb-smtp20.pobox.com ([173.228.157.52]) by 9front; Mon Dec 11 14:31:15 -0500 2023 Received: from pb-smtp20.pobox.com (unknown [127.0.0.1]) by pb-smtp20.pobox.com (Postfix) with ESMTP id AD50A23216 for <9front@9front.org>; Mon, 11 Dec 2023 14:31:12 -0500 (EST) (envelope-from unobe@cpan.org) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed; d=pobox.com; h=message-id :to:subject:date:from:in-reply-to:mime-version:content-type :content-transfer-encoding; s=sasl; bh=2g/XXvOp10tOilrySbqWgTZA7 iZSbOtQyUJ6c7ueJpI=; b=jckxwVfKrKCZoFeTeCnouYppvqLYF49ovQPmHhcLu Qyb2T1mZQ7kDVcGcBHSEIKvxe7UEN42TWvG+V1G8wAnXWwpsbU1FGs0GeXaljhDV PTqBA/6RD0wV73/C8j7I7r4nWPQtscru1HbvwnZHQkIihidxfLospPbp0texKBsD fc= Received: from pb-smtp20.sea.icgroup.com (unknown [127.0.0.1]) by pb-smtp20.pobox.com (Postfix) with ESMTP id A5E9D23215 for <9front@9front.org>; Mon, 11 Dec 2023 14:31:12 -0500 (EST) (envelope-from unobe@cpan.org) Received: from strider.localdomain (unknown [24.205.13.124]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by pb-smtp20.pobox.com (Postfix) with ESMTPSA id 0A7BE23214 for <9front@9front.org>; Mon, 11 Dec 2023 14:31:09 -0500 (EST) (envelope-from unobe@cpan.org) Message-ID: To: 9front@9front.org Date: Mon, 11 Dec 2023 11:31:07 -0800 From: unobe@cpan.org In-Reply-To: <8FA83A0AE7B16EFD59606402877A4FCD@smtp.pobox.com> MIME-Version: 1.0 Content-Type: text/plain; charset="US-ASCII" Content-Transfer-Encoding: 7bit X-Pobox-Relay-ID: D5C4B54E-985B-11EE-A20E-F515D2CDFF5E-09620299!pb-smtp20.pobox.com List-ID: <9front.9front.org> List-Help: X-Glyph: ➈ X-Bullshit: virtualized RESTful package full-stack cache Subject: Re: [9front] [PATCH 2/6] cifsd: clarify SMBv1 is supported, not SMB 2/3. Reply-To: 9front@9front.org Precedence: bulk Ping. The cifs spec specifies the protocol for SMBv1/CIFS to be OXFF, 'SMB': https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-cifs/69a29f73-de0c-45a6-a1aa-8ceeea42217f For SMBv2 and above, it's OxFE, 'SMB': https://learn.microsoft.com/en-us/openspecs/windows_protocols/ms-smb2/fb188936-5050-48d3-b350-dc43059638a4 Quoth unobe@cpan.org: > Desktop Mac (OS X) can connect to cifsd just fine, but iPhones (iOS) > cannot. My hope is that the documentation will clarify what is > supported for someone down the road, and the logging will help > diagnose situations where a client is connecting with an unsupported > version. > > Quoth Romano : > > > > 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); > > > > >