<p>pespin <strong>merged</strong> this change.</p><p><a href="https://gerrit.osmocom.org/c/libosmocore/+/14422">View Change</a></p><div style="white-space:pre-wrap">Approvals:
  Jenkins Builder: Verified
  fixeria: Looks good to me, approved
  osmith: Looks good to me, approved

</div><pre style="font-family: monospace,monospace; white-space: pre-wrap;">vty: command.c: Fix is_cmd_ambiguous() returning always 0<br><br>inner block defined variable "enum match_type ret" was being masking<br>outter block variable "int ret = 0". The ret variable was being given<br>non zero values only inside the inner block, so that change was done on<br>the inner variable and not the outer one, which is returned.<br><br>Fixes: 5314c513f23688462d7f7937e5ae5e0d5cd4548e<br>Change-Id: Iec87d7db49a096d07e38ff8a060b923a52bfd6ba<br>---<br>M src/vty/command.c<br>M tests/tdef/tdef_vty_test_config_root.vty<br>M tests/vty/vty_transcript_test.vty<br>3 files changed, 14 insertions(+), 43 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 6380487..e9690bb 100644</span><br><span>--- a/src/vty/command.c</span><br><span>+++ b/src/vty/command.c</span><br><span>@@ -1521,7 +1521,7 @@</span><br><span>                                if (!desc)</span><br><span>                                   continue;</span><br><span> </span><br><span style="color: hsl(0, 100%, 40%);">-                           enum match_type ret;</span><br><span style="color: hsl(120, 100%, 40%);">+                          enum match_type mtype;</span><br><span>                               const char *str = desc->cmd;</span><br><span> </span><br><span>                          if (CMD_OPTION(str)) {</span><br><span>@@ -1573,10 +1573,10 @@</span><br><span>                                             match++;</span><br><span>                                     break;</span><br><span>                               case ipv6_prefix_match:</span><br><span style="color: hsl(0, 100%, 40%);">-                                 if ((ret =</span><br><span style="color: hsl(120, 100%, 40%);">+                                    if ((mtype =</span><br><span>                                              cmd_ipv6_prefix_match</span><br><span>                                        (command)) != no_match) {</span><br><span style="color: hsl(0, 100%, 40%);">-                                          if (ret == partly_match) {</span><br><span style="color: hsl(120, 100%, 40%);">+                                            if (mtype == partly_match) {</span><br><span>                                                         ret = 2;        /* There is incomplete match. */</span><br><span>                                                     goto free_and_return;</span><br><span>                                                }</span><br><span>@@ -1590,10 +1590,10 @@</span><br><span>                                          match++;</span><br><span>                                     break;</span><br><span>                               case ipv4_prefix_match:</span><br><span style="color: hsl(0, 100%, 40%);">-                                 if ((ret =</span><br><span style="color: hsl(120, 100%, 40%);">+                                    if ((mtype =</span><br><span>                                              cmd_ipv4_prefix_match</span><br><span>                                        (command)) != no_match) {</span><br><span style="color: hsl(0, 100%, 40%);">-                                          if (ret == partly_match) {</span><br><span style="color: hsl(120, 100%, 40%);">+                                            if (mtype == partly_match) {</span><br><span>                                                         ret = 2;        /* There is incomplete match. */</span><br><span>                                                     goto free_and_return;</span><br><span>                                                }</span><br><span>diff --git a/tests/tdef/tdef_vty_test_config_root.vty b/tests/tdef/tdef_vty_test_config_root.vty</span><br><span>index e7c96ca..8613ff3 100644</span><br><span>--- a/tests/tdef/tdef_vty_test_config_root.vty</span><br><span>+++ b/tests/tdef/tdef_vty_test_config_root.vty</span><br><span>@@ -115,32 +115,13 @@</span><br><span> % Invalid T timer argument (should be 'T1234' or 'X1234'): 'T-123'</span><br><span> </span><br><span> tdef_vty_test(config)# do show timer t</span><br><span style="color: hsl(0, 100%, 40%);">-tea: T1 = 50 s        Water Boiling Timeout (default: 50 s)</span><br><span style="color: hsl(0, 100%, 40%);">-tea: T2 = 300 s    Tea brewing (default: 300 s)</span><br><span style="color: hsl(0, 100%, 40%);">-tea: T3 = 5 m       Let tea cool down before drinking (default: 5 m)</span><br><span style="color: hsl(0, 100%, 40%);">-tea: T4 = 20 m  Forgot to drink tea while it's warm (default: 20 m)</span><br><span style="color: hsl(0, 100%, 40%);">-test: T1 = 100 s Testing a hundred seconds (default: 100 s)</span><br><span style="color: hsl(0, 100%, 40%);">-test: T2 = 100 ms     Testing a hundred milliseconds (default: 100 ms)</span><br><span style="color: hsl(0, 100%, 40%);">-test: T3 = 100 m        Testing a hundred minutes (default: 100 m)</span><br><span style="color: hsl(0, 100%, 40%);">-test: T4 = 100        Testing a hundred potatoes (default: 100)</span><br><span style="color: hsl(0, 100%, 40%);">-test: T2147483647 = 4294967295 m       Very large (default: 4294967295 m)</span><br><span style="color: hsl(0, 100%, 40%);">-test: X23 = 239471 s  Negative T number (default: 239471 s)</span><br><span style="color: hsl(120, 100%, 40%);">+% Ambiguous command.</span><br><span> </span><br><span> tdef_vty_test(config)# do show timer te</span><br><span style="color: hsl(0, 100%, 40%);">-tea: T1 = 50 s        Water Boiling Timeout (default: 50 s)</span><br><span style="color: hsl(0, 100%, 40%);">-tea: T2 = 300 s    Tea brewing (default: 300 s)</span><br><span style="color: hsl(0, 100%, 40%);">-tea: T3 = 5 m       Let tea cool down before drinking (default: 5 m)</span><br><span style="color: hsl(0, 100%, 40%);">-tea: T4 = 20 m  Forgot to drink tea while it's warm (default: 20 m)</span><br><span style="color: hsl(0, 100%, 40%);">-test: T1 = 100 s Testing a hundred seconds (default: 100 s)</span><br><span style="color: hsl(0, 100%, 40%);">-test: T2 = 100 ms     Testing a hundred milliseconds (default: 100 ms)</span><br><span style="color: hsl(0, 100%, 40%);">-test: T3 = 100 m        Testing a hundred minutes (default: 100 m)</span><br><span style="color: hsl(0, 100%, 40%);">-test: T4 = 100        Testing a hundred potatoes (default: 100)</span><br><span style="color: hsl(0, 100%, 40%);">-test: T2147483647 = 4294967295 m       Very large (default: 4294967295 m)</span><br><span style="color: hsl(0, 100%, 40%);">-test: X23 = 239471 s  Negative T number (default: 239471 s)</span><br><span style="color: hsl(120, 100%, 40%);">+% Ambiguous command.</span><br><span> </span><br><span> tdef_vty_test(config)# do show timer te T2</span><br><span style="color: hsl(0, 100%, 40%);">-tea: T2 = 300 s    Tea brewing (default: 300 s)</span><br><span style="color: hsl(0, 100%, 40%);">-test: T2 = 100 ms   Testing a hundred milliseconds (default: 100 ms)</span><br><span style="color: hsl(120, 100%, 40%);">+% Ambiguous command.</span><br><span> </span><br><span> </span><br><span> tdef_vty_test(config)# timer tea 3 30</span><br><span>@@ -174,20 +155,10 @@</span><br><span> tea: T4 = 20 m       Forgot to drink tea while it's warm (default: 20 m)</span><br><span> </span><br><span> tdef_vty_test(config)# timer t</span><br><span style="color: hsl(0, 100%, 40%);">-tea: T1 = 50 s     Water Boiling Timeout (default: 50 s)</span><br><span style="color: hsl(0, 100%, 40%);">-tea: T2 = 300 s    Tea brewing (default: 300 s)</span><br><span style="color: hsl(0, 100%, 40%);">-tea: T3 = 32 m      Let tea cool down before drinking (default: 5 m)</span><br><span style="color: hsl(0, 100%, 40%);">-tea: T4 = 20 m  Forgot to drink tea while it's warm (default: 20 m)</span><br><span style="color: hsl(0, 100%, 40%);">-test: T1 = 100 s Testing a hundred seconds (default: 100 s)</span><br><span style="color: hsl(0, 100%, 40%);">-test: T2 = 100 ms     Testing a hundred milliseconds (default: 100 ms)</span><br><span style="color: hsl(0, 100%, 40%);">-test: T3 = 100 m        Testing a hundred minutes (default: 100 m)</span><br><span style="color: hsl(0, 100%, 40%);">-test: T4 = 100        Testing a hundred potatoes (default: 100)</span><br><span style="color: hsl(0, 100%, 40%);">-test: T2147483647 = 4294967295 m       Very large (default: 4294967295 m)</span><br><span style="color: hsl(0, 100%, 40%);">-test: X23 = 239471 s  Negative T number (default: 239471 s)</span><br><span style="color: hsl(120, 100%, 40%);">+% Ambiguous command.</span><br><span> </span><br><span> tdef_vty_test(config)# timer te T2</span><br><span style="color: hsl(0, 100%, 40%);">-tea: T2 = 300 s    Tea brewing (default: 300 s)</span><br><span style="color: hsl(0, 100%, 40%);">-test: T2 = 100 ms   Testing a hundred milliseconds (default: 100 ms)</span><br><span style="color: hsl(120, 100%, 40%);">+% Ambiguous command.</span><br><span> </span><br><span> tdef_vty_test(config)# timer test T2 100</span><br><span> </span><br><span>@@ -195,7 +166,7 @@</span><br><span> % Error: no timers found</span><br><span> </span><br><span> tdef_vty_test(config)# timer te T2 100</span><br><span style="color: hsl(0, 100%, 40%);">-% Error: no timers found</span><br><span style="color: hsl(120, 100%, 40%);">+% Ambiguous command.</span><br><span> </span><br><span> </span><br><span> tdef_vty_test(config)# do show timer software</span><br><span>diff --git a/tests/vty/vty_transcript_test.vty b/tests/vty/vty_transcript_test.vty</span><br><span>index 27dacdc..5ed3c1d 100644</span><br><span>--- a/tests/vty/vty_transcript_test.vty</span><br><span>+++ b/tests/vty/vty_transcript_test.vty</span><br><span>@@ -19,7 +19,7 @@</span><br><span> ok argc=1 o</span><br><span> </span><br><span> vty_transcript_test> multi0 t</span><br><span style="color: hsl(0, 100%, 40%);">-ok argc=1 t</span><br><span style="color: hsl(120, 100%, 40%);">+% Ambiguous command.</span><br><span> </span><br><span> vty_transcript_test> multi0 th</span><br><span> ok argc=1 th</span><br><span>@@ -42,7 +42,7 @@</span><br><span> ok argc=1 o</span><br><span> </span><br><span> vty_transcript_test> multi1 t</span><br><span style="color: hsl(0, 100%, 40%);">-ok argc=1 t</span><br><span style="color: hsl(120, 100%, 40%);">+% Ambiguous command.</span><br><span> </span><br><span> vty_transcript_test> multi1 th</span><br><span> ok argc=1 th</span><br><span>@@ -74,4 +74,4 @@</span><br><span> ok argc=1 on</span><br><span> </span><br><span> vty_transcript_test> multi2 t</span><br><span style="color: hsl(0, 100%, 40%);">-ok argc=1 t</span><br><span style="color: hsl(120, 100%, 40%);">+% Ambiguous command.</span><br><span></span><br></pre><p>To view, visit <a href="https://gerrit.osmocom.org/c/libosmocore/+/14422">change 14422</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/+/14422"/><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: Iec87d7db49a096d07e38ff8a060b923a52bfd6ba </div>
<div style="display:none"> Gerrit-Change-Number: 14422 </div>
<div style="display:none"> Gerrit-PatchSet: 2 </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: osmith <osmith@sysmocom.de> </div>
<div style="display:none"> Gerrit-Reviewer: pespin <pespin@sysmocom.de> </div>
<div style="display:none"> Gerrit-MessageType: merged </div>