https://bugs.exim.org/show_bug.cgi?id=2322

--- Comment #10 from Git Commit <[email protected]> ---
Git commit:
https://git.exim.org/exim.git/commitdiff/9d03af0a7d6bfcc13156ce8fd676ce00dd32d228

commit 9d03af0a7d6bfcc13156ce8fd676ce00dd32d228
Author:     Jeremy Harris <[email protected]>
AuthorDate: Sun Sep 30 21:42:40 2018 +0100
Commit:     Jeremy Harris <[email protected]>
CommitDate: Sun Sep 30 21:42:40 2018 +0100

    Expansions: fix json extract for de-wrapping nested objects.  Bug 2322
---
 src/src/expand.c | 18 +++++++++++++-----
 1 file changed, 13 insertions(+), 5 deletions(-)

diff --git a/src/src/expand.c b/src/src/expand.c
index 43f572e..4a88b44 100644
--- a/src/src/expand.c
+++ b/src/src/expand.c
@@ -3869,6 +3869,8 @@ static uschar *
 dewrap(uschar * s, const uschar * wrap)
 {
 uschar * p = s;
+unsigned depth = 0;
+BOOL quotesmode = wrap[0] == wrap[1];

 while (isspace(*p)) p++;

@@ -3879,11 +3881,15 @@ if (*p == *wrap)
   while (*p)
     {
     if (*p == '\\') p++;
+    else if (!quotesmode && *p == wrap[-1]) depth++;
     else if (*p == *wrap)
-      {
-      *p = '\0';
-      return s;
-      }
+      if (depth == 0)
+    {
+    *p = '\0';
+    return s;
+    }
+      else
+    depth--;
     p++;
     }
   }
@@ -3917,7 +3923,9 @@ for (item = s;
     case '}': object_depth--; break;
     }
 *list = *s ? s+1 : s;
-return string_copyn(item, s - item);
+item = string_copyn(item, s - item);
+DEBUG(D_expand) debug_printf_indent("  json ele: '%s'\n", item);
+return US item;
 }

-- 
You are receiving this mail because:
You are on the CC list for the bug.
-- 
## List details at https://lists.exim.org/mailman/listinfo/exim-dev Exim 
details at http://www.exim.org/ ##

Reply via email to