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
This commit is contained in:
Neels Hofmeyr 2017-05-12 14:56:25 +02:00
parent 5121576b0c
commit 34ce3d93c5
2 changed files with 12 additions and 1 deletions

View File

@ -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) {

View File

@ -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()