]> git.sesse.net Git - vlc/commitdiff
Mux: kill srand() use
authorRémi Denis-Courmont <remi@remlab.net>
Fri, 5 Mar 2010 22:40:35 +0000 (00:40 +0200)
committerRémi Denis-Courmont <remi@remlab.net>
Fri, 5 Mar 2010 22:41:04 +0000 (00:41 +0200)
modules/mux/mpeg/ts.c
modules/mux/ogg.c

index 5cb02b30eddbf8d8235c259477ce2582ae0dd130..34e4e3e902611dd49454308d777526fb88571113 100644 (file)
@@ -39,6 +39,7 @@
 #include <vlc_sout.h>
 #include <vlc_codecs.h>
 #include <vlc_block.h>
+#include <vlc_rand.h>
 
 #include <vlc_iso_lang.h>
 
@@ -520,7 +521,6 @@ static int Open( vlc_object_t *p_this )
     p_mux->pf_mux       = Mux;
     p_mux->p_sys        = p_sys;
 
-    srand( (uint32_t)mdate() );
     for ( i = 0; i < MAX_PMT; i++ )
         p_sys->sdt_descriptors[i].psz_service_name
             = p_sys->sdt_descriptors[i].psz_provider = NULL;
@@ -582,7 +582,9 @@ static int Open( vlc_object_t *p_this )
     }
     free( val.psz_string );
 
-    p_sys->i_pat_version_number = rand() % 32;
+    unsigned short subi[3];
+    vlc_rand_bytes(subi, sizeof(subi));
+    p_sys->i_pat_version_number = nrand48(subi) & 0x1f;
     p_sys->pat.i_pid = 0;
     p_sys->pat.i_continuity_counter = 0;
     p_sys->pat.b_discontinuity = false;
@@ -591,16 +593,16 @@ static int Open( vlc_object_t *p_this )
     if ( val.i_int )
         p_sys->i_tsid = val.i_int;
     else
-        p_sys->i_tsid = rand() % 65536;
+        p_sys->i_tsid = nrand48(subi) & 0xffff;
 
-    p_sys->i_netid = rand() % 65536;
+    p_sys->i_netid = nrand48(subi) & 0xffff;
 #ifdef HAVE_DVBPSI_SDT
     var_Get( p_mux, SOUT_CFG_PREFIX "netid", &val );
     if ( val.i_int )
         p_sys->i_netid = val.i_int;
 #endif
 
-    p_sys->i_pmt_version_number = rand() % 32;
+    p_sys->i_pmt_version_number = nrand48(subi) & 0x1f;
     for( i = 0; i < p_sys->i_num_pmt; i++ )
     {
         p_sys->pmt[i].i_continuity_counter = 0;
index 7e319849887ca771f2c796fb8b26d1d637e2b320..0d36a269ac4d6989fbca26138151707a37c5e8f2 100644 (file)
@@ -35,6 +35,8 @@
 #include <vlc_sout.h>
 #include <vlc_block.h>
 #include <vlc_codecs.h>
+#include <limits.h>
+#include <vlc_rand.h>
 #include "../demux/xiph.h"
 
 #include <ogg/ogg.h>
@@ -198,8 +200,9 @@ static int Open( vlc_object_t *p_this )
     /* First serial number is random.
      * (Done like this because on win32 you need to seed the random number
      *  generator once per thread). */
-    srand( (unsigned int)time( NULL ) );
-    p_sys->i_next_serial_no = rand();
+    uint32_t r;
+    vlc_rand_bytes(&r, sizeof(r));
+    p_sys->i_next_serial_no = r & INT_MAX;
 
     return VLC_SUCCESS;
 }