<p>laforge <strong>submitted</strong> this change.</p><p><a href="https://gerrit.osmocom.org/c/libosmocore/+/15827">View Change</a></p><div style="white-space:pre-wrap">Approvals:
  laforge: Looks good to me, approved
  fixeria: Looks good to me, but someone else must approve
  Jenkins Builder: Verified

</div><pre style="font-family: monospace,monospace; white-space: pre-wrap;">vty: Return error if cmd returns CMD_WARNING while reading cfg file<br><br>Otherwise bad configurations can easily sneak in and produce unexpected<br>behavior.<br><br>Change-Id: Ic9c1b566ec4a459f03e6319cf369691903cf9d00<br>---<br>M src/vty/command.c<br>M tests/Makefile.am<br>A tests/vty/fail_cmd_ret_warning.cfg<br>M tests/vty/vty_test.c<br>M tests/vty/vty_test.ok<br>5 files changed, 29 insertions(+), 2 deletions(-)<br><br></pre><pre style="font-family: monospace,monospace; white-space: pre-wrap;"><span>diff --git a/src/vty/command.c b/src/vty/command.c</span><br><span>index a36f30a..6a9d18a 100644</span><br><span>--- a/src/vty/command.c</span><br><span>+++ b/src/vty/command.c</span><br><span>@@ -2631,8 +2631,7 @@</span><br><span>                 ret = cmd_execute_command_strict(vline, vty, NULL);</span><br><span>          cmd_free_strvec(vline);</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-             if (ret != CMD_SUCCESS && ret != CMD_WARNING</span><br><span style="color: hsl(0, 100%, 40%);">-                && ret != CMD_ERR_NOTHING_TODO) {</span><br><span style="color: hsl(120, 100%, 40%);">+         if (ret != CMD_SUCCESS && ret != CMD_ERR_NOTHING_TODO) {</span><br><span>                     if (indent) {</span><br><span>                                talloc_free(indent);</span><br><span>                                 indent = NULL;</span><br><span>diff --git a/tests/Makefile.am b/tests/Makefile.am</span><br><span>index e0993b1..60213ed 100644</span><br><span>--- a/tests/Makefile.am</span><br><span>+++ b/tests/Makefile.am</span><br><span>@@ -293,6 +293,7 @@</span><br><span>             vty/fail_not_de-indented.cfg \</span><br><span>       vty/fail_tabs_and_spaces.cfg \</span><br><span>       vty/fail_too_much_indent.cfg \</span><br><span style="color: hsl(120, 100%, 40%);">+        vty/fail_cmd_ret_warning.cfg \</span><br><span>       vty/ok.cfg \</span><br><span>         vty/ok_empty_parent.cfg \</span><br><span>            vty/ok_ignore_blank.cfg \</span><br><span>diff --git a/tests/vty/fail_cmd_ret_warning.cfg b/tests/vty/fail_cmd_ret_warning.cfg</span><br><span>new file mode 100644</span><br><span>index 0000000..b03f02a</span><br><span>--- /dev/null</span><br><span>+++ b/tests/vty/fail_cmd_ret_warning.cfg</span><br><span>@@ -0,0 +1,3 @@</span><br><span style="color: hsl(120, 100%, 40%);">+return-success</span><br><span style="color: hsl(120, 100%, 40%);">+return-warning</span><br><span style="color: hsl(120, 100%, 40%);">+return-success</span><br><span>diff --git a/tests/vty/vty_test.c b/tests/vty/vty_test.c</span><br><span>index 30efb9a..0d68a6c 100644</span><br><span>--- a/tests/vty/vty_test.c</span><br><span>+++ b/tests/vty/vty_test.c</span><br><span>@@ -421,8 +421,27 @@</span><br><span>       return CMD_SUCCESS;</span><br><span> }</span><br><span> </span><br><span style="color: hsl(120, 100%, 40%);">+DEFUN(cfg_ret_success, cfg_ret_success_cmd,</span><br><span style="color: hsl(120, 100%, 40%);">+     "return-success",</span><br><span style="color: hsl(120, 100%, 40%);">+   "testing return success\n")</span><br><span style="color: hsl(120, 100%, 40%);">+{</span><br><span style="color: hsl(120, 100%, 40%);">+      printf("Called: 'return-success'\n");</span><br><span style="color: hsl(120, 100%, 40%);">+       return CMD_SUCCESS;</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%);">+DEFUN(cfg_ret_warning, cfg_ret_warning_cmd,</span><br><span style="color: hsl(120, 100%, 40%);">+ "return-warning",</span><br><span style="color: hsl(120, 100%, 40%);">+   "testing return warning\n")</span><br><span style="color: hsl(120, 100%, 40%);">+{</span><br><span style="color: hsl(120, 100%, 40%);">+      printf("Called: 'return-warning'\n");</span><br><span style="color: hsl(120, 100%, 40%);">+       return CMD_WARNING;</span><br><span style="color: hsl(120, 100%, 40%);">+}</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span> void test_vty_add_cmds()</span><br><span> {</span><br><span style="color: hsl(120, 100%, 40%);">+     install_element(CONFIG_NODE, &cfg_ret_warning_cmd);</span><br><span style="color: hsl(120, 100%, 40%);">+       install_element(CONFIG_NODE, &cfg_ret_success_cmd);</span><br><span style="color: hsl(120, 100%, 40%);">+</span><br><span>    install_element(CONFIG_NODE, &cfg_level1_cmd);</span><br><span>   install_node(&level1_node, NULL);</span><br><span>        install_element(LEVEL1_NODE, &cfg_level1_child_cmd);</span><br><span>@@ -524,6 +543,7 @@</span><br><span>       test_exit_by_indent("fail_tabs_and_spaces.cfg", -EINVAL);</span><br><span>  test_exit_by_indent("ok_indented_root.cfg", 0);</span><br><span>    test_exit_by_indent("ok_empty_parent.cfg", 0);</span><br><span style="color: hsl(120, 100%, 40%);">+      test_exit_by_indent("fail_cmd_ret_warning.cfg", -EINVAL);</span><br><span> </span><br><span>      test_is_cmd_ambiguous();</span><br><span> </span><br><span>diff --git a/tests/vty/vty_test.ok b/tests/vty/vty_test.ok</span><br><span>index 2f76ff9..0b5ac9c 100644</span><br><span>--- a/tests/vty/vty_test.ok</span><br><span>+++ b/tests/vty/vty_test.ok</span><br><span>@@ -286,6 +286,10 @@</span><br><span> called level3 node k</span><br><span> called level1 child cmd k</span><br><span> got rc=0</span><br><span style="color: hsl(120, 100%, 40%);">+reading file fail_cmd_ret_warning.cfg, expecting rc=-22</span><br><span style="color: hsl(120, 100%, 40%);">+Called: 'return-success'</span><br><span style="color: hsl(120, 100%, 40%);">+Called: 'return-warning'</span><br><span style="color: hsl(120, 100%, 40%);">+got rc=-22</span><br><span> Going to test is_cmd_ambiguous()</span><br><span> Going to execute 'ambiguous_nr'</span><br><span> Called: 'ambiguous_nr [<0-23>]' (argc=0)</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/c/libosmocore/+/15827">change 15827</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/c/libosmocore/+/15827"/><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-Change-Id: Ic9c1b566ec4a459f03e6319cf369691903cf9d00 </div>
<div style="display:none"> Gerrit-Change-Number: 15827 </div>
<div style="display:none"> Gerrit-PatchSet: 3 </div>
<div style="display:none"> Gerrit-Owner: pespin <pespin@sysmocom.de> </div>
<div style="display:none"> Gerrit-Reviewer: Jenkins Builder </div>
<div style="display:none"> Gerrit-Reviewer: fixeria <axilirator@gmail.com> </div>
<div style="display:none"> Gerrit-Reviewer: laforge <laforge@osmocom.org> </div>
<div style="display:none"> Gerrit-MessageType: merged </div>