Skip to content

[Fix test] "Expiration (exp) time must be a unix time stamp" on 32-bit platform #899

New issue

Have a question about this project? # for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “#”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? # to your account

Open
wants to merge 2 commits into
base: main
Choose a base branch
from

Conversation

afilippov1985
Copy link
Contributor

After this PR #898 I able to run tests. And I get:

There were 2 failures:

1) OAuth2\GrantType\JwtBearerTest::testInvalidJti
Failed asserting that two strings are equal.
--- Expected
+++ Actual
@@ @@
-'Expiration (exp) time must be a unix time stamp'
+'JSON Token Identifier (jti) has already been used'

D:\eclipseworkspace\oauth2-server-php\test\OAuth2\GrantType\JwtBearerTest.php:291

2) OAuth2\GrantType\JwtBearerTest::testJtiReplayAttack
Failed asserting that null is not null.

Tests failed because ctype_digit($jwt['exp']) evals to false when $jwt['exp'] is double (it becomes double when $jwt['exp'] > PHP_INT_MAX)

// on 32-bit
$d = 99999999900;
var_dump($d, ctype_digit($d));
//double(99999999900) bool(false) 

$d = '99999999900';
var_dump($d, ctype_digit($d));
//string(11) "99999999900" bool(true) 

// on 64-bit
$d = 99999999900;
var_dump($d, ctype_digit($d));
//int(99999999900) bool(true) 

$d = '99999999900';
var_dump($d, ctype_digit($d));
//string(11) "99999999900" bool(true) 

To fix this we should always write big integers as strings ('99999999900')
or write integers as integers (12345) and integers must be <= PHP_INT_MAX

@bshaffer
Copy link
Owner

bshaffer commented Jul 3, 2019

Thanks, I did not really test this library for 32 bit. My deepest regrets that you are dealing with such.

# for free to join this conversation on GitHub. Already have an account? # to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants