git://git.exim.org
/
exim.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Fix json extract operator for unfound case
[exim.git]
/
src
/
src
/
expand.c
diff --git
a/src/src/expand.c
b/src/src/expand.c
index 4dc13ff4847b731411eef6cf4502082543e2baf2..d36d376455787938db4e4d4f50c1e2b244fddfca 100644
(file)
--- a/
src/src/expand.c
+++ b/
src/src/expand.c
@@
-3893,7
+3893,8
@@
return NULL;
/* Pull off the leading array or object element, returning
a copy in an allocated string. Update the list pointer.
/* Pull off the leading array or object element, returning
a copy in an allocated string. Update the list pointer.
-The element may itself be an abject or array.
+The element may itself be an object or array.
+Return NULL when the list is empty.
*/
uschar *
*/
uschar *
@@
-3915,6
+3916,7
@@
for (item = s;
case '}': object_depth--; break;
}
*list = *s ? s+1 : s;
case '}': object_depth--; break;
}
*list = *s ? s+1 : s;
+if (item == s) return NULL;
item = string_copyn(item, s - item);
DEBUG(D_expand) debug_printf_indent(" json ele: '%s'\n", item);
return US item;
item = string_copyn(item, s - item);
DEBUG(D_expand) debug_printf_indent(" json ele: '%s'\n", item);
return US item;
@@
-5776,10
+5778,11
@@
while (*s != 0)
}
while (field_number > 0 && (item = json_nextinlist(&list)))
field_number--;
}
while (field_number > 0 && (item = json_nextinlist(&list)))
field_number--;
- s = item;
- lookup_value = s;
- while (*s) s++;
- while (--s >= lookup_value && isspace(*s)) *s = '\0';
+ if ((lookup_value = s = item))
+ {
+ while (*s) s++;
+ while (--s >= lookup_value && isspace(*s)) *s = '\0';
+ }
}
else
{
}
else
{