>
> why not have false + e_warning for strict_types=0 and fatal error for
> strict_types=1 ?
> Doing function random_int(): int { ...


How's this connected to `strict_types`? It's not.

If people use this function without reading documentation, they will also
> use other things without documentation like database queries without
> binding/escaping, inject html without escaping, etc.
> Having core functions suddenly throw exceptions causes many problems in
> the code structure.


How are these things connected? How does this create any issues in any
existing code structure? This RFC affects only two new functions introduced
in PHP 7.

I think there are a lot of security problems if people ignore return
> values, e.g. password comparison, user lookup in database, lookups for
> permissions, etc.


You compare an edge case, where these two functions currently return false
instead of throwing an exception to fail closed, to functions with an
expected `true|false` return value.

This change is especially important, because these functions may be used in
a way like this, as already mentioned in the previous discussions:

for ($i = 0; $i < 10; $i++) {
    $result .= $values[random_int(0, 10)];
}

It's simply far too easy to make mistakes in security relevant code.

Regards, Niklas

Reply via email to