]> git.ipfire.org Git - thirdparty/lxc.git/commitdiff
Use srand/rand instead of initstate/random
authorStéphane Graber <stgraber@ubuntu.com>
Fri, 16 Aug 2013 13:22:28 +0000 (15:22 +0200)
committerStéphane Graber <stgraber@ubuntu.com>
Mon, 19 Aug 2013 12:33:21 +0000 (14:33 +0200)
initstate/random doesn't work on bionic, srand/rand works on everything,
so let's use that.

Signed-off-by: Stéphane Graber <stgraber@ubuntu.com>
Acked-by: Serge E. Hallyn <serge.hallyn@ubuntu.com>
configure.ac
src/lxc/conf.c

index a0f012694454ed73232e0bfaf035f5b4bff5d439..031fc160b97f22a3b957d1a4863e21d231fe6e83 100644 (file)
@@ -301,7 +301,7 @@ AC_CHECK_DECLS([PR_CAPBSET_DROP], [], [], [#include <sys/prctl.h>])
 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)
index 867a150ac7228be045790ef0445b2e6a7e2e0de8..c81c133fe7887a7136114ae60d07851f5c516a5d 100644 (file)
@@ -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
                        }
                }