File tree Expand file tree Collapse file tree 1 file changed +11
-3
lines changed Expand file tree Collapse file tree 1 file changed +11
-3
lines changed Original file line number Diff line number Diff line change @@ -85,14 +85,18 @@ static zend_object_handlers random_randomizer_object_handlers;
85
85
static inline uint32_t rand_range32 (const php_random_algo * algo , php_random_status * status , uint32_t umax )
86
86
{
87
87
uint32_t result , limit , r ;
88
- size_t total_size = 0 ;
88
+ size_t total_size = 0 , shift_size = 0 ;
89
89
uint32_t count = 0 ;
90
90
91
91
result = 0 ;
92
92
total_size = 0 ;
93
93
do {
94
94
r = algo -> generate (status );
95
- result = (result << (8 * status -> last_generated_size )) | r ;
95
+ shift_size = (8 * status -> last_generated_size );
96
+ if ((8 * sizeof (uint32_t )) < shift_size ) {
97
+ shift_size = 0 ;
98
+ }
99
+ result = (result << shift_size ) | r ;
96
100
total_size += status -> last_generated_size ;
97
101
if (status -> last_unsafe ) {
98
102
return 0 ;
@@ -127,7 +131,11 @@ static inline uint32_t rand_range32(const php_random_algo *algo, php_random_stat
127
131
total_size = 0 ;
128
132
do {
129
133
r = algo -> generate (status );
130
- result = (result << (8 * status -> last_generated_size )) | r ;
134
+ shift_size = (8 * status -> last_generated_size );
135
+ if ((8 * sizeof (uint32_t )) < shift_size ) {
136
+ shift_size = 0 ;
137
+ }
138
+ result = (result << shift_size ) | r ;
131
139
total_size += status -> last_generated_size ;
132
140
if (status -> last_unsafe ) {
133
141
return 0 ;
You can’t perform that action at this time.
0 commit comments