Skip to content

Commit 19fcea2

Browse files
remicolletjvoisin
authored andcommitted
Provide a php script, to get rid of the python one for test suite
This commit adds a php version of the upload_validation.py script.
1 parent 0988660 commit 19fcea2

File tree

2 files changed

+46
-1
lines changed

2 files changed

+46
-1
lines changed

Diff for: scripts/upload_validation.php

+45
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
#!/usr/bin/env php
2+
<?php
3+
4+
function check($filename) {
5+
6+
$whitelist = ['ECHO', 'RETURN', 'PHP', 'NOP'];
7+
8+
$out = [];
9+
$ret = 0;
10+
$cmd = [
11+
PHP_BINARY,
12+
"-d", "vld.active=1",
13+
"-d", "vld.execute=0",
14+
"-d", "extension=vld.so",
15+
"-d", "vld.format=1",
16+
"-d", "vld.col_sep=@",
17+
"-d", "log_errors=0",
18+
"-d", "error_log=/dev/null",
19+
escapeshellarg($filename),
20+
'2>&1',
21+
];
22+
exec(implode(' ', $cmd), $out, $ret);
23+
if ($ret) {
24+
printf("Error: %d\n", $ret);
25+
return 2;
26+
}
27+
foreach($out as $line) {
28+
$sp = explode('@', $line);
29+
if (count($sp) < 5) {
30+
continue;
31+
}
32+
$opcode = $sp[4]; // # ,line, #, EIO, op, fetch, ext, return, operands
33+
if ($opcode && !in_array($opcode, $whitelist)) {
34+
printf("Upload_validation: Found an opcode: %s\n", $opcode);
35+
return 1;
36+
}
37+
}
38+
return 0;
39+
}
40+
41+
if ($_SERVER['argc'] != 2) {
42+
die("Usage: {$_SERVER['argv']['0']} file_to_test.php\n");
43+
}
44+
exit(check($_SERVER['argv']['1']));
45+

Diff for: src/tests/config/upload_validation_real.ini

+1-1
Original file line numberDiff line numberDiff line change
@@ -1 +1 @@
1-
sp.upload_validation.script("../scripts/upload_validation.py").enable();
1+
sp.upload_validation.script("../scripts/upload_validation.php").enable();

0 commit comments

Comments
 (0)