1
0
mirror of https://github.com/samba-team/samba.git synced 2025-01-22 22:04:08 +03:00

lib/util: clang: Fix a dereference of a null pointer warning(s)

Fixes:

lib/util/ms_fnmatch.c:75:8: warning: Access to field 'predot' results in a dereference of a null pointer (loaded from variable 'max_n') <--[clang]
                        if (max_n->predot && max_n->predot <= n) {
                            ^
lib/util/ms_fnmatch.c:91:8: warning: Access to field 'predot' results in a dereference of a null pointer (loaded from variable 'max_n') <--[clang]
                        if (max_n->predot && max_n->predot <= n) {

Signed-off-by: Noel Power <noel.power@suse.com>
Reviewed-by: Gary Lockyer gary@catalyst.net.nz
This commit is contained in:
Noel Power 2019-05-24 14:03:37 +00:00 committed by Noel Power
parent add47e288b
commit acd6554206

View File

@ -72,7 +72,8 @@ static int ms_fnmatch_core(const char *p, const char *n,
switch (c) { switch (c) {
case '*': case '*':
/* a '*' matches zero or more characters of any type */ /* a '*' matches zero or more characters of any type */
if (max_n->predot && max_n->predot <= n) { if (max_n != NULL && max_n->predot &&
max_n->predot <= n) {
return null_match(p); return null_match(p);
} }
for (i=0; n[i]; i += size_n) { for (i=0; n[i]; i += size_n) {
@ -81,17 +82,22 @@ static int ms_fnmatch_core(const char *p, const char *n,
return 0; return 0;
} }
} }
if (!max_n->predot || max_n->predot > n) max_n->predot = n; if (max_n != NULL && (!max_n->predot ||
max_n->predot > n)) {
max_n->predot = n;
}
return null_match(p); return null_match(p);
case '<': case '<':
/* a '<' matches zero or more characters of /* a '<' matches zero or more characters of
any type, but stops matching at the last any type, but stops matching at the last
'.' in the string. */ '.' in the string. */
if (max_n->predot && max_n->predot <= n) { if (max_n != NULL && max_n->predot &&
max_n->predot <= n) {
return null_match(p); return null_match(p);
} }
if (max_n->postdot && max_n->postdot <= n && n <= ldot) { if (max_n != NULL && max_n->postdot &&
max_n->postdot <= n && n <= ldot) {
return -1; return -1;
} }
for (i=0; n[i]; i += size_n) { for (i=0; n[i]; i += size_n) {
@ -99,11 +105,19 @@ static int ms_fnmatch_core(const char *p, const char *n,
if (ms_fnmatch_core(p, n+i, max_n+1, ldot, is_case_sensitive) == 0) return 0; if (ms_fnmatch_core(p, n+i, max_n+1, ldot, is_case_sensitive) == 0) return 0;
if (n+i == ldot) { if (n+i == ldot) {
if (ms_fnmatch_core(p, n+i+size_n, max_n+1, ldot, is_case_sensitive) == 0) return 0; if (ms_fnmatch_core(p, n+i+size_n, max_n+1, ldot, is_case_sensitive) == 0) return 0;
if (!max_n->postdot || max_n->postdot > n) max_n->postdot = n; if (max_n != NULL) {
if (!max_n->postdot ||
max_n->postdot > n) {
max_n->postdot = n;
}
}
return -1; return -1;
} }
} }
if (!max_n->predot || max_n->predot > n) max_n->predot = n; if (max_n != NULL && (!max_n->predot ||
max_n->predot > n)) {
max_n->predot = n;
}
return null_match(p); return null_match(p);
case '?': case '?':