summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--_test/cases/inc/common_clientip.test.php8
-rw-r--r--inc/common.php1
2 files changed, 8 insertions, 1 deletions
diff --git a/_test/cases/inc/common_clientip.test.php b/_test/cases/inc/common_clientip.test.php
index 257229811..04d071e7d 100644
--- a/_test/cases/inc/common_clientip.test.php
+++ b/_test/cases/inc/common_clientip.test.php
@@ -141,6 +141,14 @@ class common_clientIP_test extends UnitTestCase {
$this->assertEqual(clientIP(true),$out);
}
+ function test_malicious(){
+ $_SERVER['REMOTE_ADDR'] = '';
+ $_SERVER['HTTP_X_REAL_IP'] = '';
+ $_SERVER['HTTP_X_FORWARDED_FOR'] = '<?php set_time_limit(0);echo \'my_delim\';passthru(123.123.123.123);die;?>';
+ $out = '123.123.123.123';
+ $this->assertEqual(clientIP(),$out);
+ }
+
}
diff --git a/inc/common.php b/inc/common.php
index 6fa0cff3c..65ea4c897 100644
--- a/inc/common.php
+++ b/inc/common.php
@@ -497,7 +497,6 @@ function clientIP($single=false){
$cnt = count($ip);
$match = array();
for($i=0; $i<$cnt; $i++){
- $ip[$i] = preg_replace('/[^0-9\.]+/','',$ip[$i]);
if(preg_match('/\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}/',$ip[$i],$match)) {
$ip[$i] = $match[0];
} else {