aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorDaniel Willmann <dwillmann@sysmocom.de>2015-10-08 16:10:24 +0200
committerHolger Hans Peter Freyther <holger@moiji-mobile.com>2015-10-12 09:05:48 +0200
commit6cf0249dacc4ae46eb0857c007906c9a3f128a3e (patch)
tree16a90d9a92558440de4e390965d58773865dea62
parentcdeb815c78f4cdd5eb38995ea3f8550c637a1561 (diff)
gprs: Use RAND_bytes for p-tmsi
[hfreyther: Link to libcrypto, include header, add uint8_t* cast]
-rw-r--r--openbsc/src/gprs/Makefile.am3
-rw-r--r--openbsc/src/gprs/gprs_sgsn.c6
-rw-r--r--openbsc/tests/sgsn/Makefile.am1
3 files changed, 8 insertions, 2 deletions
diff --git a/openbsc/src/gprs/Makefile.am b/openbsc/src/gprs/Makefile.am
index f46a4025..dcc6842d 100644
--- a/openbsc/src/gprs/Makefile.am
+++ b/openbsc/src/gprs/Makefile.am
@@ -30,4 +30,5 @@ osmo_sgsn_SOURCES = gprs_gmm.c gprs_sgsn.c gprs_sndcp.c gprs_sndcp_vty.c \
gsm_04_08_gprs.c sgsn_cdr.c sgsn_ares.c
osmo_sgsn_LDADD = \
$(top_builddir)/src/libcommon/libcommon.a \
- -lgtp $(OSMO_LIBS) $(LIBOSMOABIS_LIBS) $(LIBCARES_LIBS) -lrt
+ -lgtp $(OSMO_LIBS) $(LIBOSMOABIS_LIBS) $(LIBCARES_LIBS) \
+ $(LIBCRYPTO_LIBS) -lrt
diff --git a/openbsc/src/gprs/gprs_sgsn.c b/openbsc/src/gprs/gprs_sgsn.c
index f40de0b3..9b11c351 100644
--- a/openbsc/src/gprs/gprs_sgsn.c
+++ b/openbsc/src/gprs/gprs_sgsn.c
@@ -41,6 +41,8 @@
#include <time.h>
+#include <openssl/rand.h>
+
#define GPRS_LLME_CHECK_TICK 30
extern struct sgsn_instance *sgsn;
@@ -525,7 +527,9 @@ uint32_t sgsn_alloc_ptmsi(void)
int max_retries = 100;
restart:
- ptmsi = rand();
+ if (RAND_bytes((uint8_t *) &ptmsi, sizeof(ptmsi)) != 1)
+ goto failed;
+
/* Enforce that the 2 MSB are set without loosing the distance between
* identical values. Since rand() has no duplicate values within a
* period (because the size of the state is the same like the size of
diff --git a/openbsc/tests/sgsn/Makefile.am b/openbsc/tests/sgsn/Makefile.am
index 3c202ddf..0308b1b1 100644
--- a/openbsc/tests/sgsn/Makefile.am
+++ b/openbsc/tests/sgsn/Makefile.am
@@ -34,5 +34,6 @@ sgsn_test_LDADD = \
$(LIBOSMOGSM_LIBS) \
$(LIBOSMOGB_LIBS) \
$(LIBCARES_LIBS) \
+ $(LIBCRYPTO_LIBS) \
-lgtp -lrt