diff --git a/reactos/ntoskrnl/fsrtl/dbcsname.c b/reactos/ntoskrnl/fsrtl/dbcsname.c index cdde1269e1b..67454955316 100644 --- a/reactos/ntoskrnl/fsrtl/dbcsname.c +++ b/reactos/ntoskrnl/fsrtl/dbcsname.c @@ -184,15 +184,7 @@ FsRtlIsDbcsInExpression(IN PANSI_STRING Expression, else if (Expression->Buffer[ExpressionPosition] == '*') { StarFound = ExpressionPosition++; - if (StarFound < (Expression->Length - 1)) - { - while (Name->Buffer[NamePosition] != Expression->Buffer[ExpressionPosition] && - NamePosition < Name->Length) - { - NamePosition++; - } - } - else + if (ExpressionPosition == Expression->Length) { NamePosition = Name->Length; } @@ -214,10 +206,15 @@ FsRtlIsDbcsInExpression(IN PANSI_STRING Expression, else if (StarFound != MAXUSHORT) { ExpressionPosition = StarFound + 1; - while (Name->Buffer[NamePosition] != Expression->Buffer[ExpressionPosition] && - NamePosition < Name->Length) + if (Expression->Buffer[ExpressionPosition] != '*' && Expression->Buffer[ExpressionPosition] != '?' && + Expression->Buffer[ExpressionPosition] != ANSI_DOS_DOT && Expression->Buffer[ExpressionPosition] != ANSI_DOS_QM && + Expression->Buffer[ExpressionPosition] != ANSI_DOS_STAR) { - NamePosition++; + while (Name->Buffer[NamePosition] != Expression->Buffer[ExpressionPosition] && + NamePosition < Name->Length) + { + NamePosition++; + } } } else diff --git a/reactos/ntoskrnl/fsrtl/name.c b/reactos/ntoskrnl/fsrtl/name.c index 0712a2b38ad..88f60c0d30f 100644 --- a/reactos/ntoskrnl/fsrtl/name.c +++ b/reactos/ntoskrnl/fsrtl/name.c @@ -44,15 +44,7 @@ FsRtlIsNameInExpressionPrivate(IN PUNICODE_STRING Expression, else if (Expression->Buffer[ExpressionPosition] == L'*') { StarFound = ExpressionPosition++; - if (StarFound < (Expression->Length / sizeof(WCHAR) - 1)) - { - while ((IgnoreCase ? UpcaseTable[Name->Buffer[NamePosition]] : Name->Buffer[NamePosition]) != Expression->Buffer[ExpressionPosition] && - NamePosition < Name->Length / sizeof(WCHAR)) - { - NamePosition++; - } - } - else + if (ExpressionPosition == Expression->Length / sizeof(WCHAR)) { NamePosition = Name->Length / sizeof(WCHAR); } @@ -74,10 +66,15 @@ FsRtlIsNameInExpressionPrivate(IN PUNICODE_STRING Expression, else if (StarFound != MAXUSHORT) { ExpressionPosition = StarFound + 1; - while ((IgnoreCase ? UpcaseTable[Name->Buffer[NamePosition]] : Name->Buffer[NamePosition]) != Expression->Buffer[ExpressionPosition] && - NamePosition < Name->Length / sizeof(WCHAR)) + if (Expression->Buffer[ExpressionPosition] != L'*' && Expression->Buffer[ExpressionPosition] != L'?' && + Expression->Buffer[ExpressionPosition] != DOS_DOT && Expression->Buffer[ExpressionPosition] != DOS_QM && + Expression->Buffer[ExpressionPosition] != DOS_STAR) { - NamePosition++; + while ((IgnoreCase ? UpcaseTable[Name->Buffer[NamePosition]] : Name->Buffer[NamePosition]) != Expression->Buffer[ExpressionPosition] && + NamePosition < Name->Length / sizeof(WCHAR)) + { + NamePosition++; + } } } else