This is merely a historical archive of years 2008-2021, before the migration to mailman3.
A maintained and still updated list archive can be found at https://lists.osmocom.org/hyperkitty/list/gerrit-log@lists.osmocom.org/.
Max gerrit-no-reply at lists.osmocom.orgHello Jenkins Builder, I'd like you to reexamine a change. Please visit https://gerrit.osmocom.org/4593 to look at the new patch set (#2). Enable GnuTLS fallback On systems with GNU/Linux kernel older than 3.17 (Debian 8 "jessie" for example) the osmo_get_rand_id() would always return failure. To support such systems, let's add fallback code which uses GnuTLS library. It have to be enabled explicitly via '--enable-gnutls' option at compile-time. Related: OS#1694 Change-Id: Ic77866ce65acf524b768882c751a4f9c0635740b --- M configure.ac M src/gsm/Makefile.am M src/gsm/gsm_utils.c 3 files changed, 33 insertions(+), 0 deletions(-) git pull ssh://gerrit.osmocom.org:29418/libosmocore refs/changes/93/4593/2 diff --git a/configure.ac b/configure.ac index d9390cf..4cfc451 100644 --- a/configure.ac +++ b/configure.ac @@ -130,6 +130,24 @@ AM_CONDITIONAL(ENABLE_PCSC, test "x$ENABLE_PCSC" = "xyes") AC_SUBST(ENABLE_PCSC) +AC_ARG_ENABLE(gnutls, + [AS_HELP_STRING( + [--enable-gnutls], + [Enable support for the GnuTLS fallback for missing getrandom()], + )], + [ENABLE_GNUTLS=$enableval], [ENABLE_GNUTLS="no"]) +AM_CONDITIONAL(ENABLE_GNUTLS, test x"$ENABLE_GNUTLS" = x"yes") +AS_IF([test "x$ENABLE_GNUTLS" = "xyes"], [ + PKG_CHECK_MODULES([LIBGNUTLS], [gnutls >= 2.12.0]) +]) +AC_SUBST(ENABLE_GNUTLS) +if test x"$ENABLE_GNUTLS" = x"yes" +then + AC_SUBST([LIBGNUTLS_CFLAGS]) + AC_SUBST([LIBGNUTLS_LIBS]) + AC_DEFINE([USE_GNUTLS], [1], [Use GnuTLS as a fallback for missing getrandom()]) +fi + AC_ARG_ENABLE(plugin, [AS_HELP_STRING( [--disable-plugin], @@ -228,6 +246,7 @@ AM_CONDITIONAL(ENABLE_PLUGIN, false) AM_CONDITIONAL(ENABLE_MSGFILE, false) AM_CONDITIONAL(ENABLE_SERIAL, false) + AM_CONDITIONAL(ENABLE_GNUTLS, false) AM_CONDITIONAL(ENABLE_VTY, false) AM_CONDITIONAL(ENABLE_CTRL, false) AM_CONDITIONAL(ENABLE_UTILITIES, false) diff --git a/src/gsm/Makefile.am b/src/gsm/Makefile.am index 4476971..12f56db 100644 --- a/src/gsm/Makefile.am +++ b/src/gsm/Makefile.am @@ -38,6 +38,11 @@ libosmogsm_la_LDFLAGS = $(LTLDFLAGS_OSMOGSM) -version-info $(LIBVERSION) -no-undefined libosmogsm_la_LIBADD = libgsmint.la $(TALLOC_LIBS) +if ENABLE_GNUTLS +AM_CPPFLAGS += $(LIBGNUTLS_CFLAGS) +libosmogsm_la_LIBADD += $(LIBGNUTLS_LIBS) +endif + EXTRA_DIST = libosmogsm.map # Convolutional codes generation diff --git a/src/gsm/gsm_utils.c b/src/gsm/gsm_utils.c index e3f792e..f57d826 100644 --- a/src/gsm/gsm_utils.c +++ b/src/gsm/gsm_utils.c @@ -104,6 +104,10 @@ #ifndef GRND_NONBLOCK #define GRND_NONBLOCK 0x0001 #endif +#elif (USE_GNUTLS) +#pragma message ("Secure random unavailable: including GnuTLS.") +#include <gnutls/gnutls.h> +#include <gnutls/crypto.h> #endif /* ETSI GSM 03.38 6.2.1 and 6.2.1.1 default alphabet @@ -422,7 +426,12 @@ /* FIXME: this can be removed once we bump glibc requirements to 2.25: */ rc = syscall(SYS_getrandom, out, len, GRND_NONBLOCK); #else +#if (USE_GNUTLS) +#pragma message ("Secure random unavailable: using GnuTLS fallback.") + return gnutls_rnd(GNUTLS_RND_RANDOM, out, len); +#else #pragma message ("Secure random unavailable: calls to osmo_get_rand_id() will always fail!") +#endif return -ENOTSUP; #endif /* getrandom() failed entirely: */ -- To view, visit https://gerrit.osmocom.org/4593 To unsubscribe, visit https://gerrit.osmocom.org/settings Gerrit-MessageType: newpatchset Gerrit-Change-Id: Ic77866ce65acf524b768882c751a4f9c0635740b Gerrit-PatchSet: 2 Gerrit-Project: libosmocore Gerrit-Branch: master Gerrit-Owner: Max <msuraev at sysmocom.de> Gerrit-Reviewer: Jenkins Builder