aboutsummaryrefslogtreecommitdiffstats
path: root/code/qcommon
diff options
context:
space:
mode:
authortjw <tjw@edf5b092-35ff-0310-97b2-ce42778d08ea>2007-02-16 23:50:37 +0000
committertjw <tjw@edf5b092-35ff-0310-97b2-ce42778d08ea>2007-02-16 23:50:37 +0000
commit9dbe35a4dd8d5fce96c627f000d15395f32bc55a (patch)
tree3bc0f6b9f85125a426cdc2a290237adc76b1c699 /code/qcommon
parent9a51af746dd98abd8ca52424a4b78a16e3d98b7b (diff)
downloadioquake3-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.c21
-rw-r--r--code/qcommon/md5.c4
-rw-r--r--code/qcommon/q_shared.h2
-rw-r--r--code/qcommon/qcommon.h2
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 );