<p>Harald Welte <strong>merged</strong> this change.</p><p><a href="https://gerrit.osmocom.org/11132">View Change</a></p><div style="white-space:pre-wrap">Approvals:
  Jenkins Builder: Verified
  Vadim Yanitskiy: Looks good to me, but someone else must approve
  Harald Welte: Looks good to me, approved

</div><pre style="font-family: monospace,monospace; white-space: pre-wrap;">osmo-config-merge: Fix some small issues<br><br>Allocate NULL context after exit_usage() calls and free it before exit<br>so * sanitizer is happy.<br>Also handle the error cases gracefully when a file is unreadable or<br>formatted wrong.<br><br>Change-Id: I966e63a3f7d0ff71ee0b88922aa3807d073aa232<br>---<br>M utils/osmo-config-merge.c<br>1 file changed, 15 insertions(+), 4 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/utils/osmo-config-merge.c b/utils/osmo-config-merge.c</span><br><span>index c76e42d..a872d64 100644</span><br><span>--- a/utils/osmo-config-merge.c</span><br><span>+++ b/utils/osmo-config-merge.c</span><br><span>@@ -44,6 +44,7 @@</span><br><span> </span><br><span> #include <stdio.h></span><br><span> #include <string.h></span><br><span style="color: hsl(120, 100%, 40%);">+#include <errno.h></span><br><span> </span><br><span> #include <osmocom/core/linuxlist.h></span><br><span> #include <osmocom/core/talloc.h></span><br><span>@@ -126,8 +127,11 @@</span><br><span>       unsigned int line_num = 0;</span><br><span> </span><br><span>       infile = fopen(fname, "r");</span><br><span style="color: hsl(0, 100%, 40%);">-   if (!infile)</span><br><span style="color: hsl(120, 100%, 40%);">+  if (!infile) {</span><br><span style="color: hsl(120, 100%, 40%);">+                fprintf(stderr, "Could not open file '%s': %s\n",</span><br><span style="color: hsl(120, 100%, 40%);">+                   fname, strerror(errno));</span><br><span>             return NULL;</span><br><span style="color: hsl(120, 100%, 40%);">+  }</span><br><span> </span><br><span>        root = node_alloc(ctx);</span><br><span>      last = root;</span><br><span>@@ -140,7 +144,7 @@</span><br><span>                   if (indent > cur_indent+1) {</span><br><span>                              fprintf(stderr, "File '%s' isn't well-formed in line %u, aborting!\n",</span><br><span>                                         fname, line_num);</span><br><span style="color: hsl(0, 100%, 40%);">-                               exit(2);</span><br><span style="color: hsl(120, 100%, 40%);">+                              return NULL;</span><br><span>                         }</span><br><span>                    /* new child to last node */</span><br><span>                         n = node_alloc_child(last);</span><br><span>@@ -229,8 +233,7 @@</span><br><span>    const char *base_fname, *patch_fname;</span><br><span>        struct node *base_tree, *patch_tree;</span><br><span>         bool debug_enabled = false;</span><br><span style="color: hsl(0, 100%, 40%);">-</span><br><span style="color: hsl(0, 100%, 40%);">-     void *ctx = talloc_named_const(NULL, 0, "root");</span><br><span style="color: hsl(120, 100%, 40%);">+    void *ctx;</span><br><span> </span><br><span>       if (argc < 3)</span><br><span>             exit_usage(1);</span><br><span>@@ -245,9 +248,16 @@</span><br><span>                        exit_usage(1);</span><br><span>       }</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+ ctx = talloc_named_const(NULL, 0, "root");</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span>       base_tree = file_read(ctx, base_fname);</span><br><span>      patch_tree = file_read(ctx, patch_fname);</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+ if (!base_tree || ! patch_tree) {</span><br><span style="color: hsl(120, 100%, 40%);">+             talloc_free(ctx);</span><br><span style="color: hsl(120, 100%, 40%);">+             return 2;</span><br><span style="color: hsl(120, 100%, 40%);">+     }</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span>  if (debug_enabled) {</span><br><span>                 fprintf(stderr, "====== dumping tree (base)\n");</span><br><span>           dump_node(base_tree, stderr, true);</span><br><span>@@ -265,6 +275,7 @@</span><br><span>    /* make AddressSanitizer / LeakSanitizer happy by recursively freeing the trees */</span><br><span>   talloc_free(patch_tree);</span><br><span>     talloc_free(base_tree);</span><br><span style="color: hsl(120, 100%, 40%);">+       talloc_free(ctx);</span><br><span> </span><br><span>        return 0;</span><br><span> }</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/11132">change 11132</a>. To unsubscribe, or for help writing mail filters, visit <a href="https://gerrit.osmocom.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.osmocom.org/11132"/><meta itemprop="name" content="View Change"/></div></div>

<div style="display:none"> Gerrit-Project: libosmocore </div>
<div style="display:none"> Gerrit-Branch: master </div>
<div style="display:none"> Gerrit-MessageType: merged </div>
<div style="display:none"> Gerrit-Change-Id: I966e63a3f7d0ff71ee0b88922aa3807d073aa232 </div>
<div style="display:none"> Gerrit-Change-Number: 11132 </div>
<div style="display:none"> Gerrit-PatchSet: 4 </div>
<div style="display:none"> Gerrit-Owner: daniel <dwillmann@sysmocom.de> </div>
<div style="display:none"> Gerrit-Reviewer: Harald Welte <laforge@gnumonks.org> </div>
<div style="display:none"> Gerrit-Reviewer: Jenkins Builder (1000002) </div>
<div style="display:none"> Gerrit-Reviewer: Vadim Yanitskiy <axilirator@gmail.com> </div>
<div style="display:none"> Gerrit-Reviewer: daniel <dwillmann@sysmocom.de> </div>