mbox series

[0/5] cifs: Fixes for SMB1 non-UNICODE 8-bit mode

Message ID 20241028110340.29911-1-pali@kernel.org (mailing list archive)
Headers show
Series cifs: Fixes for SMB1 non-UNICODE 8-bit mode | expand

Message

Pali Rohár Oct. 28, 2024, 11:03 a.m. UTC
SMB1 protocol supports non-UNICODE (8-bit OEM character set) and
UNICODE (UTF-16) modes. Linux SMB1 client implements both of them but
there are few bugs in processing non-UNICODE mode.

This patch series add a new mount option -o nounicode to disable UNICODE
mode and force usage of non-UNICODE (8-bit OEM character set) mode. This
allows to test non-UNICODE code path against modern/recent SMB servers
which implements and prefer UNICODE mode.

And this patch series fixes SMB1 session setup and reading symlinks when
UNICODE mode is not active.

Tested against Windows Server 2022 SMB1 server and older Samba SMB1
server.

Pali Rohár (5):
  cifs: Add new mount option -o nounicode to disable SMB1 UNICODE mode
  cifs: Fix encoding of SMB1 Session Setup Kerberos Request in
    non-UNICODE mode
  cifs: Add support for SMB1 Session Setup NTLMSSP Request in
    non-UNICODE mode
  cifs: Fix parsing reparse point with native symlink in SMB1
    non-UNICODE session
  cifs: Remove unicode parameter from parse_reparse_point() function

 fs/smb/client/cifsfs.c     |  4 ++
 fs/smb/client/cifsglob.h   |  2 +
 fs/smb/client/cifsproto.h  |  2 +-
 fs/smb/client/cifssmb.c    |  5 ++-
 fs/smb/client/connect.c    | 32 +++++++++++++--
 fs/smb/client/fs_context.c | 11 ++++++
 fs/smb/client/fs_context.h |  2 +
 fs/smb/client/reparse.c    | 25 ++++++------
 fs/smb/client/sess.c       | 81 ++++++++++++++++++++++++--------------
 fs/smb/client/smb1ops.c    |  4 +-
 fs/smb/client/smb2file.c   |  1 -
 fs/smb/client/smb2proto.h  |  2 +-
 12 files changed, 118 insertions(+), 53 deletions(-)