Commit 08b06c30 authored by Linus Torvalds's avatar Linus Torvalds
Browse files

Merge tag 'v6.17-rc4-ksmbd-fix' of git://git.samba.org/ksmbd

Pull smb server fix from Steve French:

 - fix handling filenames with ":" (colon) in them

* tag 'v6.17-rc4-ksmbd-fix' of git://git.samba.org/ksmbd:
  ksmbd: allow a filename to contain colons on SMB3.1.1 posix extensions
parents b9a10f87 b5ee94ac
Loading
Loading
Loading
Loading
+14 −11
Original line number Diff line number Diff line
@@ -2951,6 +2951,8 @@ int smb2_open(struct ksmbd_work *work)
		}

		ksmbd_debug(SMB, "converted name = %s\n", name);

		if (posix_ctxt == false) {
			if (strchr(name, ':')) {
				if (!test_share_config_flag(work->tcon->share_conf,
							KSMBD_SHARE_FLAG_STREAMS)) {
@@ -2962,7 +2964,6 @@ int smb2_open(struct ksmbd_work *work)
					goto err_out2;
			}

		if (posix_ctxt == false) {
			rc = ksmbd_validate_filename(name);
			if (rc < 0)
				goto err_out2;
@@ -3443,6 +3444,8 @@ int smb2_open(struct ksmbd_work *work)
	fp->attrib_only = !(req->DesiredAccess & ~(FILE_READ_ATTRIBUTES_LE |
			FILE_WRITE_ATTRIBUTES_LE | FILE_SYNCHRONIZE_LE));

	fp->is_posix_ctxt = posix_ctxt;

	/* fp should be searchable through ksmbd_inode.m_fp_list
	 * after daccess, saccess, attrib_only, and stream are
	 * initialized.
@@ -5988,7 +5991,7 @@ static int smb2_rename(struct ksmbd_work *work,
	if (IS_ERR(new_name))
		return PTR_ERR(new_name);

	if (strchr(new_name, ':')) {
	if (fp->is_posix_ctxt == false && strchr(new_name, ':')) {
		int s_type;
		char *xattr_stream_name, *stream_name = NULL;
		size_t xattr_stream_size;
+2 −0
Original line number Diff line number Diff line
@@ -112,6 +112,8 @@ struct ksmbd_file {
	bool				is_durable;
	bool				is_persistent;
	bool				is_resilient;

	bool                            is_posix_ctxt;
};

static inline void set_ctx_actor(struct dir_context *ctx,