-
Notifications
You must be signed in to change notification settings - Fork 545
Add more precise return types for the openssl cipher functions #4043
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
6144182 to
ecfa6c2
Compare
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
instead of
$returnType = ParametersAcceptorSelector::selectFromArgs(
$scope,
$functionCall->getArgs(),
$functionReflection->getVariants(),
)->getReturnType();
you can just return null; for the cases where the extension cannot provide a better type then the default.
that way you can simplify the extension a bit.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I refactored the code to return null for all such cases.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
might work to use a more precise return type
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I inspired from MbFunctionsReturnTypeExtensionTrait, which also uses simply string[]
ecfa6c2 to
bb6367d
Compare
Needs cs fix
bb6367d to
1e9efb6
Compare
@staabm done
conf/config.neon
Outdated
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Please put this on 2.1.x and use AutowiredService attribute instead of changing config.neon. Thanks.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@ondrejmirtes sorry for the delay. This is now done.
1e9efb6 to
1c9db7a
Compare
163d178
into
phpstan:2.1.x
Thank you.
@ondrejmirtes I discovered that in PHP <8.5, the openssl_get_cipher_methods function uses a different source of truth than the resolution of cipher algorithms in other functions, which means that some algorithms returned in this function are actually not supported in openssl_cipher_iv_length. See php/php-src#19994
Maybe this return type extension should be restricted to run only on PHP 8.5+ instead of PHP 8.0+. Or maybe it should perform actual filtering by attempting to read the iv length for PHP 8.0 to 8.4.
Please open an issue, this comment would get lost.
Those functions return false (and trigger a warning) only when the argument is an unknown algorithm, which is not something worth checking when using them with a known algorithm.
I'm providing this improvement only on PHP 8+, because PHP 7 can have other kind of warnings (that have been upgraded to
ValueErrorin PHP 8)Replaces #3582