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 } }