Merge branch 'PHP-7.4'

This commit is contained in:
Nikita Popov 2019-07-01 17:28:01 +02:00
commit 9ab5c28c8b
7 changed files with 96 additions and 4 deletions

View File

@ -108,16 +108,16 @@ function prepareLine($op1, $op2, $cmp, $operator) {
$error = "echo '" . addcslashes("$op1_p $operator $op2_p", "\\'") . '\', "\n"; $f++;';
$compare = "@($op1_p $operator $op2_p)";
$line = "\$c++; try { ";
$line = "\$c++; ";
try {
$result = makeParam($cmp());
$line .= "if (" . ($result === "(NAN)" ? "!is_nan($compare)" : "$compare !== $result") . ") { $error } } catch (Error \$e) { $error }";
$line .= "if (" . ($result === "(NAN)" ? "!is_nan($compare)" : "$compare !== $result") . ") { $error }";
} catch (Error $e) {
if (get_class($e) == "Error") {
return "// exempt $op1_p $operator $op2_p from checking, it generates a compile time error";
}
$msg = makeParam($e->getMessage());
$line .= "$compare; $error } catch (Error \$e) { if (\$e->getMessage() !== $msg) { $error } }";
$line .= "try { $compare; $error } catch (Error \$e) { if (\$e->getMessage() !== $msg) { $error } }";
}
return $line;
}
@ -130,7 +130,10 @@ fwrite($file, "<?php\n");
foreach ($input as $left) {
foreach ($input as $right) {
foreach ($operands as $operand) {
fwrite($file, prepareLine($left, $right, function() use ($left, $right, $operand) { return eval("return @(\$left $operand \$right);"); }, $operand) . "\n");
$line = prepareLine($left, $right, function() use ($left, $right, $operand) {
return eval("return @(\$left $operand \$right);");
}, $operand);
fwrite($file, $line . "\n");
}
}
}

View File

@ -64,3 +64,8 @@ jobs:
LDFLAGS='-fsanitize=undefined,address'
runTestsParameters: --asan
timeoutInMinutes: 150
- template: azure/msan_job.yml
parameters:
configurationName: DEBUG_ZTS_MSAN
configurationParameters: '--enable-debug --enable-maintainer-zts'
runTestsParameters: --asan

View File

@ -34,5 +34,6 @@ steps:
libargon2-0-dev \
postgresql \
postgresql-contrib \
llvm \
${{ parameters.packages }}
displayName: 'APT'

76
azure/msan_job.yml Normal file
View File

@ -0,0 +1,76 @@
parameters:
configurationName: ''
configurationParameters: ''
runTestsParameters: ''
timeoutInMinutes: 60
jobs:
- job: ${{ parameters.configurationName }}
timeoutInMinutes: ${{ parameters.timeoutInMinutes }}
pool:
vmImage: 'ubuntu-latest'
steps:
- template: apt.yml
- script: |
export CC=clang
export CXX=clang++
export CFLAGS="-fsanitize=memory -DZEND_TRACK_ARENA_ALLOC"
export LDFLAGS="-fsanitize=memory"
./buildconf --force
# msan requires all used libraries to be instrumented,
# so we should avoiding linking against anything but libc here
./configure ${{ parameters.configurationParameters }} \
--prefix=/usr \
--without-sqlite3 \
--without-pdo-sqlite \
--without-libxml \
--disable-dom \
--disable-simplexml \
--disable-xml \
--disable-xmlreader \
--disable-xmlwriter \
--without-pcre-jit \
--enable-phpdbg \
--enable-fpm \
--with-pdo-mysql=mysqlnd \
--with-mysqli=mysqlnd \
--without-pear \
--enable-exif \
--enable-sysvsem \
--enable-sysvshm \
--enable-shmop \
--enable-pcntl \
--enable-mbstring \
--disable-mbregex \
--enable-sockets \
--enable-bcmath \
--enable-calendar \
--enable-ftp \
--enable-zend-test \
--enable-werror \
--with-config-file-path=/etc \
--with-config-file-scan-dir=/etc/php.d
displayName: 'Configure Build'
- script: make -j$(/usr/bin/nproc) >/dev/null
displayName: 'Make Build'
- script: |
sudo make install
sudo mkdir /etc/php.d
sudo chmod 777 /etc/php.d
echo mysqli.default_socket=/var/run/mysqld/mysqld.sock > /etc/php.d/mysqli.ini
echo pdo_mysql.default_socket=/var/run/mysqld/mysqld.sock > /etc/php.d/pdo_mysql.ini
displayName: 'Install Build'
- script: |
mysql -uroot -proot -e "CREATE DATABASE IF NOT EXISTS test"
displayName: 'Setup'
- template: test.yml
parameters:
configurationName: ${{ parameters.configurationName }}
runTestsParameters: ${{ parameters.runTestsParameters }}
- template: test.yml
parameters:
configurationName: ${{ parameters.configurationName }}
runTestsName: 'OpCache'
runTestsParameters: >-
${{ parameters.runTestsParameters }}
-d zend_extension=opcache.so -d opcache.enable_cli=1

View File

@ -12,6 +12,7 @@ steps:
export TEST_PHP_JUNIT=junit.xml
export REPORT_EXIT_STATUS=no
export SKIP_IO_CAPTURE_TESTS=1
export MSAN_SYMBOLIZER_PATH=/usr/lib/llvm-3.8/bin/llvm-symbolizer
rm -rf junit.xml | true
php run-tests.php -P -q \
-j$(/usr/bin/nproc) \

View File

@ -4,6 +4,9 @@ Bug #66731: file: extensive backtraking
<?php
if (!class_exists('finfo'))
die('skip no fileinfo extension');
if (getenv('SKIP_PERF_SENSITIVE'))
die("skip performance sensitive test");
?>
--FILE--
<?php
$fd = __DIR__.'/cve-2014-3538私はガラスを食べられます.data';

View File

@ -4,6 +4,9 @@ Bug #66731: file: extensive backtraking
<?php
if (!class_exists('finfo'))
die('skip no fileinfo extension');
if (getenv('SKIP_PERF_SENSITIVE'))
die("skip performance sensitive test");
?>
--FILE--
<?php
$fd = __DIR__.'/cve-2014-3538.data';