Skip to content

Signed integer overflow in ext/date/php_date.c #14709

Closed

Description

@YuanchengJiang

Description

The following code:

<?php
define("MAX_64Bit", 9223372036854775807);
define("MAX_32Bit", 2147483647);
$otherVals = array(0, 1, -1, 7, 9, 65, -44, MAX_32Bit, MAX_64Bit);
foreach ($otherVals as $otherVal) {
foreach($longVals as $longVal) {
}
}
$script1_dataflow = $otherVal;
$start = new DateTime('2018-12-31 00:00:00');
$interval = new DateInterval('P1M');
$period = new DatePeriod($start, $interval, $script1_dataflow);

Resulted in this output:

/php-src/ext/date/php_date.c:5113:35: runtime error: signed integer overflow: 9223372036854775807 + 1 cannot be represented in type 'long'
SUMMARY: UndefinedBehaviorSanitizer: undefined-behavior /php-src/ext/date/php_date.c:5113:35

PHP Version

PHP 8.4.0-dev

Operating System

ubuntu 22.04

Activity

  1. self-assigned this
    on Jun 29, 2024
  2. cmb69 commented on Dec 3, 2024

    @cmb69
    Member

    @devnexen, I just had a look at devnexen@dfa93a3 and this looks quite good (recurrences should probably less than INT_MAX-2, to cater to the possible additions). Are you planning to submit a PR?

  3. devnexen commented on Dec 3, 2024

    @devnexen
    Member

    AFAIK I probably already created a PR, just forgot to attach it.

    #14710

  4. added 2 commits that reference this issue on Dec 20, 2024
    3f8e9c9
    16c0e57
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions