php-master-changes 2019-06-19

今日は xmlrpc で SEGV が出る場合がある問題の修正、時刻が 1 秒ずれて扱われる場合がある問題の修正、ドキュメントの修正、テストのリファクタリング、未定義挙動のコードの修正、プロパティの参照代入で SEGV が出る問題の修正、mysqlnd_wireprotocol() のバグ修正、zip の日付が負値になる場合がある問題の修正、gd のバッファアンダーフローの修正、mysqli_change_user() でサーババージョンに応じた挙動切り替えが正常動作していなかった問題の修正があった！

# 2019-06-19
## asherkin: Fix [#78173](https://bugs.php.net/bug.php?id=78173): XML-RPC mutates immutable objects during encoding
- https://github.com/php/php-src/commit/d54220bc795a7025a162c61128c98a7af14087a4
- [7.2~]
- ext/xmlrpc で、opcache.protect_memory=1 の際に 7.2 で SEGV を起こす問題の修正

## krakjoe: Resolve discrepencies between second value yielded by gettimeofday and time, fixes [#69044](https://bugs.php.net/bug.php?id=69044)
- https://github.com/php/php-src/commit/65067dff01fc3a46861ddfe0fe6d3e556460c146
- [7.2~]
- ext/date で、[time_sleep_until()](https://www.php.net/manual/ja/function.time-sleep-until.php) が 1 秒早くはじまるように見える等の問題を修正
- 内部で使っている gettimeofday() と time() の挙動差から、gettimeofday() 呼んだ際に出力で秒が変わっていた後に time() を呼んでも秒が変わっていない時がある
- gettimeofday() があれば基本そちらを使うよう修正された

## cmb69: Document removal of uint and ulong typedefs
- https://github.com/php/php-src/commit/571c6bc3f3a6e5e2422dd253e04e9dd8dc740f09
- [7.4~]
- UPGRADING.INTERNALS で、 uint と ulong の typedef 削除について追記

## krakjoe: Separate check for process creation and ability to accept connections
- https://github.com/php/php-src/commit/d6480fa231831feece7403a640b6037c11eec317
- [7.4~]
- sapi/cli で、ビルトインサーバのテストでプロセス生成とソケットを開いて接続を受け付けられるかのチェックを分離するリファクタリング

## krakjoe: refactor a little more to add some more useful error messages and raise the limits on waiting for slow machines
- https://github.com/php/php-src/commit/eda5d8afcf601cb521ba3c9536c7d1a4ae5fb089
- [7.4~]
- - sapi/cli で、ビルトインサーバのテストを更にリファクタリング

## nikic: Avoid UB in overflow checks
- https://github.com/php/php-src/commit/bb940d9969e08853d92a09f7a02adc3228cf1c2c
- ext/opcache で、オーバーフローチェックの鼻から悪魔が出る問題を修正
- clang の最適化でチェックがぶっ飛ぶことがあり、Mac 版で JIT がこける原因になっていた

## krakjoe: export php_time
- https://github.com/php/php-src/commit/599b94ff14e9de2acd871b7db17e70e6c84dbe2b
- [7.2~]
- [先の修正](#krakjoe-resolve-discrepencies-between-second-value-yielded-by-gettimeofday-and-time-fixes-69044)で追加した php_time() を PHPAPI として外から使えるよう修正

## krakjoe: fix setcookie Max-Age to use php_time
- https://github.com/php/php-src/commit/31a1c1e67c93de186d8faf368784a8745b23f5b1
- [7.2~]
- [setcookie()](https://www.php.net/manual/ja/function.setcookie.php) の Max-Age 処理で php_time() を使うよう修正

## nikic: Fix shift UB in constants
- https://github.com/php/php-src/commit/3d4298697b41231690f93590e99f599b964f6a0d
- [7.4~]
- 定数の扱いで鼻から悪魔が出る問題を修正

## nikic: Avoid overflow UB in is_numeric_string
- https://github.com/php/php-src/commit/82a34e71c59010b64cf0104789da66d0c4d26b9c
- [7.4~]
- _is_numeric_string_ex() の処理での鼻から悪魔を修正

## nikic: Fix signed shift UB
- https://github.com/php/php-src/commit/ed2a242317213e7f483b2967c2921d2bae5d1097
- [7.4~]
- 符号付き整数のシフトでの鼻から悪魔を修正

## nikic: Fix memcpy null arg UB
- https://github.com/php/php-src/commit/317dfab81bedd918de9cf6a9b93428a0b0f86307
- [7.4~]
- memcpy() に null が渡って鼻から悪魔な場合があるのを修正

## nikic: Fix _php_math_round UB
- https://github.com/php/php-src/commit/0c0659dc50dc17b267072f95c6e1ebddcc91e82d
- [7.4~]
- _php_math_round() の鼻から悪魔を修正

## nikic: Use unsigned chars in php_uuencode()
- https://github.com/php/php-src/commit/bee7973e52a184a9bde60b5cda7a2c47c97e36ef
- [7.4~]
- php_uuencode() の鼻から悪魔を修正

## nikic: Use unsigned char in \_crypt_extended_r
- https://github.com/php/php-src/commit/4b5e824aae7117d53f4f1be1351d3eaa79329a40
- [7.4~]
- \_crypt_extended_r() の鼻から悪魔を修正

## nikic: Avoid more UB in round()
- https://github.com/php/php-src/commit/8740533ddf5665846cb5f386625efab2f7462cf7
- [7.4~]
- round() の鼻から悪魔を修正

## nikic: Avoid memcpy UB in streams
- https://github.com/php/php-src/commit/f26e77b05fe14e580e982c75887314b7fae7b777
- [7.4~]
- 鼻から悪魔の修正

## nikic: Fix overflow UB in range()
- https://github.com/php/php-src/commit/4ae87f4bf964146d8da1deb64cf1b668f1103891
- [7.4~]
- 鼻から悪魔の修正

## nikic: Fix incorrect shift in mysqlnd_wireprotocol
- https://github.com/php/php-src/commit/22765160da028590aafc073cc2edbb088e28f436
- [7.4~]
- ext/mysqlnd で、uint16 を 16 bit シフトしていたコードの修正

## nikic: Fix shift UB in sint4korr()
- https://github.com/php/php-src/commit/f65046b95143a2898d4cf2589219410844a8d20a
- [7.4~]
- ext/mysqlnd で、鼻から悪魔の修正

## nikic: Fix shift UB in mbfilter_utf32.c
- https://github.com/php/php-src/commit/ae2bc6297ebc4e5992949a4e0fbeaa0f03c62704
- [7.4~]
- ext/mbstring で、鼻から悪魔の修正

## nikic: Fix memcpy null UB in phar
- https://github.com/php/php-src/commit/7bf6326259a57cda44345369d4b02ff66d1376b8
- [7.4~]
- ext/phar で、鼻から悪魔の修正

## nikic: Phar: Avoid negative zip dates
- https://github.com/php/php-src/commit/b1196e2128cf3b1b53b604e3d7f89973fa23ec2d
- [7.4~]
- ext/phar で、zip の日付が負値になる場合がある問題の修正

## nikic: Fix shift UB in php_ifd_get32s
- https://github.com/php/php-src/commit/1c018af6822ccfbe0b4b7050e981136e8a38959a
- [7.4~]
- ext/exif で、鼻から悪魔の修正

## nikic: Fix shift UB in gd_io.c
- https://github.com/php/php-src/commit/ea97fc9c1f78c24b59031d8377461976d281972c
- [7.4~]
- ext/gd で、鼻から悪魔の修正

## nikic: Fix uninitialized variable
- https://github.com/php/php-src/commit/c10cb47b5f0a4d58d37b1974c993f5a3c09b1997
- [7.4~]
- ext/phar で、鼻から悪魔を修正する際に誤って移動してしまったコードを戻した

## nikic: Fix buffer underflow in gd_gif_in.c
- https://github.com/php/php-src/commit/2a9fc310211eb0ed5ee2b2954a57c49c17c7e6a7
- [7.4~]
- ext/gd で、バッファアンダーフローの問題があったのを修正

## Andrey Hristov: Fix version comparison
- https://github.com/php/php-src/commit/82021ad9df832a99976a48d35119c6284a7831cf
- [7.2~]
- ext/mysqli で、[mysqli_change_user()](https://www.php.net/manual/ja/mysqli.change-user.php) でサーババージョンに応じ挙動を切り替える際のバージョン指定の値が誤っていた問題の修正
- 必ずコード側で charset リセットする挙動でずっと動いてたのが、最近めの MySQL 使ってる限り PHP 側ではリセットしなくなる、というので変なこと起きたりはしないのだろうか

## nikic: imageloadfont: Perform overflow check before calculation
- https://github.com/php/php-src/commit/88b603768f8e5074ad5cbdccc1e0779089fac9d0
- [7.4~]
- ext/gd で、imageloadfont() のオーバーフローチェックを計算後にやっていたのを計算前に修正

## nikic: Fix shift UB in hash_snefru
- https://github.com/php/php-src/commit/555d68be1067d1757168ec8bbea032c68a13f0ec
- [7.4~]
- ext/hash で、鼻から悪魔の修正

## nikic: Suppress overflow UB in zend_strtod
- https://github.com/php/php-src/commit/b8cba88904a509abd2c141ebcdb952cfd9471063
- [7.4~]
- 鼻から悪魔の修正

## nikic: Fixed bug [#78182](https://bugs.php.net/bug.php?id=78182)
- https://github.com/php/php-src/commit/268b5fec8e42e82dce398b86a4970ad8875978d3
- [7.4~]
- プロパティの参照代入で SEGV が出る問題の修正