<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>