diff options
author | tjw <tjw@edf5b092-35ff-0310-97b2-ce42778d08ea> | 2007-02-16 23:50:37 +0000 |
---|---|---|
committer | tjw <tjw@edf5b092-35ff-0310-97b2-ce42778d08ea> | 2007-02-16 23:50:37 +0000 |
commit | 9dbe35a4dd8d5fce96c627f000d15395f32bc55a (patch) | |
tree | 3bc0f6b9f85125a426cdc2a290237adc76b1c699 /code/qcommon | |
parent | 9a51af746dd98abd8ca52424a4b78a16e3d98b7b (diff) | |
download | ioquake3-aero-9dbe35a4dd8d5fce96c627f000d15395f32bc55a.tar.gz ioquake3-aero-9dbe35a4dd8d5fce96c627f000d15395f32bc55a.zip |
* (bug 3019) use the operating system's random number generator if possible
when generating the qkey file
git-svn-id: svn://svn.icculus.org/quake3/trunk@1046 edf5b092-35ff-0310-97b2-ce42778d08ea
Diffstat (limited to 'code/qcommon')
-rw-r--r-- | code/qcommon/common.c | 21 | ||||
-rw-r--r-- | code/qcommon/md5.c | 4 | ||||
-rw-r--r-- | code/qcommon/q_shared.h | 2 | ||||
-rw-r--r-- | code/qcommon/qcommon.h | 2 |
4 files changed, 27 insertions, 2 deletions
diff --git a/code/qcommon/common.c b/code/qcommon/common.c index ca56db0..defb5fa 100644 --- a/code/qcommon/common.c +++ b/code/qcommon/common.c @@ -3217,3 +3217,24 @@ void Field_AutoComplete( field_t *field ) Field_CompleteCommand( completionField->buffer, qtrue, qtrue ); } + +/* +================== +Com_RandomBytes + +fills string array with len radom bytes, peferably from the OS randomizer +================== +*/ +void Com_RandomBytes( byte *string, int len ) +{ + int i; + + if( Sys_RandomBytes( string, len ) ) + return; + + Com_Printf( "Com_RandomBytes: using weak randomization\n" ); + srand( time( 0 ) ); + for( i = 0; i < len; i++ ) + string[i] = (unsigned char)( rand() % 255 ); +} + diff --git a/code/qcommon/md5.c b/code/qcommon/md5.c index dcb4e44..5cf12bb 100644 --- a/code/qcommon/md5.c +++ b/code/qcommon/md5.c @@ -263,7 +263,7 @@ char *Com_MD5File( const char *fn, int length, const char *prefix, int prefix_le unsigned char digest[16] = {""}; fileHandle_t f; MD5_CTX md5; - char buffer[2048]; + byte buffer[2048]; int i; int filelen = 0; int r = 0; @@ -296,7 +296,7 @@ char *Com_MD5File( const char *fn, int length, const char *prefix, int prefix_le if(r + total > length) r = length - total; total += r; - MD5Update(&md5 , (unsigned char *)buffer, r); + MD5Update(&md5 , buffer, r); if(r < sizeof(buffer) || total >= length) break; } diff --git a/code/qcommon/q_shared.h b/code/qcommon/q_shared.h index 74958ff..f4b9bd2 100644 --- a/code/qcommon/q_shared.h +++ b/code/qcommon/q_shared.h @@ -640,6 +640,8 @@ void QDECL Com_sprintf (char *dest, int size, const char *fmt, ...) __attribute_ char *Com_SkipTokens( char *s, int numTokens, char *sep ); char *Com_SkipCharset( char *s, char *sep ); +void Com_RandomBytes( byte *string, int len ); + // mode parm for FS_FOpenFile typedef enum { FS_READ, diff --git a/code/qcommon/qcommon.h b/code/qcommon/qcommon.h index 8bde028..f0d6722 100644 --- a/code/qcommon/qcommon.h +++ b/code/qcommon/qcommon.h @@ -1001,6 +1001,8 @@ int Sys_Milliseconds (void); void Sys_SnapVector( float *v ); +qboolean Sys_RandomBytes( byte *string, int len ); + // the system console is shown when a dedicated server is running void Sys_DisplaySystemConsole( qboolean show ); |