Skip to content

Commit b7329c8

Browse files
author
Ilia Alshanetsky
committed
Fixed bug #27258 (moved FPE check to correct location).
Fixed several possible FPE.
1 parent c3a5720 commit b7329c8

File tree

1 file changed

+15
-5
lines changed

1 file changed

+15
-5
lines changed

ext/gmp/gmp.c

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -312,6 +312,11 @@ static inline void gmp_zval_binary_ui_op_ex(zval *return_value, zval **a_arg, zv
312312
FETCH_GMP_ZVAL(gmpnum_b, b_arg);
313313
}
314314

315+
convert_to_long_ex(b_arg);
316+
if (!Z_LVAL_PP(b_arg)) {
317+
RETURN_FALSE;
318+
}
319+
315320
INIT_GMP_NUM(gmpnum_result);
316321

317322
if (use_ui && gmp_ui_op) {
@@ -353,6 +358,11 @@ static inline void gmp_zval_binary_ui_op2_ex(zval *return_value, zval **a_arg, z
353358
FETCH_GMP_ZVAL(gmpnum_b, b_arg);
354359
}
355360

361+
convert_to_long_ex(b_arg);
362+
if (!Z_LVAL_PP(b_arg)) {
363+
RETURN_FALSE;
364+
}
365+
356366
INIT_GMP_NUM(gmpnum_result1);
357367
INIT_GMP_NUM(gmpnum_result2);
358368

@@ -825,11 +835,6 @@ ZEND_FUNCTION(gmp_powm)
825835
WRONG_PARAM_COUNT;
826836
}
827837

828-
convert_to_long_ex(mod_arg);
829-
if (!Z_LVAL_PP(mod_arg)) {
830-
RETURN_FALSE;
831-
}
832-
833838
FETCH_GMP_ZVAL(gmpnum_base, base_arg);
834839

835840
if (Z_TYPE_PP(exp_arg) == IS_LONG && Z_LVAL_PP(exp_arg) >= 0) {
@@ -839,6 +844,11 @@ ZEND_FUNCTION(gmp_powm)
839844
}
840845
FETCH_GMP_ZVAL(gmpnum_mod, mod_arg);
841846

847+
convert_to_long_ex(mod_arg);
848+
if (!Z_LVAL_PP(mod_arg)) {
849+
RETURN_FALSE;
850+
}
851+
842852
INIT_GMP_NUM(gmpnum_result);
843853
if (use_ui) {
844854
mpz_powm_ui(*gmpnum_result, *gmpnum_base, (unsigned long)Z_LVAL_PP(exp_arg), *gmpnum_mod);

0 commit comments

Comments
 (0)