Fix PRNG code

This commit is contained in:
brenosilva 2012-06-15 17:06:10 +00:00
parent d203549171
commit a958dfd495
2 changed files with 6 additions and 6 deletions

View File

@ -122,20 +122,20 @@ char *normalize_path(modsec_rec *msr, char *input) {
* \retval seed random seed * \retval seed random seed
*/ */
unsigned long prng() { unsigned long prng() {
short num_matrix1[10]; num_matrix2[10]; short num_matrix1[10], num_matrix2[10];
unsigned long num, num1, num2; unsigned long num, num1, num2;
short n, *p; short n, *p;
unsigned short seed_num; unsigned short seed_num;
unsigned long seed; unsigned long seed;
seed_num = seed & N16BITS_MASK; seed_num = seed & N16BITS_MAX;
num = seed & N31BITS_MASK; num = seed & N31BITS_MASK;
p = num_matrix1; p = num_matrix1;
for(n = 18; n-- ; ) { for(n = 18; n-- ; ) {
num = 30903*seed_num + (num>>16); num = 30903*seed_num + (num>>16);
*p++ = seed_num = num & N16BITS_MASK; *p++ = seed_num = num & N16BITS_MAX;
if (n == 9) if (n == 9)
p = num_matrix2; p = num_matrix2;
} }
@ -160,8 +160,8 @@ unsigned long prng() {
num_matrix1[0] = num1/N16BITS_MASK; num_matrix1[0] = num1/N16BITS_MASK;
num_matrix2[0] = num2/N16BITS_MASK; num_matrix2[0] = num2/N16BITS_MASK;
num_matrix1[1] = N16BITS_MASK&num1; num_matrix1[1] = N16BITS_MAX & num1;
num_matrix2[1] = N16BITS_MASK&num2; num_matrix2[1] = N16BITS_MAX & num2;
seed = (((long)num_matrix1[1])<<16)+(long)num_matrix2[1]; seed = (((long)num_matrix1[1])<<16)+(long)num_matrix2[1];

View File

@ -35,7 +35,7 @@ struct glinear {
}; };
#define N16BITS_MASK 65536L #define N16BITS_MASK 65536L
#define N16BITS_MASK 0xFFFF #define N16BITS_MAX 0xFFFF
#define N15BITS_MASK 0x7FFF #define N15BITS_MASK 0x7FFF
#define N31BITS_MASK 0x7FFFFFFF #define N31BITS_MASK 0x7FFFFFFF