summaryrefslogtreecommitdiff
path: root/fs/cifsd/misc.c
diff options
context:
space:
mode:
Diffstat (limited to 'fs/cifsd/misc.c')
-rw-r--r--fs/cifsd/misc.c7
1 files changed, 5 insertions, 2 deletions
diff --git a/fs/cifsd/misc.c b/fs/cifsd/misc.c
index 68983b08d519..189b90414976 100644
--- a/fs/cifsd/misc.c
+++ b/fs/cifsd/misc.c
@@ -22,20 +22,22 @@
* TODO : implement consideration about DOS_DOT, DOS_QM and DOS_STAR
*
* @string: string to compare with a pattern
+ * @len: string length
* @pattern: pattern string which might include wildcard '*' and '?'
*
* Return: 0 if pattern matched with the string, otherwise non zero value
*/
-int match_pattern(const char *str, const char *pattern)
+int match_pattern(const char *str, size_t len, const char *pattern)
{
const char *s = str;
const char *p = pattern;
bool star = false;
- while (*s) {
+ while (*s && len) {
switch (*p) {
case '?':
s++;
+ len--;
p++;
break;
case '*':
@@ -48,6 +50,7 @@ int match_pattern(const char *str, const char *pattern)
default:
if (tolower(*s) == tolower(*p)) {
s++;
+ len--;
p++;
} else {
if (!star)