From 7590ff3fd6cde4264f6e7961f8d9dcafbb526271 Mon Sep 17 00:00:00 2001 From: Neels Hofmeyr Date: Fri, 12 May 2017 15:37:27 +0200 Subject: fix subscriber random extension allocation range The VTY config allows above 32bit range extensions, but db_subscriber_alloc_exten() was unable to generate extensions outside of 32bit. Add VTY regression test and fix the problem by using proper 64bit types. Related: OS#2253 Change-Id: I9afe6a8833004ecd2f3f936b2d5aa4de8e7dbcb0 --- openbsc/src/libmsc/db.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) (limited to 'openbsc/src') diff --git a/openbsc/src/libmsc/db.c b/openbsc/src/libmsc/db.c index 9fa64152f..5fe2a3c6b 100644 --- a/openbsc/src/libmsc/db.c +++ b/openbsc/src/libmsc/db.c @@ -1260,13 +1260,13 @@ int db_subscriber_alloc_exten(struct gsm_subscriber *subscriber, uint64_t smin, uint64_t smax) { dbi_result result = NULL; - uint32_t try; + uint64_t try; for (;;) { try = (rand() % (smax - smin + 1) + smin); result = dbi_conn_queryf(conn, "SELECT * FROM Subscriber " - "WHERE extension = %i", + "WHERE extension = %"PRIu64, try ); if (!result) { @@ -1284,8 +1284,8 @@ int db_subscriber_alloc_exten(struct gsm_subscriber *subscriber, uint64_t smin, } dbi_result_free(result); } - sprintf(subscriber->extension, "%i", try); - DEBUGP(DDB, "Allocated extension %i for IMSI %s.\n", try, subscriber->imsi); + sprintf(subscriber->extension, "%"PRIu64, try); + DEBUGP(DDB, "Allocated extension %"PRIu64 " for IMSI %s.\n", try, subscriber->imsi); return db_sync_subscriber(subscriber); } /* -- cgit v1.2.3