File tree Expand file tree Collapse file tree 2 files changed +28
-2
lines changed Expand file tree Collapse file tree 2 files changed +28
-2
lines changed Original file line number Diff line number Diff line change @@ -429,16 +429,31 @@ static void MoladOfMetonicCycle(
429
429
zend_long * pMoladHalakim )
430
430
{
431
431
register zend_ulong r1 , r2 , d1 , d2 ;
432
+ zend_long chk ;
432
433
433
434
/* Start with the time of the first molad after creation. */
434
435
r1 = NEW_MOON_OF_CREATION ;
436
+ chk = (zend_long )metonicCycle ;
437
+
438
+ if (chk > (ZEND_LONG_MAX - NEW_MOON_OF_CREATION ) / (HALAKIM_PER_METONIC_CYCLE & 0xFFFF )) {
439
+ * pMoladDay = 0 ;
440
+ * pMoladHalakim = 0 ;
441
+ return ;
442
+ }
435
443
436
444
/* Calculate metonicCycle * HALAKIM_PER_METONIC_CYCLE. The upper 32
437
445
* bits of the result will be in r2 and the lower 16 bits will be
438
446
* in r1. */
439
- r1 += metonicCycle * (HALAKIM_PER_METONIC_CYCLE & 0xFFFF );
447
+ r1 += chk * (HALAKIM_PER_METONIC_CYCLE & 0xFFFF );
448
+
449
+ if (chk > (ZEND_LONG_MAX - (r1 >> 16 )) / ((HALAKIM_PER_METONIC_CYCLE >> 16 ) & 0xFFFF )) {
450
+ * pMoladDay = 0 ;
451
+ * pMoladHalakim = 0 ;
452
+ return ;
453
+ }
454
+
440
455
r2 = r1 >> 16 ;
441
- r2 += metonicCycle * ((HALAKIM_PER_METONIC_CYCLE >> 16 ) & 0xFFFF );
456
+ r2 += chk * ((HALAKIM_PER_METONIC_CYCLE >> 16 ) & 0xFFFF );
442
457
443
458
/* Calculate r2r1 / HALAKIM_PER_DAY. The remainder will be in r1, the
444
459
* upper 16 bits of the quotient will be in d2 and the lower 16 bits
Original file line number Diff line number Diff line change
1
+ --TEST--
2
+ GH-16234 jewishtojd overflow on year argument
3
+ --EXTENSIONS--
4
+ calendar
5
+ --FILE--
6
+ <?php
7
+ jewishtojd (1218182888 , 1 , 1218182888 );
8
+ echo "DONE " ;
9
+ ?>
10
+ --EXPECT--
11
+ DONE
You can’t perform that action at this time.
0 commit comments