aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorNeels Hofmeyr <nhofmeyr@sysmocom.de>2017-05-12 14:56:25 +0200
committerNeels Hofmeyr <nhofmeyr@sysmocom.de>2017-05-12 15:43:18 +0200
commit34ce3d93c52a734a7380114254a14ce8bcc77bb1 (patch)
tree0d260153b3d9b5db85ee11959467e443c3efc26a
parent5121576b0c6c323ae5f92d8d987b8c0899d99db0 (diff)
fix VTY parsing: subscriber-create-on-demand random
Fix parsing of the 'subscriber-create-on-demand random' VTY: atoi() is not enough to include the specified range of 1-9999999999. Use atoll() instead to ensure a large enough number space also on 32bit systems. (Note: for me, atoll() truncates at 32 bit when <stdlib.h> is not included.) Add a VTY regression test for this. Related: OS#2253 Change-Id: I353e04481ec567adca383d6b51ba8fb865eed73e
-rw-r--r--openbsc/src/libmsc/vty_interface_layer3.c2
-rw-r--r--openbsc/tests/vty_test_runner.py11
2 files changed, 12 insertions, 1 deletions
diff --git a/openbsc/src/libmsc/vty_interface_layer3.c b/openbsc/src/libmsc/vty_interface_layer3.c
index f631bccdf..e50329104 100644
--- a/openbsc/src/libmsc/vty_interface_layer3.c
+++ b/openbsc/src/libmsc/vty_interface_layer3.c
@@ -1079,7 +1079,7 @@ DEFUN(cfg_nitb_subscr_random, cfg_nitb_subscr_random_cmd,
"Minimum for subscriber extension\n""Maximum for subscriber extension\n")
{
struct gsm_network *gsmnet = gsmnet_from_vty(vty);
- uint64_t mi = atoi(argv[0]), ma = atoi(argv[1]);
+ uint64_t mi = atoll(argv[0]), ma = atoll(argv[1]);
gsmnet->auto_create_subscr = true;
gsmnet->auto_assign_exten = true;
if (mi >= ma) {
diff --git a/openbsc/tests/vty_test_runner.py b/openbsc/tests/vty_test_runner.py
index 305c956d7..b8869116f 100644
--- a/openbsc/tests/vty_test_runner.py
+++ b/openbsc/tests/vty_test_runner.py
@@ -476,6 +476,17 @@ class TestVTYNITB(TestVTYGenericBSC):
res = self.vty.command('show subscriber imsi '+imsi)
self.assert_(('% No subscriber found for imsi ' + imsi) == res)
+ # range
+ self.vty.command("end")
+ self.vty.command("configure terminal")
+ self.vty.command("nitb")
+ self.assertTrue(self.vty.verify("subscriber-create-on-demand random 9999999998 9999999999", ['']))
+ res = self.vty.command("show running-config")
+ self.assert_(res.find("subscriber-create-on-demand random 9999999998 9999999999"))
+ self.vty.command("end")
+
+
+
def testSubscriberSettings(self):
self.vty.enable()