net: zoap: Fix NULL pointer access
The code was setting pointer to null and then access it. Coverity-CID: 157575 Signed-off-by: Jukka Rissanen <jukka.rissanen@linux.intel.com>
This commit is contained in:
parent
7985e917c9
commit
7bed585c42
1 changed files with 33 additions and 21 deletions
|
@ -28,7 +28,7 @@ static bool match_path_uri(const char * const *path,
|
||||||
const char *uri, u16_t len)
|
const char *uri, u16_t len)
|
||||||
{
|
{
|
||||||
const char * const *p = NULL;
|
const char * const *p = NULL;
|
||||||
int i, j, plen;
|
int i, j, k, plen;
|
||||||
|
|
||||||
if (!path) {
|
if (!path) {
|
||||||
return false;
|
return false;
|
||||||
|
@ -46,31 +46,43 @@ static bool match_path_uri(const char * const *path,
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Go through uri and try to find a matching path */
|
||||||
for (i = 1; i < len; i++) {
|
for (i = 1; i < len; i++) {
|
||||||
if (!*p) {
|
while (*p) {
|
||||||
return false;
|
plen = strlen(*p);
|
||||||
}
|
|
||||||
|
|
||||||
if (!p) {
|
k = i;
|
||||||
|
|
||||||
|
for (j = 0; j < plen; j++) {
|
||||||
|
if (uri[k] == '*') {
|
||||||
|
if ((k + 1) == len) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (uri[k] != (*p)[j]) {
|
||||||
|
goto next;
|
||||||
|
}
|
||||||
|
|
||||||
|
k++;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (i == (k - 1) && j == plen) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (k == len && j == plen) {
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
next:
|
||||||
p++;
|
p++;
|
||||||
plen = *p ? strlen(*p) : 0;
|
|
||||||
j = 0;
|
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (j == plen && uri[i] == '/') {
|
/* Did we find the resource or not */
|
||||||
p = NULL;
|
if (i == len && !*p) {
|
||||||
continue;
|
return false;
|
||||||
}
|
|
||||||
|
|
||||||
if (uri[i] == '*' && i + 1 == len) {
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (uri[i] != (*p)[j]) {
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
j++;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue