{
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;
return NT_STATUS_OBJECT_NAME_INVALID;
}
if (StrCaseCmp(s, ":$DATA") != 0) {
- return NT_STATUS_INVALID_PARAMETER;
+ check_quota = true;
}
break;
}
/* 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. */
*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;
}
/****************************************************************************