From: Stefan Metzmacher Date: Mon, 21 Dec 2009 15:26:34 +0000 (+0100) Subject: smbd: Fix opening the quota magic file X-Git-Url: http://git.samba.org/?a=commitdiff_plain;h=7fd0767c6abdc9f4c456ae0a7d247f3a25ffcbd9;p=metze%2Fsamba%2Fwip.git smbd: Fix opening the quota magic file This fixes bug #6642 and bug #6919. metze --- diff --git a/source3/smbd/reply.c b/source3/smbd/reply.c index acd84d689de1..23fa3e885b0c 100644 --- a/source3/smbd/reply.c +++ b/source3/smbd/reply.c @@ -46,9 +46,9 @@ static NTSTATUS check_path_syntax_internal(char *path, { char *d = path; const char *s = path; - NTSTATUS ret = NT_STATUS_OK; bool start_of_name_component = True; bool stream_started = false; + bool check_quota = false; *p_last_component_contains_wcard = False; @@ -66,7 +66,7 @@ static NTSTATUS check_path_syntax_internal(char *path, return NT_STATUS_OBJECT_NAME_INVALID; } if (StrCaseCmp(s, ":$DATA") != 0) { - return NT_STATUS_INVALID_PARAMETER; + check_quota = true; } break; } @@ -127,8 +127,7 @@ static NTSTATUS check_path_syntax_internal(char *path, /* Are we at the start ? Can't go back further if so. */ if (d <= path) { - ret = NT_STATUS_OBJECT_PATH_SYNTAX_BAD; - break; + return NT_STATUS_OBJECT_PATH_SYNTAX_BAD; } /* Go back one level... */ /* We know this is safe as '/' cannot be part of a mb sequence. */ @@ -201,7 +200,13 @@ static NTSTATUS check_path_syntax_internal(char *path, *d = '\0'; - return ret; + if (check_quota) { + if (StrCaseCmp(path, FAKE_FILE_NAME_QUOTA_UNIX) != 0) { + return NT_STATUS_INVALID_PARAMETER; + } + } + + return NT_STATUS_OK; } /****************************************************************************