From: Stéphane Graber Date: Fri, 16 Aug 2013 13:22:28 +0000 (+0200) Subject: Use srand/rand instead of initstate/random X-Git-Tag: lxc-1.0.0.alpha1~1^2~61 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=7f3e12f3e5223c6a6c34bafdf47df86f66078963;p=thirdparty%2Flxc.git Use srand/rand instead of initstate/random initstate/random doesn't work on bionic, srand/rand works on everything, so let's use that. Signed-off-by: Stéphane Graber Acked-by: Serge E. Hallyn --- diff --git a/configure.ac b/configure.ac index a0f012694..031fc160b 100644 --- a/configure.ac +++ b/configure.ac @@ -301,7 +301,7 @@ AC_CHECK_DECLS([PR_CAPBSET_DROP], [], [], [#include ]) AC_CHECK_HEADERS([sys/signalfd.h pty.h ifaddrs.h sys/capability.h sys/personality.h utmpx.h sys/timerfd.h]) # Check for some syscalls functions -AC_CHECK_FUNCS([setns pivot_root sethostname unshare]) +AC_CHECK_FUNCS([setns pivot_root sethostname unshare rand_r]) # Check for some functions AC_CHECK_LIB(util, openpty) diff --git a/src/lxc/conf.c b/src/lxc/conf.c index 867a150ac..c81c133fe 100644 --- a/src/lxc/conf.c +++ b/src/lxc/conf.c @@ -288,7 +288,6 @@ static char *mkifname(char *template) int i = 0; FILE *urandom; unsigned int seed; - char randstate[2048]; struct ifaddrs *ifaddr, *ifa; int ifexists = 0; @@ -304,7 +303,10 @@ static char *mkifname(char *template) } else seed = time(0); - initstate(seed, randstate, 256); + +#ifndef HAVE_RAND_R + srand(seed); +#endif /* Generate random names until we find one that doesn't exist */ while(1) { @@ -316,7 +318,11 @@ static char *mkifname(char *template) for (i = 0; i < strlen(name); i++) { if (name[i] == 'X') { - name[i] = padchar[random() % (strlen(padchar) - 1)]; +#ifdef HAVE_RAND_R + name[i] = padchar[rand_r(&seed) % (strlen(padchar) - 1)]; +#else + name[i] = padchar[rand() % (strlen(padchar) - 1)]; +#endif } }