<p>Corey Farrell has uploaded this change for <strong>review</strong>.</p><p><a href="https://gerrit.asterisk.org/10608">View Change</a></p><pre style="font-family: monospace,monospace; white-space: pre-wrap;">jansson-bundled: Patch for off-nominal crash.<br><br>pack_string crashed on non-NULL strings returned when s->has_error was<br>true if the string was the result of 's' format without '#', '%' or '+'.<br><br>Change-Id: Ic125df691d81ba2cbc413e37bdae657b304d20d0<br>---<br>A third-party/jansson/patches/0035-Remove-inappropriate-jsonp_free-which-caused-segment.patch<br>1 file changed, 58 insertions(+), 0 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;">git pull ssh://gerrit.asterisk.org:29418/asterisk refs/changes/08/10608/1</pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/third-party/jansson/patches/0035-Remove-inappropriate-jsonp_free-which-caused-segment.patch b/third-party/jansson/patches/0035-Remove-inappropriate-jsonp_free-which-caused-segment.patch</span><br><span>new file mode 100644</span><br><span>index 0000000..258fc67</span><br><span>--- /dev/null</span><br><span>+++ b/third-party/jansson/patches/0035-Remove-inappropriate-jsonp_free-which-caused-segment.patch</span><br><span>@@ -0,0 +1,58 @@</span><br><span style="color: hsl(120, 100%, 40%);">+From e262ea5fcd789d20d5d20d5d6d9c7ec06e3c00fd Mon Sep 17 00:00:00 2001</span><br><span style="color: hsl(120, 100%, 40%);">+From: Corey Farrell <git@cfware.com></span><br><span style="color: hsl(120, 100%, 40%);">+Date: Mon, 5 Nov 2018 16:43:10 -0500</span><br><span style="color: hsl(120, 100%, 40%);">+Subject: [PATCH 35/35] Remove inappropriate jsonp_free which caused</span><br><span style="color: hsl(120, 100%, 40%);">+ segmentation fault.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+pack_string should never free str on error.  This wouldn't be a problem</span><br><span style="color: hsl(120, 100%, 40%);">+except the check for `ours` was inverted.  Just remove the check for</span><br><span style="color: hsl(120, 100%, 40%);">+ours since the true condition is unreachable.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+json_vpack_ex also had an error check for s.has_error.  This can never</span><br><span style="color: hsl(120, 100%, 40%);">+be true unless value is NULL.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+Test changes removed for merging into Asterisk bundled copy.</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+Fixes #444</span><br><span style="color: hsl(120, 100%, 40%);">+---</span><br><span style="color: hsl(120, 100%, 40%);">+ src/pack_unpack.c           |  9 ++-------</span><br><span style="color: hsl(120, 100%, 40%);">+ test/suites/api/test_pack.c | 21 +++++++++++++++++++++</span><br><span style="color: hsl(120, 100%, 40%);">+ 2 files changed, 23 insertions(+), 7 deletions(-)</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span style="color: hsl(120, 100%, 40%);">+diff --git a/src/pack_unpack.c b/src/pack_unpack.c</span><br><span style="color: hsl(120, 100%, 40%);">+index ec04bc3..3b99776 100644</span><br><span style="color: hsl(120, 100%, 40%);">+--- a/src/pack_unpack.c</span><br><span>++++ b/src/pack_unpack.c</span><br><span style="color: hsl(120, 100%, 40%);">+@@ -359,9 +359,7 @@ static json_t *pack_string(scanner_t *s, va_list *ap)</span><br><span style="color: hsl(120, 100%, 40%);">+         return t == '?' && !s->has_error ? json_null() : NULL;</span><br><span style="color: hsl(120, 100%, 40%);">+ </span><br><span style="color: hsl(120, 100%, 40%);">+     if (s->has_error) {</span><br><span style="color: hsl(120, 100%, 40%);">+-        if (!ours)</span><br><span style="color: hsl(120, 100%, 40%);">+-            jsonp_free(str);</span><br><span style="color: hsl(120, 100%, 40%);">+-</span><br><span style="color: hsl(120, 100%, 40%);">++        /* It's impossible to reach this point if ours != 0, do not free str. */</span><br><span style="color: hsl(120, 100%, 40%);">+         return NULL;</span><br><span style="color: hsl(120, 100%, 40%);">+     }</span><br><span style="color: hsl(120, 100%, 40%);">+ </span><br><span style="color: hsl(120, 100%, 40%);">+@@ -853,6 +851,7 @@ json_t *json_vpack_ex(json_error_t *error, size_t flags,</span><br><span style="color: hsl(120, 100%, 40%);">+     value = pack(&s, &ap_copy);</span><br><span style="color: hsl(120, 100%, 40%);">+     va_end(ap_copy);</span><br><span style="color: hsl(120, 100%, 40%);">+ </span><br><span style="color: hsl(120, 100%, 40%);">++    /* This will cover all situations where s.has_error is true */</span><br><span style="color: hsl(120, 100%, 40%);">+     if(!value)</span><br><span style="color: hsl(120, 100%, 40%);">+         return NULL;</span><br><span style="color: hsl(120, 100%, 40%);">+ </span><br><span style="color: hsl(120, 100%, 40%);">+@@ -862,10 +861,6 @@ json_t *json_vpack_ex(json_error_t *error, size_t flags,</span><br><span style="color: hsl(120, 100%, 40%);">+         set_error(&s, "<format>", json_error_invalid_format, "Garbage after format string");</span><br><span style="color: hsl(120, 100%, 40%);">+         return NULL;</span><br><span style="color: hsl(120, 100%, 40%);">+     }</span><br><span style="color: hsl(120, 100%, 40%);">+-    if(s.has_error) {</span><br><span style="color: hsl(120, 100%, 40%);">+-        json_decref(value);</span><br><span style="color: hsl(120, 100%, 40%);">+-        return NULL;</span><br><span style="color: hsl(120, 100%, 40%);">+-    }</span><br><span style="color: hsl(120, 100%, 40%);">+ </span><br><span style="color: hsl(120, 100%, 40%);">+     return value;</span><br><span style="color: hsl(120, 100%, 40%);">+ }</span><br><span style="color: hsl(120, 100%, 40%);">+-- </span><br><span style="color: hsl(120, 100%, 40%);">+2.17.2</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.asterisk.org/10608">change 10608</a>. To unsubscribe, or for help writing mail filters, visit <a href="https://gerrit.asterisk.org/settings">settings</a>.</p><div itemscope itemtype="http://schema.org/EmailMessage"><div itemscope itemprop="action" itemtype="http://schema.org/ViewAction"><link itemprop="url" href="https://gerrit.asterisk.org/10608"/><meta itemprop="name" content="View Change"/></div></div>

<div style="display:none"> Gerrit-Project: asterisk </div>
<div style="display:none"> Gerrit-Branch: master </div>
<div style="display:none"> Gerrit-MessageType: newchange </div>
<div style="display:none"> Gerrit-Change-Id: Ic125df691d81ba2cbc413e37bdae657b304d20d0 </div>
<div style="display:none"> Gerrit-Change-Number: 10608 </div>
<div style="display:none"> Gerrit-PatchSet: 1 </div>
<div style="display:none"> Gerrit-Owner: Corey Farrell <git@cfware.com> </div>