↵ return
user defined functions and calls
user input
type[parameter]taints
$HTTP_RAW_POST_DATA305 ,306 ,309
$_COOKIE168
$_COOKIE[DOKU_PREFS]1562 ,1563
$_COOKIE[DW$_USERINPUT]86 ,1002 ,1005
$_COOKIE[]86 ,1002 ,1005
$_COOKIE[stylesheet]72 ,73 ,74
$_ENV1540
$_FILES[upload]274
$_GET166 ,177
$_GET[]1525
$_GET[qqfile]230
$_POST167 ,177
$_POST[]299
$_POST[date]309
$_POST[email]1260 ,1284 ,1296 ,704 ,708 ,727 ,733 ,742 ,788 ,791 ,796 ,802
$_POST[fullname]1259 ,1283 ,1293 ,703 ,707 ,733 ,741 ,787 ,790 ,801
$_POST[ignore_warning]52
$_POST[loc]600 ,627 ,644 ,43 ,45
$_POST[login]1254 ,1677 ,700 ,706 ,733 ,740 ,747 ,752 ,754 ,888 ,892
$_POST[mediaid]273
$_POST[newpass]781 ,803
$_POST[oldpass]811
$_POST[pass]715 ,719 ,723
$_POST[passchk]716 ,719 ,781
$_POST[prefix]306
$_POST[regex]179 ,185
$_POST[save]70 ,696 ,773 ,886
$_POST[search]66 ,290 ,333 ,348
$_POST[stylesheet]72 ,73
$_POST[subdirs]49
$_POST[suffix]308
$_POST[treestyle]379
$_POST[vector]911 ,81 ,141
$_POST[verbosity]75
$_POST[wikitext]304 ,307
$_REQUEST169 ,177
$_REQUEST[,=$_USERINPUT]1532
$_REQUEST[]24 ,701 ,703 ,1532
$_REQUEST[authtok]95 ,97
$_REQUEST[cache]944 ,945
$_REQUEST[changecheck]1333 ,1334
$_REQUEST[difftype]1085 ,1071
$_REQUEST[do]1090 ,1091 ,1093 ,1675
$_REQUEST[edit]1098 ,1200
$_REQUEST[first]80 ,87 ,88 ,89 ,91 ,815
$_REQUEST[http_credentials]70 ,89 ,106
$_REQUEST[image]1506 ,1568
$_REQUEST[mediado]1144 ,1186 ,754 ,809 ,1566
$_REQUEST[minor]349 ,1464
$_REQUEST[ow]295
$_REQUEST[p]68 ,88 ,100 ,104
$_REQUEST[page]134 ,136 ,138 ,141 ,175 ,177 ,179 ,205 ,208 ,211
$_REQUEST[purge]750 ,87 ,180
$_REQUEST[pwauth]852
$_REQUEST[q]1118 ,656 ,657 ,755
$_REQUEST[r]69 ,71 ,100 ,105
$_REQUEST[rev2]1010 ,1011 ,1012 ,1019 ,1079 ,1080 ,1081 ,1088
$_REQUEST[rev]1008
$_REQUEST[sectok]68
$_REQUEST[show_changes]92
$_REQUEST[sub_targetstyleaction]679 ,680
$_REQUEST[tab_details]1188
$_REQUEST[tab_files]1142
$_REQUEST[target]1370
$_REQUEST[targetstyleaction]701 ,703 ,24
$_REQUEST[u]56 ,67 ,86 ,87 ,93 ,100 ,103
$_SERVER1498
$_SERVER[CONTENT_LENGTH]236
$_SERVER[DOCUMENT_ROOT]43 ,44 ,401 ,402
$_SERVER[GATEWAY_INTERFACE]1524 ,1525
$_SERVER[HTTPS]472 ,473
$_SERVER[HTTP_ACCEPT]664
$_SERVER[HTTP_ACCEPT_CHARSET]290
$_SERVER[HTTP_ACCEPT_ENCODING]288 ,139
$_SERVER[HTTP_ACCEPT_LANGUAGE]289
$_SERVER[HTTP_AUTHORIZATION]78 ,80 ,82
$_SERVER[HTTP_HOST]171 ,425 ,426
$_SERVER[HTTP_IF_MODIFIED_SINCE]30 ,31
$_SERVER[HTTP_IF_NONE_MATCH]36 ,37
$_SERVER[HTTP_RANGE]107 ,111
$_SERVER[HTTP_REFERER]1167 ,1170 ,180
$_SERVER[HTTP_USER_AGENT]666 ,670 ,1117 ,528 ,287
$_SERVER[HTTP_X_FORWARDED_FOR]599 ,600
$_SERVER[HTTP_X_REAL_IP]601 ,602
$_SERVER[HTTP_X_WAP_PROFILE]662
$_SERVER[PATH_INFO]39 ,40
$_SERVER[PHP_AUTH_PW]88
$_SERVER[PHP_AUTH_USER]86 ,87
$_SERVER[PHP_SELF]577 ,1315 ,1521 ,1559 ,1514 ,399 ,400
$_SERVER[REDIRECT_HTTP_AUTHORIZATION]77 ,78
$_SERVER[REMOTE_ADDR]356 ,570 ,598 ,1974 ,15201
$_SERVER[REMOTE_USER]80 ,446 ,453 ,674 ,696 ,751 ,213 ,247 ,59 ,66 ,111 ,115 ,126 ,571 ,572 ,718 ,738 ,739 ,755 ,898 ,1037 ,1098 ,1125 ,68 ,125 ,342 ,589 ,598 ,603 ,623 ,630 ,788 ,789 ,532 ,1290 ,1458 ,213 ,280 ,281 ,129 ,134 ,135 ,191 ,217 ,252 ,347 ,348 ,382 ,385 ,476 ,811 ,817 ,822 ,51 ,52
$_SERVER[REQUEST_METHOD]162 ,401
$_SERVER[REQUEST_URI]28
$_SERVER[SCRIPT_FILENAME]37 ,43 ,45 ,401 ,403 ,533
$_SERVER[SCRIPT_NAME]41 ,42 ,397 ,398
$_SERVER[SERVER_NAME]429 ,430
$_SERVER[SERVER_PORT]171 ,115 ,438 ,439
$_SERVER[SERVER_SOFTWARE]1524 ,1526
$_SERVER[argv]90 ,412 ,421
$argv410 ,411 ,423
scanned files and includes
Result

Code Evaluation:
50
Command Execution:
8
Header Injection:
3
File Disclosure:
28
File Inclusion:
37
File Manipulation:
68
Possible Flow Control:
9
Unserialize:
4
Sum:207

Scanned files:47
Include success:106/131 (81%)
Considered sinks:225
User-defined functions:2027
Unique sources:101
Sensitive sinks:1644

Info:Code is OOP
(not supported)
Info:uses sessions
Info:using FTP server
Info:using DBMS MySQL
Info:using LDAP server

Scan time:300.617 seconds
File: /srv/http-rips/tests/test-1/inc/actions.php

File Disclosure

Userinput reaches sensitive sink.
  • 23: opendir $handle = opendir($path) // filer.php
    • 19:  function read_recursiv($path$scan_subdirs)

Userinput is passed through function parameters.
  • 50:  $files = read_recursiv ($location$scan_subdirs) // main.php
    • 45: $location = realpath($_POST['loc']) // main.php
    • requires:
      • 43: if(!empty($_POST['loc']))
      • 47: if(is_dir($location))
File Disclosure

Userinput reaches sensitive sink.
  • 21: file $lines = file($file_name) // searcher.php
    • 18:  function searchfile($file_name$search)

Userinput is passed through function parameters.
  • 185:  searchfile ($file_name$_POST['regex']) // main.php
    • 183: foreach($files as $file_name) // main.php
      • 61: $files = array() // main.phpif(is_file($location) && in_array(substr($location, strrpos($location, '.')), $FILETYPES)) else ,
      • 57: $files[0] = $location // main.phpif(is_file($location) && in_array(substr($location, strrpos($location, '.')), $FILETYPES)),
        • 45: $location = realpath($_POST['loc']) // main.php
      • 50: $files = read_recursiv ($location$scan_subdirs) // main.phpif(is_dir($location)),
        • 45: $location = realpath($_POST['loc']) // main.php
        • 49: $scan_subdirs = $_POST['subdirs'] : false // main.phpif(is_dir($location)),
    • requires:
      • 43: if(!empty($_POST['loc']))
      • 179: if(!empty($_POST['regex']))
Code Evaluation

Userinput reaches sensitive sink.
  • 33: preg_replace $line = preg_replace("/(>[^<]*)(" . trim($search) . ")/i""$1<span class='markline'>$2</span>"$line) // searcher.php
    • 20: $search = str_replace('/''\/'$search) // searcher.php
      • 18:  function searchfile($file_name$search)
    • requires:
      • 23:  function searchfile($file_name$search)
      • 25: if(preg_match("/" . trim($search) . "/i"$lines[$i]))

Userinput is passed through function parameters.
  • 185:  searchfile ($file_name$_POST['regex']) // main.php
    • 183: foreach($files as $file_name) // main.php
      • 61: $files = array() // main.phpif(is_file($location) && in_array(substr($location, strrpos($location, '.')), $FILETYPES)) else ,
      • 57: $files[0] = $location // main.phpif(is_file($location) && in_array(substr($location, strrpos($location, '.')), $FILETYPES)),
        • 45: $location = realpath($_POST['loc']) // main.php
      • 50: $files = read_recursiv ($location$scan_subdirs) // main.phpif(is_dir($location)),
        • 45: $location = realpath($_POST['loc']) // main.php
        • 49: $scan_subdirs = $_POST['subdirs'] : false // main.phpif(is_dir($location)),
    • requires:
      • 43: if(!empty($_POST['loc']))
      • 179: if(!empty($_POST['regex']))

File: /srv/http-rips/tests/test-1/inc/common.php

Possible Flow Control

Userinput reaches sensitive sink when function getgooglequery() is called.
  • 1177: parse_str parse_str($url['query']$query)
    • 1170: $url = parse_url($_SERVER['HTTP_REFERER'])
    • requires:
      • 1166:  function getgooglequery()

File: /srv/http-rips/tests/test-1/inc/feedcreator.class.php

File Disclosure

Userinput reaches sensitive sink. (Blind exploitation)
  • 602: readfile readfile($filename"r")
    • 586:  function _redirect($filename)

Userinput reaches sensitive sink when function usecached() is called.
  • 622:  $this->_redirect ($filename)
    • 619: $filename = $this->_generatefilename () // if($filename == ""),
    • requires:
      • 621: if(file_exists($filename) AND (time() - filemtime($filename) < $timeout))
      • 616:  function usecached($filename = ""$timeout = 3600)

Userinput reaches sensitive sink when function savefeed() is called.
  • 644:  $this->_redirect ($filename)
    • 637: $filename = $this->_generatefilename () // if($filename == ""),
    • requires:
      • 640: if($feedFile)
      • 643: if($displayContents)
      • 635:  function savefeed($filename = ""$displayContents = true)
File Manipulation

Userinput reaches sensitive sink when function savefeed() is called. (Blind exploitation)
  • 641: fputs fputs($feedFile$this->createfeed ())
    • 639: $feedFile = fopen($filename"w+")
      • 637: $filename = $this->_generatefilename () // if($filename == ""),
    • requires:
      • 640: if($feedFile)
      • 635:  function savefeed($filename = ""$displayContents = true)

File: /srv/http-rips/tests/test-1/inc/HTTPClient.php

File Manipulation

Userinput reaches sensitive sink when function sendrequest() is called.
  • 344: fwrite $ret = fwrite($socketsubstr($request$written4096))
    • 296: $socket = fsockopen($server$port$errno$errstr$this->timeout) // if(is_null($socket) || feof($socket)), stopped, already traced
    • 319: $request .= $data
      • 318: $request .= HTTP_NL
        • 317: $request .= $this->_getcookies()
          • 316: $request .= $this->_buildheaders($headers)
            • 315: $request = "$method $request_url HTTP/" . $this->http . HTTP_NL
              • 212:  function sendrequest($url$data = ''$method = 'GET')
              • 241: $request_url = $path // if($this->proxy_host && (!$this->proxy_except || !preg_match('/' . $this->proxy_except . '/i', $url))) else ,
                • 229: $path .= '?' . $uri['query']
                  • 228: $path = '/'
                  • 225: $uri = parse_url($url)
                    • 212:  function sendrequest($url$data = ''$method = 'GET')
              • 10: define('HTTP_NL'"\r\n") // define()
            • 279: $headers['Proxy-Authorization'] = 'Basic ' . base64_encode($this->proxy_user . ':' . $this->proxy_pass) // if($this->proxy_user),
        • 10: define('HTTP_NL'"\r\n") // define()
      • 273: $data = '' // elseif($method == 'GET'),
    • 330: $written = 0
    • requires:
      • 341: if(stream_select($sel_r$sel_w$sel_e1) === false)
      • 212:  function sendrequest($url$data = ''$method = 'GET')

Call triggers vulnerability in function sendrequest()
  • 441:  $this->sendrequest ($this->resp_headers['location']array()'GET')
    • requires:
      • 415: if($this->status == 301 || $this->status == 302)
      • 427: elseif($this->redirect_count == $this->max_redirect) else 

File: /srv/http-rips/tests/test-1/inc/auth.php

File Manipulation

Userinput reaches sensitive sink. (Blind exploitation)
  • 863: unlink unlink($tfile)
    • 857: $tfile = $conf['cachedir'] . '/' . $token[0] . '/' . $token . '.pwauth'
      • 852: $token = preg_replace('/[^a-f0-9]+/'''$_REQUEST['pwauth'])
      • 852: $token = preg_replace('/[^a-f0-9]+/'''$_REQUEST['pwauth'])
    • requires:
      • 854: if($token)

File: /srv/http-rips/tests/test-1/inc/SimplePie.php

Header Injection

Userinput reaches sensitive sink when function simplepie_file() is called.
  • 7691: curl_setopt curl_setopt($fpCURLOPT_URL$url)
    • 7663: $url = SimplePie_Misc::compress_parse_url($parsed['scheme']$idn->encode ($parsed['authority'])$parsed['path']$parsed['query']$parsed['fragment']) // if(class_exists('idna_convert')),
      • 7662: $parsed = SimplePie_Misc::parse_url($url) // if(class_exists('idna_convert')),
      • 7661: $idn =  new idna_convert // if(class_exists('idna_convert')),
      • 7662: $parsed = SimplePie_Misc::parse_url($url) // if(class_exists('idna_convert')),
      • 7662: $parsed = SimplePie_Misc::parse_url($url) // if(class_exists('idna_convert')),
      • 7662: $parsed = SimplePie_Misc::parse_url($url) // if(class_exists('idna_convert')),
      • 7662: $parsed = SimplePie_Misc::parse_url($url) // if(class_exists('idna_convert')),
    • requires:
      • 7667: if(preg_match('/^http(s)?:\/\//i'$url))
      • 7678: if(!$force_fsockopen && function_exists('curl_exec'))
      • 7657:  function simplepie_file($url$timeout = 10$redirects = 5$headers = null$useragent = null$force_fsockopen = false)
Header Injection

Userinput reaches sensitive sink when function simplepie_file() is called.
  • 7696: curl_setopt curl_setopt($fpCURLOPT_REFERER$url)
    • 7663: $url = SimplePie_Misc::compress_parse_url($parsed['scheme']$idn->encode ($parsed['authority'])$parsed['path']$parsed['query']$parsed['fragment']) // if(class_exists('idna_convert')),
      • 7662: $parsed = SimplePie_Misc::parse_url($url) // if(class_exists('idna_convert')),
      • 7661: $idn =  new idna_convert // if(class_exists('idna_convert')),
      • 7662: $parsed = SimplePie_Misc::parse_url($url) // if(class_exists('idna_convert')),
      • 7662: $parsed = SimplePie_Misc::parse_url($url) // if(class_exists('idna_convert')),
      • 7662: $parsed = SimplePie_Misc::parse_url($url) // if(class_exists('idna_convert')),
      • 7662: $parsed = SimplePie_Misc::parse_url($url) // if(class_exists('idna_convert')),
    • requires:
      • 7667: if(preg_match('/^http(s)?:\/\//i'$url))
      • 7678: if(!$force_fsockopen && function_exists('curl_exec'))
      • 7657:  function simplepie_file($url$timeout = 10$redirects = 5$headers = null$useragent = null$force_fsockopen = false)
Header Injection

Userinput reaches sensitive sink when function simplepie_file() is called.
  • 7751: fsockopen $fp = fsockopen($socket_host$url_parts['port']$errno$errstr$timeout)
    • 7744: $socket_host = "ssl://$url_parts[host]" // if(isset($url_parts) && strtolower($url_parts) === 'https'),
      • 7740: $url_parts = parse_url($url)
        • 7663: $url = SimplePie_Misc::compress_parse_url($parsed['scheme']$idn->encode ($parsed['authority'])$parsed['path']$parsed['query']$parsed['fragment']) // if(class_exists('idna_convert')),
          • 7662: $parsed = SimplePie_Misc::parse_url($url) // if(class_exists('idna_convert')),
          • 7661: $idn =  new idna_convert // if(class_exists('idna_convert')),
          • 7662: $parsed = SimplePie_Misc::parse_url($url) // if(class_exists('idna_convert')),
          • 7662: $parsed = SimplePie_Misc::parse_url($url) // if(class_exists('idna_convert')),
          • 7662: $parsed = SimplePie_Misc::parse_url($url) // if(class_exists('idna_convert')),
          • 7662: $parsed = SimplePie_Misc::parse_url($url) // if(class_exists('idna_convert')),
    • requires:
      • 7667: if(preg_match('/^http(s)?:\/\//i'$url))
      • 7737: if(!$force_fsockopen && function_exists('curl_exec')) else 
      • 7657:  function simplepie_file($url$timeout = 10$redirects = 5$headers = null$useragent = null$force_fsockopen = false)
File Manipulation

Userinput reaches sensitive sink when function simplepie_file() is called. (Blind exploitation)
  • 7792: fwrite fwrite($fp$out)
    • 7751: $fp = fsockopen($socket_host$url_parts['port']$errno$errstr$timeout) // stopped, already traced
    • 7791: $out .= "Connection: Close\r\n\r\n"
      • 7789: $out .= "$key$value\r\n"
        • 7785: $out .= "Authorization: Basic " . base64_encode("$url_parts[user]:$url_parts[pass]") . "\r\n" // if(isset($url_parts) && isset($url_parts)),
          • 7780: $out .= "Accept-Encoding: x-gzip,gzip,deflate\r\n" // if(extension_loaded('zlib')),
            • 7777: $out .= "User-Agent: $useragent\r\n"
              • 7776: $out .= "Host: $url_parts[host]\r\n"
                • 7775: $out = "GET $get HTTP/1.0\r\n"
                  • 7773: $get = '/' // if(isset($url_parts)) else ,
                  • 7768: $get = $url_parts['path'] // if(isset($url_parts)), if(isset($url_parts)) else ,
                    • 7740: $url_parts = parse_url($url)
                      • 7663: $url = SimplePie_Misc::compress_parse_url($parsed['scheme']$idn->encode ($parsed['authority'])$parsed['path']$parsed['query']$parsed['fragment']) // if(class_exists('idna_convert')),
                        • 7662: $parsed = SimplePie_Misc::parse_url($url) // if(class_exists('idna_convert')),
                        • 7661: $idn =  new idna_convert // if(class_exists('idna_convert')),
                        • 7662: $parsed = SimplePie_Misc::parse_url($url) // if(class_exists('idna_convert')),
                        • 7662: $parsed = SimplePie_Misc::parse_url($url) // if(class_exists('idna_convert')),
                        • 7662: $parsed = SimplePie_Misc::parse_url($url) // if(class_exists('idna_convert')),
                        • 7662: $parsed = SimplePie_Misc::parse_url($url) // if(class_exists('idna_convert')),
                • 7740: $url_parts = parse_url($url)
                  • 7663: $url = SimplePie_Misc::compress_parse_url($parsed['scheme']$idn->encode ($parsed['authority'])$parsed['path']$parsed['query']$parsed['fragment']) // if(class_exists('idna_convert')),
                    • 7662: $parsed = SimplePie_Misc::parse_url($url) // if(class_exists('idna_convert')),
                    • 7661: $idn =  new idna_convert // if(class_exists('idna_convert')),
                    • 7662: $parsed = SimplePie_Misc::parse_url($url) // if(class_exists('idna_convert')),
                    • 7662: $parsed = SimplePie_Misc::parse_url($url) // if(class_exists('idna_convert')),
                    • 7662: $parsed = SimplePie_Misc::parse_url($url) // if(class_exists('idna_convert')),
                    • 7662: $parsed = SimplePie_Misc::parse_url($url) // if(class_exists('idna_convert')),
              • 7671: $useragent = ini_get('user_agent') // if($useragent === null),
          • 7740: $url_parts = parse_url($url)
            • 7663: $url = SimplePie_Misc::compress_parse_url($parsed['scheme']$idn->encode ($parsed['authority'])$parsed['path']$parsed['query']$parsed['fragment']) // if(class_exists('idna_convert')),
    • requires:
      • 7667: if(preg_match('/^http(s)?:\/\//i'$url))
      • 7737: if(!$force_fsockopen && function_exists('curl_exec')) else 
      • 7757: if(!$fp) else 
      • 7657:  function simplepie_file($url$timeout = 10$redirects = 5$headers = null$useragent = null$force_fsockopen = false)
File Disclosure

Userinput reaches sensitive sink when function simplepie_file() is called. (Blind exploitation)
  • 7866: file_get_contents file_get_contents($url))
    • 7663: $url = SimplePie_Misc::compress_parse_url($parsed['scheme']$idn->encode ($parsed['authority'])$parsed['path']$parsed['query']$parsed['fragment']) // if(class_exists('idna_convert')),
      • 7662: $parsed = SimplePie_Misc::parse_url($url) // if(class_exists('idna_convert')),
      • 7661: $idn =  new idna_convert // if(class_exists('idna_convert')),
      • 7662: $parsed = SimplePie_Misc::parse_url($url) // if(class_exists('idna_convert')),
      • 7662: $parsed = SimplePie_Misc::parse_url($url) // if(class_exists('idna_convert')),
      • 7662: $parsed = SimplePie_Misc::parse_url($url) // if(class_exists('idna_convert')),
      • 7662: $parsed = SimplePie_Misc::parse_url($url) // if(class_exists('idna_convert')),
    • requires:
      • 7863: if(preg_match('/^http(s)?:\/\//i'$url)) else 
      • 7657:  function simplepie_file($url$timeout = 10$redirects = 5$headers = null$useragent = null$force_fsockopen = false)

File: /srv/http-rips/tests/test-1/inc/load.php

File Disclosure

Userinput reaches sensitive sink.
  • 23: opendir $handle = opendir($path) // filer.php
    • 19:  function read_recursiv($path$scan_subdirs)

Userinput is passed through function parameters.
  • 50:  $files = read_recursiv ($location$scan_subdirs) // main.php
    • 45: $location = realpath($_POST['loc']) // main.php
    • requires:
      • 43: if(!empty($_POST['loc']))
      • 47: if(is_dir($location))
File Disclosure

Userinput reaches sensitive sink.
  • 21: file $lines = file($file_name) // searcher.php
    • 18:  function searchfile($file_name$search)

Userinput is passed through function parameters.
  • 185:  searchfile ($file_name$_POST['regex']) // main.php
    • 183: foreach($files as $file_name) // main.php
      • 61: $files = array() // main.phpif(is_file($location) && in_array(substr($location, strrpos($location, '.')), $FILETYPES)) else ,
      • 57: $files[0] = $location // main.phpif(is_file($location) && in_array(substr($location, strrpos($location, '.')), $FILETYPES)),
        • 45: $location = realpath($_POST['loc']) // main.php
      • 50: $files = read_recursiv ($location$scan_subdirs) // main.phpif(is_dir($location)),
        • 45: $location = realpath($_POST['loc']) // main.php
        • 49: $scan_subdirs = $_POST['subdirs'] : false // main.phpif(is_dir($location)),
    • requires:
      • 43: if(!empty($_POST['loc']))
      • 179: if(!empty($_POST['regex']))
Code Evaluation

Userinput reaches sensitive sink.
  • 33: preg_replace $line = preg_replace("/(>[^<]*)(" . trim($search) . ")/i""$1<span class='markline'>$2</span>"$line) // searcher.php
    • 20: $search = str_replace('/''\/'$search) // searcher.php
      • 18:  function searchfile($file_name$search)
    • requires:
      • 23:  function searchfile($file_name$search)
      • 25: if(preg_match("/" . trim($search) . "/i"$lines[$i]))

Userinput is passed through function parameters.
  • 185:  searchfile ($file_name$_POST['regex']) // main.php
    • 183: foreach($files as $file_name) // main.php
      • 61: $files = array() // main.phpif(is_file($location) && in_array(substr($location, strrpos($location, '.')), $FILETYPES)) else ,
      • 57: $files[0] = $location // main.phpif(is_file($location) && in_array(substr($location, strrpos($location, '.')), $FILETYPES)),
        • 45: $location = realpath($_POST['loc']) // main.php
      • 50: $files = read_recursiv ($location$scan_subdirs) // main.phpif(is_dir($location)),
        • 45: $location = realpath($_POST['loc']) // main.php
        • 49: $scan_subdirs = $_POST['subdirs'] : false // main.phpif(is_dir($location)),
    • requires:
      • 43: if(!empty($_POST['loc']))
      • 179: if(!empty($_POST['regex']))
Possible Flow Control

Userinput returned by function parse_url() reaches sensitive sink.
  • 1177: parse_str parse_str ($url['query']$query) // common.php
    • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
File Inclusion

Userinput returned by function parse_url() reaches sensitive sink.
  • 17: require_once require_once (DOKU_INC . 'inc/confutils.php') // confutils.php
    • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
      • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
      • 1172: $query = array() // common.php
File Disclosure

Userinput reaches sensitive sink.
  • 172: file $lines = file($file) // confutils.php
    • 170:  function conftohash($file$lower = false)

Userinput reaches sensitive sink when function getinfo() is called.
  • 35:  conftohash ($info) // plugin.php
    • 34: $info = DOKU_PLUGIN . '/' . $parts[2] . '/plugin.info.txt' // plugin.php
      • 10: define('DOKU_PLUGIN'DOKU_INC . 'lib/plugins/') // pluginutils.php define()
        • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
          • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
          • 1172: $query = array() // common.php
      • 33: $parts = explode('_'get_class($this)) // plugin.php
    • requires:
      • 35: if(file_exists($info))
      • 32:  function getinfo()

Userinput reaches sensitive sink when function getinfo() is called.
  • 35:  conftohash ($info) // plugin.php
    • 34: $info = DOKU_PLUGIN . '/' . $parts[2] . '/plugin.info.txt' // plugin.php
      • 10: define('DOKU_PLUGIN'DOKU_INC . 'lib/plugins/') // pluginutils.php define()
        • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
          • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
          • 1172: $query = array() // common.php
      • 33: $parts = explode('_'get_class($this)) // plugin.php
    • requires:
      • 506: if($evt->advise_before ())
      • 35: if(file_exists($info))
      • 32:  function getinfo()
File Inclusion

Userinput returned by function parse_url() reaches sensitive sink.
  • 18: require_once require_once (DOKU_INC . 'inc/pluginutils.php') // pluginutils.php
    • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
      • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
      • 1172: $query = array() // common.php
File Inclusion

Userinput returned by function parse_url() reaches sensitive sink.
  • 19: require_once require_once (DOKU_INC . 'inc/plugin.php') // plugin.php
    • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
      • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
      • 1172: $query = array() // common.php
File Inclusion

Userinput reaches sensitive sink when function readdefaultsettings() is called.
  • 176: include include ($path . 'default.php') // plugin.php
    • 172: $path = DOKU_PLUGIN . $this->getpluginname () . '/conf/' // plugin.php
      • 10: define('DOKU_PLUGIN'DOKU_INC . 'lib/plugins/') // pluginutils.php define()
        • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
          • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
          • 1172: $query = array() // common.php
    • requires:
      • 175: if(file_exists($path . 'default.php'))
      • 170:  function readdefaultsettings()
Code Evaluation

Userinput is used as dynamic function name. Arbitrary functions may be called.
  • 88: $method $method($this->data) // events.php
    • 87: list($obj$method) = $action // events.php list()
      • 734: $action = valid_input_set ('action'array('subscribe''unsubscribe')$params'invalid subscription action given') // actions.php
        • 680: $params[$param] = $_REQUEST["sub_$param"] // actions.phpif(isset($_REQUEST)),
    • requires:
      • 85: if($this->advise_before ($enablePrevent) && is_callable($action))
      • 86: if(is_array($action))
Code Evaluation

Userinput is used as dynamic function name. Arbitrary functions may be called.
  • 90: $action $action($this->data) // events.php
    • 734: $action = valid_input_set ('action'array('subscribe''unsubscribe')$params'invalid subscription action given') // actions.php
      • 680: $params[$param] = $_REQUEST["sub_$param"] // actions.phpif(isset($_REQUEST)),
    • requires:
      • 85: if($this->advise_before ($enablePrevent) && is_callable($action))
      • 89: if(is_array($action)) else 
Code Evaluation

Userinput returned by function parse_url() reaches sensitive sink.
  • 264: call_user_func $form .= call_user_func('form_' . $elem_type$element) . DOKU_LF // form.php
    • 262: $elem_type = $element['_elem'] // form.php
      • 260: foreach($this->_content as $element) // form.php
        • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
          • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
          • 1172: $query = array() // common.php
        • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
          • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
          • 1172: $query = array() // common.php
    • requires:
      • 261: if(is_array($element))
      • 263: if(function_exists('form_' . $elem_type))
File Inclusion

Userinput returned by function parse_url() reaches sensitive sink.
  • 22: require_once require_once (DOKU_INC . 'inc/fulltext.php') // fulltext.php
    • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
      • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
      • 1172: $query = array() // common.php
Code Evaluation

Userinput returned by function parse_url() reaches sensitive sink.
  • 377: preg_replace $snippets = preg_replace('/' . $re1 . '/iu'$m . '$1' . $m$snippets) // fulltext.php
    • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
      • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
      • 1172: $query = array() // common.php
    • 376: $m = "\1" // fulltext.php
    • 376: $m = "\1" // fulltext.php
    • requires:
      • 308: if($evt->advise_before ())
File Inclusion

Userinput returned by function parse_url() reaches sensitive sink.
  • 23: require_once require_once (DOKU_INC . 'inc/html.php') // html.php
    • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
      • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
      • 1172: $query = array() // common.php
Code Evaluation

Userinput returned by function parse_url() reaches sensitive sink.
  • 90: preg_replace_callback preg_replace_callback($regexp'html_secedit_button'$text) // html.php
    • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
      • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
      • 1172: $query = array() // common.php
Unserialize

Userinput reaches sensitive sink when function html_draft() is called.
  • 259: unserialize $draft = unserialize(io_readfile ($INFO['draft']false)) // html.php
    • 255:  global $INFO // html.php
      • 706: $INFO['subscribed'] = get_info_subscribed () // actions.php
    • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
      • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
      • 1172: $query = array() // common.php
    • requires:
      • 254:  function html_draft()

Call triggers vulnerability in function html_draft()
  • 74:  html_draft () // template.php
    • requires:
      • 59: switch($ACT)
      • 73:  case 'draft' : 
Code Evaluation

Userinput returned by function parse_url() reaches sensitive sink.
  • 288: preg_replace_callback $html = preg_replace_callback("/((<[^>]*)|$regex)/ui"'html_hilight_callback'$html) // html.php
    • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
      • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
      • 1172: $query = array() // common.php
Code Evaluation

Userinput returned by function parse_url() reaches sensitive sink.
  • 938: call_user_func $ret .= call_user_func($lifunc$item) // html.php
    • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
      • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
      • 1172: $query = array() // common.php
Code Evaluation

Userinput returned by function parse_url() reaches sensitive sink.
  • 941: call_user_func $ret .= call_user_func($func$item) // html.php
    • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
      • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
      • 1172: $query = array() // common.php
File Inclusion

Userinput returned by function parse_url() reaches sensitive sink.
  • 24: require_once require_once (DOKU_INC . 'inc/httputils.php') // httputils.php
    • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
      • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
      • 1172: $query = array() // common.php
File Disclosure

Userinput returned by function parse_url() reaches sensitive sink. (Blind exploitation)
  • 170: fread print fread($fh$chunk) // httputils.php
    • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
      • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
      • 1172: $query = array() // common.php
File Inclusion

Userinput returned by function parse_url() reaches sensitive sink.
  • 25: require_once require_once (DOKU_INC . 'inc/indexer.php') // indexer.php
    • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
      • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
      • 1172: $query = array() // common.php
Code Evaluation

Userinput returned by function parse_url() reaches sensitive sink.
  • 550: call_user_func_array call_user_func_array($funcarray($val$word))) // indexer.php
    • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
      • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
      • 1172: $query = array() // common.php
    • requires:
      • 547: if(!is_null($func))
File Manipulation

Userinput returned by function parse_url() reaches sensitive sink. (Blind exploitation)
  • 865: fwrite fwrite($fhjoin("\n"$lines)) // indexer.php
    • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
      • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
      • 1172: $query = array() // common.php
    • 723: $lines = $this->getindex ($metaname . '_i''') // indexer.php
      • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
        • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
        • 1172: $query = array() // common.php
      • 711: $metaname = idx_cleanname ($key) // indexer.php
        • 1812: foreach($params as $key=>$val) // html.php
          • 453: $params['action'] = media_managerurl (array('image'=>$media_id)'&') // html.php
            • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
              • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
              • 1172: $query = array() // common.php
          • 452: $params['id'] = 'page__revisions' // html.php array()
          • 180: $params['id'] = $id // html.phpelseif($conf) else ,
            • 171: $id = idfilter ($idfalse) // html.php
              • 481: foreach(array_keys($result) as $id) // fulltext.php
                • 480: $result = $args[0] // fulltext.php
                  • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
                    • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
                    • 1172: $query = array() // common.php
              • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
                • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
                • 1172: $query = array() // common.php
          • 31: $params = array() // form.php
File Manipulation

Userinput returned by function parse_url() reaches sensitive sink. (Blind exploitation)
  • 867: fwrite fwrite($fh"\n") // indexer.php
    • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
      • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
      • 1172: $query = array() // common.php
    • requires:
      • 866: if(!empty($lines))
File Disclosure

Userinput returned by function parse_url() reaches sensitive sink.
  • 919: fgets $curline = fgets($ih)) !==  // indexer.php
    • 916: $ih = fopen($fn . '.idx''r') // indexer.php
      • 913: $fn = $conf['indexdir'] . '/' . $idx . $suffix // indexer.php
        • 18: $conf = array() // plugin.php
        • 142: $idx = $index[$wid] : '' // indexer.phpif(!empty($words)),
          • 140: $index = $this->getindex ('i'$wlen) // indexer.phpif(!empty($words)),
            • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
              • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
              • 1172: $query = array() // common.php
            • 139: foreach(array_keys($words) as $wlen) // indexer.phpif(!empty($words)),
              • 132: $words = $this->getpagewords ($text) // indexer.php
                • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
                  • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
                  • 1172: $query = array() // common.php
                • 75: $text = utf8_strtolower (rawwiki ($id)) // fulltext.phpswitch(substr($token, 0, 3)), case 'P-:' : ,
                  • 74: foreach(array_keys($pages) as $id) // fulltext.phpswitch(substr($token, 0, 3)), case 'P-:' : ,
                    • 72: $pages = end($stack) // fulltext.phpswitch(substr($token, 0, 3)), case 'P-:' : ,
                      • 64: $stack[] = (array)$lookup[$word] // fulltext.phpswitch(substr($token, 0, 3)), case 'W_:' : ,
                        • 48: $lookup = $Indexer->lookup ($q['words']) // fulltext.php
                          • : 
                          • 1191: $q = preg_split('/[\s\'"\\\\`()\]\[?:!\.{};,#+*<>\\/]+/'$q - 1PREG_SPLIT_NO_EMPTY) // common.php
                            • 1188: $q = urldecode(ltrim($url['path']'/')) // common.phpelseif(preg_match("#a9\.com#i", $url)),
                              • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
                            • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
                              • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
                              • 1172: $query = array() // common.php
        • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
          • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
          • 1172: $query = array() // common.php
    • requires:
      • 917: if($ih)
File Manipulation

Userinput returned by function parse_url() reaches sensitive sink. (Blind exploitation)
  • 920: fwrite fwrite($fh$line : $curline) // indexer.php
    • 914: $fh = fopen($fn . '.tmp''w') // indexer.php
      • 913: $fn = $conf['indexdir'] . '/' . $idx . $suffix // indexer.php
        • 18: $conf = array() // plugin.php
        • 142: $idx = $index[$wid] : '' // indexer.phpif(!empty($words)),
          • 140: $index = $this->getindex ('i'$wlen) // indexer.phpif(!empty($words)),
            • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
              • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
              • 1172: $query = array() // common.php
            • 139: foreach(array_keys($words) as $wlen) // indexer.phpif(!empty($words)),
              • 132: $words = $this->getpagewords ($text) // indexer.php
                • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
                  • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
                  • 1172: $query = array() // common.php
                • 75: $text = utf8_strtolower (rawwiki ($id)) // fulltext.phpswitch(substr($token, 0, 3)), case 'P-:' : ,
                  • 74: foreach(array_keys($pages) as $id) // fulltext.phpswitch(substr($token, 0, 3)), case 'P-:' : ,
                    • 72: $pages = end($stack) // fulltext.phpswitch(substr($token, 0, 3)), case 'P-:' : ,
                      • 64: $stack[] = (array)$lookup[$word] // fulltext.phpswitch(substr($token, 0, 3)), case 'W_:' : ,
                        • 48: $lookup = $Indexer->lookup ($q['words']) // fulltext.php
                          • : 
                          • 1191: $q = preg_split('/[\s\'"\\\\`()\]\[?:!\.{};,#+*<>\\/]+/'$q - 1PREG_SPLIT_NO_EMPTY) // common.php
                            • 1188: $q = urldecode(ltrim($url['path']'/')) // common.phpelseif(preg_match("#a9\.com#i", $url)),
                              • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
                            • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
                              • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
                              • 1172: $query = array() // common.php
        • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
          • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
          • 1172: $query = array() // common.php
    • 893: $line = fgets($fh)) !==  // indexer.php stopped, already traced
    • requires:
      • 917: if($ih)
File Manipulation

Userinput returned by function parse_url() reaches sensitive sink. (Blind exploitation)
  • 924: fwrite fwrite($fh"\n") // indexer.php
    • 914: $fh = fopen($fn . '.tmp''w') // indexer.php
      • 913: $fn = $conf['indexdir'] . '/' . $idx . $suffix // indexer.php
        • 18: $conf = array() // plugin.php
        • 142: $idx = $index[$wid] : '' // indexer.phpif(!empty($words)),
          • 140: $index = $this->getindex ('i'$wlen) // indexer.phpif(!empty($words)),
            • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
              • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
              • 1172: $query = array() // common.php
            • 139: foreach(array_keys($words) as $wlen) // indexer.phpif(!empty($words)),
              • 132: $words = $this->getpagewords ($text) // indexer.php
                • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
                  • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
                  • 1172: $query = array() // common.php
                • 75: $text = utf8_strtolower (rawwiki ($id)) // fulltext.phpswitch(substr($token, 0, 3)), case 'P-:' : ,
                  • 74: foreach(array_keys($pages) as $id) // fulltext.phpswitch(substr($token, 0, 3)), case 'P-:' : ,
                    • 72: $pages = end($stack) // fulltext.phpswitch(substr($token, 0, 3)), case 'P-:' : ,
                      • 64: $stack[] = (array)$lookup[$word] // fulltext.phpswitch(substr($token, 0, 3)), case 'W_:' : ,
                        • 48: $lookup = $Indexer->lookup ($q['words']) // fulltext.php
                          • : 
                          • 1191: $q = preg_split('/[\s\'"\\\\`()\]\[?:!\.{};,#+*<>\\/]+/'$q - 1PREG_SPLIT_NO_EMPTY) // common.php
                            • 1188: $q = urldecode(ltrim($url['path']'/')) // common.phpelseif(preg_match("#a9\.com#i", $url)),
                              • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
                            • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
                              • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
                              • 1172: $query = array() // common.php
        • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
          • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
          • 1172: $query = array() // common.php
    • requires:
      • 917: if($ih)
      • 922: if($id > $ln)
File Manipulation

Userinput returned by function parse_url() reaches sensitive sink. (Blind exploitation)
  • 925: fwrite fwrite($fh$line) // indexer.php
    • 914: $fh = fopen($fn . '.tmp''w') // indexer.php
      • 913: $fn = $conf['indexdir'] . '/' . $idx . $suffix // indexer.php
        • 18: $conf = array() // plugin.php
        • 142: $idx = $index[$wid] : '' // indexer.phpif(!empty($words)),
          • 140: $index = $this->getindex ('i'$wlen) // indexer.phpif(!empty($words)),
            • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
              • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
              • 1172: $query = array() // common.php
            • 139: foreach(array_keys($words) as $wlen) // indexer.phpif(!empty($words)),
              • 132: $words = $this->getpagewords ($text) // indexer.php
                • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
                  • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
                  • 1172: $query = array() // common.php
                • 75: $text = utf8_strtolower (rawwiki ($id)) // fulltext.phpswitch(substr($token, 0, 3)), case 'P-:' : ,
                  • 74: foreach(array_keys($pages) as $id) // fulltext.phpswitch(substr($token, 0, 3)), case 'P-:' : ,
                    • 72: $pages = end($stack) // fulltext.phpswitch(substr($token, 0, 3)), case 'P-:' : ,
                      • 64: $stack[] = (array)$lookup[$word] // fulltext.phpswitch(substr($token, 0, 3)), case 'W_:' : ,
                        • 48: $lookup = $Indexer->lookup ($q['words']) // fulltext.php
                          • : 
                          • 1191: $q = preg_split('/[\s\'"\\\\`()\]\[?:!\.{};,#+*<>\\/]+/'$q - 1PREG_SPLIT_NO_EMPTY) // common.php
                            • 1188: $q = urldecode(ltrim($url['path']'/')) // common.phpelseif(preg_match("#a9\.com#i", $url)),
                              • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
                            • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
                              • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
                              • 1172: $query = array() // common.php
        • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
          • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
          • 1172: $query = array() // common.php
    • 893: $line = fgets($fh)) !==  // indexer.php stopped, already traced
    • requires:
      • 917: if($ih)
      • 922: if($id > $ln)
File Manipulation

Userinput returned by function parse_url() reaches sensitive sink. (Blind exploitation)
  • 931: fwrite fwrite($fh"\n") // indexer.php
    • 914: $fh = fopen($fn . '.tmp''w') // indexer.php
      • 913: $fn = $conf['indexdir'] . '/' . $idx . $suffix // indexer.php
        • 18: $conf = array() // plugin.php
        • 142: $idx = $index[$wid] : '' // indexer.phpif(!empty($words)),
          • 140: $index = $this->getindex ('i'$wlen) // indexer.phpif(!empty($words)),
            • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
              • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
              • 1172: $query = array() // common.php
            • 139: foreach(array_keys($words) as $wlen) // indexer.phpif(!empty($words)),
              • 132: $words = $this->getpagewords ($text) // indexer.php
                • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
                  • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
                  • 1172: $query = array() // common.php
                • 75: $text = utf8_strtolower (rawwiki ($id)) // fulltext.phpswitch(substr($token, 0, 3)), case 'P-:' : ,
                  • 74: foreach(array_keys($pages) as $id) // fulltext.phpswitch(substr($token, 0, 3)), case 'P-:' : ,
                    • 72: $pages = end($stack) // fulltext.phpswitch(substr($token, 0, 3)), case 'P-:' : ,
                      • 64: $stack[] = (array)$lookup[$word] // fulltext.phpswitch(substr($token, 0, 3)), case 'W_:' : ,
                        • 48: $lookup = $Indexer->lookup ($q['words']) // fulltext.php
                          • : 
                          • 1191: $q = preg_split('/[\s\'"\\\\`()\]\[?:!\.{};,#+*<>\\/]+/'$q - 1PREG_SPLIT_NO_EMPTY) // common.php
                            • 1188: $q = urldecode(ltrim($url['path']'/')) // common.phpelseif(preg_match("#a9\.com#i", $url)),
                              • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
                            • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
                              • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
                              • 1172: $query = array() // common.php
        • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
          • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
          • 1172: $query = array() // common.php
    • requires:
      • 928: if($ih) else 
File Manipulation

Userinput returned by function parse_url() reaches sensitive sink. (Blind exploitation)
  • 932: fwrite fwrite($fh$line) // indexer.php
    • 914: $fh = fopen($fn . '.tmp''w') // indexer.php
      • 913: $fn = $conf['indexdir'] . '/' . $idx . $suffix // indexer.php
        • 18: $conf = array() // plugin.php
        • 142: $idx = $index[$wid] : '' // indexer.phpif(!empty($words)),
          • 140: $index = $this->getindex ('i'$wlen) // indexer.phpif(!empty($words)),
            • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
              • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
              • 1172: $query = array() // common.php
            • 139: foreach(array_keys($words) as $wlen) // indexer.phpif(!empty($words)),
              • 132: $words = $this->getpagewords ($text) // indexer.php
                • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
                  • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
                  • 1172: $query = array() // common.php
                • 75: $text = utf8_strtolower (rawwiki ($id)) // fulltext.phpswitch(substr($token, 0, 3)), case 'P-:' : ,
                  • 74: foreach(array_keys($pages) as $id) // fulltext.phpswitch(substr($token, 0, 3)), case 'P-:' : ,
                    • 72: $pages = end($stack) // fulltext.phpswitch(substr($token, 0, 3)), case 'P-:' : ,
                      • 64: $stack[] = (array)$lookup[$word] // fulltext.phpswitch(substr($token, 0, 3)), case 'W_:' : ,
                        • 48: $lookup = $Indexer->lookup ($q['words']) // fulltext.php
                          • : 
                          • 1191: $q = preg_split('/[\s\'"\\\\`()\]\[?:!\.{};,#+*<>\\/]+/'$q - 1PREG_SPLIT_NO_EMPTY) // common.php
                            • 1188: $q = urldecode(ltrim($url['path']'/')) // common.phpelseif(preg_match("#a9\.com#i", $url)),
                              • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
                            • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
                              • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
                              • 1172: $query = array() // common.php
        • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
          • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
          • 1172: $query = array() // common.php
    • 893: $line = fgets($fh)) !==  // indexer.php stopped, already traced
    • requires:
      • 928: if($ih) else 
File Manipulation

Userinput returned by function parse_url() reaches sensitive sink. (Blind exploitation)
  • 936: chmod chmod($fn . '.tmp'$conf['fperm']) // indexer.php
    • 913: $fn = $conf['indexdir'] . '/' . $idx . $suffix // indexer.php
      • 18: $conf = array() // plugin.php
      • 142: $idx = $index[$wid] : '' // indexer.phpif(!empty($words)),
        • 140: $index = $this->getindex ('i'$wlen) // indexer.phpif(!empty($words)),
          • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
            • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
            • 1172: $query = array() // common.php
          • 139: foreach(array_keys($words) as $wlen) // indexer.phpif(!empty($words)),
            • 132: $words = $this->getpagewords ($text) // indexer.php
              • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
                • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
                • 1172: $query = array() // common.php
              • 75: $text = utf8_strtolower (rawwiki ($id)) // fulltext.phpswitch(substr($token, 0, 3)), case 'P-:' : ,
                • 74: foreach(array_keys($pages) as $id) // fulltext.phpswitch(substr($token, 0, 3)), case 'P-:' : ,
                  • 72: $pages = end($stack) // fulltext.phpswitch(substr($token, 0, 3)), case 'P-:' : ,
                    • 64: $stack[] = (array)$lookup[$word] // fulltext.phpswitch(substr($token, 0, 3)), case 'W_:' : ,
                      • 48: $lookup = $Indexer->lookup ($q['words']) // fulltext.php
                        • : 
                        • 1191: $q = preg_split('/[\s\'"\\\\`()\]\[?:!\.{};,#+*<>\\/]+/'$q - 1PREG_SPLIT_NO_EMPTY) // common.php
                          • 1188: $q = urldecode(ltrim($url['path']'/')) // common.phpelseif(preg_match("#a9\.com#i", $url)),
                            • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
                          • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
                            • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
                            • 1172: $query = array() // common.php
      • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
        • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
        • 1172: $query = array() // common.php
    • requires:
      • 935: if(isset($conf['fperm']))
File Disclosure

Userinput returned by function parse_url() reaches sensitive sink.
  • 972: file $lengths = file($cachename . '.idx'FILE_IGNORE_NEW_LINES|FILE_SKIP_EMPTY_LINES) // indexer.php
    • 971: $cachename = $conf['indexdir'] . '/' . $idx . 'lengths' // indexer.phpif($idx == 'i') else ,
      • 18: $conf = array() // plugin.php
      • 142: $idx = $index[$wid] : '' // indexer.phpif(!empty($words)),
        • 140: $index = $this->getindex ('i'$wlen) // indexer.phpif(!empty($words)),
          • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
            • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
            • 1172: $query = array() // common.php
          • 139: foreach(array_keys($words) as $wlen) // indexer.phpif(!empty($words)),
            • 132: $words = $this->getpagewords ($text) // indexer.php
              • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
                • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
                • 1172: $query = array() // common.php
              • 75: $text = utf8_strtolower (rawwiki ($id)) // fulltext.phpswitch(substr($token, 0, 3)), case 'P-:' : ,
                • 74: foreach(array_keys($pages) as $id) // fulltext.phpswitch(substr($token, 0, 3)), case 'P-:' : ,
                  • 72: $pages = end($stack) // fulltext.phpswitch(substr($token, 0, 3)), case 'P-:' : ,
                    • 64: $stack[] = (array)$lookup[$word] // fulltext.phpswitch(substr($token, 0, 3)), case 'W_:' : ,
                      • 48: $lookup = $Indexer->lookup ($q['words']) // fulltext.php
                        • : 
                        • 1191: $q = preg_split('/[\s\'"\\\\`()\]\[?:!\.{};,#+*<>\\/]+/'$q - 1PREG_SPLIT_NO_EMPTY) // common.php
                          • 1188: $q = urldecode(ltrim($url['path']'/')) // common.phpelseif(preg_match("#a9\.com#i", $url)),
                            • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
                          • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
                            • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
                            • 1172: $query = array() // common.php
File Manipulation

Userinput returned by function parse_url() reaches sensitive sink. (Blind exploitation)
  • 988: fwrite fwrite($fhimplode("\n"$lengths)) // indexer.php
    • 983: $fh = fopen($cachename . '.tmp''w') // indexer.php
      • 971: $cachename = $conf['indexdir'] . '/' . $idx . 'lengths' // indexer.phpif($idx == 'i') else ,
        • 18: $conf = array() // plugin.php
        • 142: $idx = $index[$wid] : '' // indexer.phpif(!empty($words)),
          • 140: $index = $this->getindex ('i'$wlen) // indexer.phpif(!empty($words)),
            • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
              • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
              • 1172: $query = array() // common.php
            • 139: foreach(array_keys($words) as $wlen) // indexer.phpif(!empty($words)),
              • 132: $words = $this->getpagewords ($text) // indexer.php
                • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
                  • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
                  • 1172: $query = array() // common.php
                • 75: $text = utf8_strtolower (rawwiki ($id)) // fulltext.phpswitch(substr($token, 0, 3)), case 'P-:' : ,
                  • 74: foreach(array_keys($pages) as $id) // fulltext.phpswitch(substr($token, 0, 3)), case 'P-:' : ,
                    • 72: $pages = end($stack) // fulltext.phpswitch(substr($token, 0, 3)), case 'P-:' : ,
                      • 64: $stack[] = (array)$lookup[$word] // fulltext.phpswitch(substr($token, 0, 3)), case 'W_:' : ,
                        • 48: $lookup = $Indexer->lookup ($q['words']) // fulltext.php
                          • : 
                          • 1191: $q = preg_split('/[\s\'"\\\\`()\]\[?:!\.{};,#+*<>\\/]+/'$q - 1PREG_SPLIT_NO_EMPTY) // common.php
                            • 1188: $q = urldecode(ltrim($url['path']'/')) // common.phpelseif(preg_match("#a9\.com#i", $url)),
                              • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
                            • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
                              • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
                              • 1172: $query = array() // common.php
    • 980: $lengths[] = $suffix // indexer.phpif(empty($lines)) else , if($old !== false),
      • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
        • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
        • 1172: $query = array() // common.php
File Manipulation

Userinput returned by function parse_url() reaches sensitive sink. (Blind exploitation)
  • 991: chmod chmod($cachename . '.tmp'$conf['fperm']) // indexer.php
    • 971: $cachename = $conf['indexdir'] . '/' . $idx . 'lengths' // indexer.phpif($idx == 'i') else ,
      • 18: $conf = array() // plugin.php
      • 142: $idx = $index[$wid] : '' // indexer.phpif(!empty($words)),
        • 140: $index = $this->getindex ('i'$wlen) // indexer.phpif(!empty($words)),
          • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
            • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
            • 1172: $query = array() // common.php
          • 139: foreach(array_keys($words) as $wlen) // indexer.phpif(!empty($words)),
            • 132: $words = $this->getpagewords ($text) // indexer.php
              • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
                • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
                • 1172: $query = array() // common.php
              • 75: $text = utf8_strtolower (rawwiki ($id)) // fulltext.phpswitch(substr($token, 0, 3)), case 'P-:' : ,
                • 74: foreach(array_keys($pages) as $id) // fulltext.phpswitch(substr($token, 0, 3)), case 'P-:' : ,
                  • 72: $pages = end($stack) // fulltext.phpswitch(substr($token, 0, 3)), case 'P-:' : ,
                    • 64: $stack[] = (array)$lookup[$word] // fulltext.phpswitch(substr($token, 0, 3)), case 'W_:' : ,
                      • 48: $lookup = $Indexer->lookup ($q['words']) // fulltext.php
                        • : 
                        • 1191: $q = preg_split('/[\s\'"\\\\`()\]\[?:!\.{};,#+*<>\\/]+/'$q - 1PREG_SPLIT_NO_EMPTY) // common.php
                          • 1188: $q = urldecode(ltrim($url['path']'/')) // common.phpelseif(preg_match("#a9\.com#i", $url)),
                            • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
                          • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
                            • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
                            • 1172: $query = array() // common.php
    • requires:
      • 990: if(isset($conf['fperm']))
File Manipulation

Userinput returned by function parse_url() reaches sensitive sink. (Blind exploitation)
  • 1036: fwrite fwrite($fhimplode("\n"$lengths)) // indexer.php
    • 1031: $fh = fopen($cachename . '.tmp''w') // indexer.php
      • 971: $cachename = $conf['indexdir'] . '/' . $idx . 'lengths' // indexer.phpif($idx == 'i') else ,
        • 18: $conf = array() // plugin.php
        • 142: $idx = $index[$wid] : '' // indexer.phpif(!empty($words)),
          • 140: $index = $this->getindex ('i'$wlen) // indexer.phpif(!empty($words)),
            • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
              • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
              • 1172: $query = array() // common.php
            • 139: foreach(array_keys($words) as $wlen) // indexer.phpif(!empty($words)),
              • 132: $words = $this->getpagewords ($text) // indexer.php
                • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
                  • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
                  • 1172: $query = array() // common.php
                • 75: $text = utf8_strtolower (rawwiki ($id)) // fulltext.phpswitch(substr($token, 0, 3)), case 'P-:' : ,
                  • 74: foreach(array_keys($pages) as $id) // fulltext.phpswitch(substr($token, 0, 3)), case 'P-:' : ,
                    • 72: $pages = end($stack) // fulltext.phpswitch(substr($token, 0, 3)), case 'P-:' : ,
                      • 64: $stack[] = (array)$lookup[$word] // fulltext.phpswitch(substr($token, 0, 3)), case 'W_:' : ,
                        • 48: $lookup = $Indexer->lookup ($q['words']) // fulltext.php
                          • : 
                          • 1191: $q = preg_split('/[\s\'"\\\\`()\]\[?:!\.{};,#+*<>\\/]+/'$q - 1PREG_SPLIT_NO_EMPTY) // common.php
                            • 1188: $q = urldecode(ltrim($url['path']'/')) // common.phpelseif(preg_match("#a9\.com#i", $url)),
                              • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
                            • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
                              • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
                              • 1172: $query = array() // common.php
    • 1025: $lengths[] = (int)$i // indexer.phpif(substr($f, 0, 1) == 'i' && substr($f, - 4) == '.idx'), if(is_numeric($i)),
      • 1023: $i = substr($f1 - 4) // indexer.phpif(substr($f, 0, 1) == 'i' && substr($f, - 4) == '.idx'),
        • 1021: $f = readdir($dir)) !==  // indexer.php
          • 1017: $dir = opendir($conf['indexdir']) // indexer.php stopped, already traced
File Manipulation

Userinput returned by function parse_url() reaches sensitive sink. (Blind exploitation)
  • 1039: chmod chmod($cachename . '.tmp'$conf['fperm']) // indexer.php
    • 971: $cachename = $conf['indexdir'] . '/' . $idx . 'lengths' // indexer.phpif($idx == 'i') else ,
      • 18: $conf = array() // plugin.php
      • 142: $idx = $index[$wid] : '' // indexer.phpif(!empty($words)),
        • 140: $index = $this->getindex ('i'$wlen) // indexer.phpif(!empty($words)),
          • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
            • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
            • 1172: $query = array() // common.php
          • 139: foreach(array_keys($words) as $wlen) // indexer.phpif(!empty($words)),
            • 132: $words = $this->getpagewords ($text) // indexer.php
              • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
                • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
                • 1172: $query = array() // common.php
              • 75: $text = utf8_strtolower (rawwiki ($id)) // fulltext.phpswitch(substr($token, 0, 3)), case 'P-:' : ,
                • 74: foreach(array_keys($pages) as $id) // fulltext.phpswitch(substr($token, 0, 3)), case 'P-:' : ,
                  • 72: $pages = end($stack) // fulltext.phpswitch(substr($token, 0, 3)), case 'P-:' : ,
                    • 64: $stack[] = (array)$lookup[$word] // fulltext.phpswitch(substr($token, 0, 3)), case 'W_:' : ,
                      • 48: $lookup = $Indexer->lookup ($q['words']) // fulltext.php
                        • : 
                        • 1191: $q = preg_split('/[\s\'"\\\\`()\]\[?:!\.{};,#+*<>\\/]+/'$q - 1PREG_SPLIT_NO_EMPTY) // common.php
                          • 1188: $q = urldecode(ltrim($url['path']'/')) // common.phpelseif(preg_match("#a9\.com#i", $url)),
                            • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
                          • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
                            • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
                            • 1172: $query = array() // common.php
    • requires:
      • 1038: if(isset($conf['fperm']))
File Disclosure

Userinput reaches sensitive sink when function () is called.
  • 1157: file $stopwords = file($swfileFILE_IGNORE_NEW_LINES) // indexer.php
    • 1155: $swfile = DOKU_INC . 'inc/lang/' . $conf['lang'] . '/stopwords.txt' // indexer.php
      • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
        • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
        • 1172: $query = array() // common.php
      • 1154:  global $conf // indexer.php
        • 18: $conf = array() // plugin.php
    • requires:
      • 1153: if(is_null($stopwords))
      • 1156: if(file_exists($swfile))
      • 1151:  function &idx_get_stopwords()
File Manipulation

Userinput returned by function parse_url() reaches sensitive sink. (Blind exploitation)
  • 1200: unlink unlink ($idxtag) // indexer.php
    • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
      • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
      • 1172: $query = array() // common.php
    • requires:
      • 1189: if(!page_exists ($page))
File Manipulation

Userinput returned by function parse_url() reaches sensitive sink. (Blind exploitation)
  • 1213: unlink unlink ($idxtag) // indexer.php
    • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
      • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
      • 1172: $query = array() // common.php
    • requires:
      • 1204: if($indexenabled === false)
      • 1206: if(file_exists($idxtag))
Possible Flow Control

Userinput returned by function parse_url() reaches sensitive sink.
  • 1231: extract extract($data) // indexer.php
    • 1228: $data['body'] = $data['body'] . " " . rawwiki ($page) // indexer.php
      • 1226: $data['body'] = $body // indexer.php compact()
        • 1219: $body = '' // indexer.php
      • 592: $page = $page_idx[$pid] // indexer.phpif($key == 'title'),
        • 587: $page_idx = $this->getindex ('page''') // indexer.php
          • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
            • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
            • 1172: $query = array() // common.php
File Disclosure

Userinput returned by function parse_url() reaches sensitive sink. (Blind exploitation)
  • 1294: file file($fn) // indexer.php
    • 913: $fn = $conf['indexdir'] . '/' . $idx . $suffix // indexer.php
      • 18: $conf = array() // plugin.php
      • 142: $idx = $index[$wid] : '' // indexer.phpif(!empty($words)),
        • 140: $index = $this->getindex ('i'$wlen) // indexer.phpif(!empty($words)),
          • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
            • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
            • 1172: $query = array() // common.php
          • 139: foreach(array_keys($words) as $wlen) // indexer.phpif(!empty($words)),
            • 132: $words = $this->getpagewords ($text) // indexer.php
              • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
                • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
                • 1172: $query = array() // common.php
              • 75: $text = utf8_strtolower (rawwiki ($id)) // fulltext.phpswitch(substr($token, 0, 3)), case 'P-:' : ,
                • 74: foreach(array_keys($pages) as $id) // fulltext.phpswitch(substr($token, 0, 3)), case 'P-:' : ,
                  • 72: $pages = end($stack) // fulltext.phpswitch(substr($token, 0, 3)), case 'P-:' : ,
                    • 64: $stack[] = (array)$lookup[$word] // fulltext.phpswitch(substr($token, 0, 3)), case 'W_:' : ,
                      • 48: $lookup = $Indexer->lookup ($q['words']) // fulltext.php
                        • : 
                        • 1191: $q = preg_split('/[\s\'"\\\\`()\]\[?:!\.{};,#+*<>\\/]+/'$q - 1PREG_SPLIT_NO_EMPTY) // common.php
                          • 1188: $q = urldecode(ltrim($url['path']'/')) // common.phpelseif(preg_match("#a9\.com#i", $url)),
                            • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
                          • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
                            • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
                            • 1172: $query = array() // common.php
      • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
        • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
        • 1172: $query = array() // common.php
File Inclusion

Userinput returned by function parse_url() reaches sensitive sink.
  • 26: require_once require_once (DOKU_INC . 'inc/infoutils.php') // infoutils.php
    • 1231: extract($data) // indexer.phpregister_globals implementation
      • 1228: $data['body'] = $data['body'] . " " . rawwiki ($page) // indexer.php
        • 1226: $data['body'] = $body // indexer.php compact()
          • 1219: $body = '' // indexer.php
        • 592: $page = $page_idx[$pid] // indexer.phpif($key == 'title'),
          • 587: $page_idx = $this->getindex ('page''') // indexer.php
            • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
              • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
              • 1172: $query = array() // common.php
File Disclosure

Userinput returned by function parse_url() reaches sensitive sink.
  • 66: fread $chunk = fread($fh2000) // infoutils.php
    • 64: $fh = fopen($inventory'rb') // infoutils.php
      • 60: $inventory = DOKU_INC . '.git/logs/HEAD' // infoutils.php
        • 1231: extract($data) // indexer.phpregister_globals implementation
          • 1228: $data['body'] = $data['body'] . " " . rawwiki ($page) // indexer.php
            • 1226: $data['body'] = $body // indexer.php compact()
              • 1219: $body = '' // indexer.php
            • 592: $page = $page_idx[$pid] // indexer.phpif($key == 'title'),
              • 587: $page_idx = $this->getindex ('page''') // indexer.php
                • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
                  • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
                  • 1172: $query = array() // common.php
    • requires:
      • 56: elseif(is_dir(DOKU_INC . '.git'))
      • 61: if(is_file($inventory))
File Manipulation

Userinput returned by function parse_url() reaches sensitive sink. (Blind exploitation)
  • 356: fwrite fwrite($fhdate('H:i:s ') . $_SERVER['REMOTE_ADDR'] . ': ' . $msg . "\n") // infoutils.php
    • 354: $fh = fopen($file'a') // infoutils.php
      • 353: $file = $conf['cachedir'] . '/debug.log' // infoutils.php
        • 18: $conf = array() // plugin.php
    • 351: $msg = "$header\n$msg" // infoutils.php
      • 1231: extract($data) // indexer.phpregister_globals implementation
        • 1228: $data['body'] = $data['body'] . " " . rawwiki ($page) // indexer.php
          • 1226: $data['body'] = $body // indexer.php compact()
            • 1219: $body = '' // indexer.php
          • 592: $page = $page_idx[$pid] // indexer.phpif($key == 'title'),
            • 587: $page_idx = $this->getindex ('page''') // indexer.php
              • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
                • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
                • 1172: $query = array() // common.php
      • 38: foreach($msgs as $msg) // infoutils.php
        • 37: $msgs = explode("\n%\n"$data) // infoutils.php
          • 33: $data = io_readfile ($cf) // infoutils.phpif($lm < time() - (60 * 60 * 24) || $lm < filemtime(DOKU_INC . DOKU_SCRIPT)) else ,
            • 23: $cf = $conf['cachedir'] . '/messages.txt' // infoutils.phpif(!$conf),
              • 18: $conf = array() // plugin.php
    • requires:
      • 355: if($fh)
File Inclusion

Userinput returned by function parse_url() reaches sensitive sink.
  • 27: require_once require_once (DOKU_INC . 'inc/io.php') // io.php
    • 1231: extract($data) // indexer.phpregister_globals implementation
      • 1228: $data['body'] = $data['body'] . " " . rawwiki ($page) // indexer.php
        • 1226: $data['body'] = $body // indexer.php compact()
          • 1219: $body = '' // indexer.php
        • 592: $page = $page_idx[$pid] // indexer.phpif($key == 'title'),
          • 587: $page_idx = $this->getindex ('page''') // indexer.php
            • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
              • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
              • 1172: $query = array() // common.php
File Disclosure

Userinput reaches sensitive sink.
  • 96: gzfile $ret = join(''gzfile($file)) // io.php
    • 92:  function io_readfile($file$clean = true)
    • requires:
      • 94: if(file_exists($file))
      • 95: if(substr($file - 3) == '.gz')

Userinput returned by function parse_url() reaches sensitive sink.
  • 457:  $meta = unserialize(io_readfile ($filefalse)) : array('current'=>array()'persistent'=>array()) // parserutils.php
    • 456: $file = metafn ($id'.meta') // parserutils.php
      • 569: $id .= '*' // pageutils.phpif((substr($id, - 1, 1) === ':')),
        • 423: $id = cleanid ($id) // pageutils.php
          • 420: $id = $ns . ':' . $id // pageutils.phpelseif($ns !== false && strpos($id, ':') === false),
            • 1650: $ns = utf8_encodefn (str_replace(':''/'$ns)) // media.php
              • 357: foreach($missing as $ns) // io.php
                • 356: $missing = array_reverse($missing) // io.php
                  • 350: $missing[] = $ns // io.php
                    • 348: $ns = implode(':'$ns_stack) // io.php
                      • 343: $ns_stack = explode(':'$id) // io.php
                        • 391: foreach($val_idx as $id) // indexer.php
                          • 389: $val_idx = explode(':'$this->getindexkey ($metaname . '_p'''$pid)) // indexer.php
                            • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
                              • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
                              • 1172: $query = array() // common.php
                            • 388: foreach($keyidx as $metaname) // indexer.php
                              • 387: $keyidx = $this->getindex ('metadata''') // indexer.php
                                • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
                                  • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
                                  • 1172: $query = array() // common.php
                            • 354: $pid = $this->getindexkey ('page'''$page) // indexer.php
                              • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
                                • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
                                • 1172: $query = array() // common.php
                              • 1050: foreach($pages as $page) // common.phpif(useheading('content')),
                                • 1049: $pages = ft_backlinks ($id) // common.phpif(useheading('content')),
                                  • 463: $id = idfilter ($id) // common.php
                                    • 393: $id = idfilter ($id) // common.php
                                      • 353: $id = idfilter ($id) // common.php

Userinput reaches sensitive sink when function p_xhtml_cached_geshi() is called.
  • 754:  $highlighted_code = io_readfile ($cachefalse) // parserutils.php
    • 748: $cache = getcachename ($language . $code".code") // parserutils.php
      • 743: $language = strtolower($language) // parserutils.php
      • 746: $code = preg_replace('/^\s*?\n|\s*?\n$/'''$code) // parserutils.php
    • requires:
      • 753: if($ctime && !$_REQUEST['purge'] && $ctime > filemtime(DOKU_INC . 'inc/geshi.php') && $ctime > filemtime(DOKU_INC . 'inc/geshi/' . $language . '.php') && $ctime > filemtime(reset($config_cascade['main']['default'])))
      • 741:  function p_xhtml_cached_geshi($code$language$wrapper = 'pre')

Userinput is passed through function parameters.
  • 438:  $text = io_readfile ($base . '/' . $file) // search.php
    • 435:  function search_regex(&$data$base$file$reg$words)
    • 435:  function search_regex(&$data$base$file$reg$words)

Userinput returned by function parse_url() reaches sensitive sink.
  • 601:  $item['hash'] = md5(io_readfile ($base . '/' . $filefalse)) // search.php
    • 1231: extract($data) // indexer.phpregister_globals implementation
      • 1228: $data['body'] = $data['body'] . " " . rawwiki ($page) // indexer.php
        • 1226: $data['body'] = $body // indexer.php compact()
          • 1219: $body = '' // indexer.php
        • 592: $page = $page_idx[$pid] // indexer.phpif($key == 'title'),
          • 587: $page_idx = $this->getindex ('page''') // indexer.php
            • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
              • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
              • 1172: $query = array() // common.php
    • 56: foreach($files as $file) // search.php
      • 38: $files[] = $dir . '/' . $file // search.phpif(!$dh),
        • 405: foreach($pathA AS $key=>$dir) // pageutils.phpif($id == '.'),
          • 403: $pathA = explode(':'$id) // pageutils.phpif($id == '.'),
            • 399: $id = $ns . ':' . $id // pageutils.phpif($id == '.'),
              • 1650: $ns = utf8_encodefn (str_replace(':''/'$ns)) // media.php
                • 357: foreach($missing as $ns) // io.php
                  • 356: $missing = array_reverse($missing) // io.php
                    • 350: $missing[] = $ns // io.php
                      • 348: $ns = implode(':'$ns_stack) // io.php
                        • 343: $ns_stack = explode(':'$id) // io.php
                          • 391: foreach($val_idx as $id) // indexer.php
                            • 389: $val_idx = explode(':'$this->getindexkey ($metaname . '_p'''$pid)) // indexer.php
                              • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
                                • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
                                • 1172: $query = array() // common.php
                              • 388: foreach($keyidx as $metaname) // indexer.php
                                • 387: $keyidx = $this->getindex ('metadata''') // indexer.php
                                  • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
                                    • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
    • requires:
      • 600: if($type == 'f')
      • 601: if($opts['hash'])

Userinput reaches sensitive sink when function auth_cookiesalt() is called.
  • 310:  $salt = io_readfile ($file) // auth.php
    • 309: $file = $conf['metadir'] . '/_htcookiesalt' // auth.php
      • 308:  global $conf // auth.php
        • 157: $conf['plugin'][$plugin][$key] = $value // plugin.php by loadconfig()functionloadconfig(), if(isset($conf)),
          • 411: foreach($lines as $value) // changelog.php
            • 405: $lines = explode("\n"$chunk) // changelog.phpif(filesize($file) < $chunk_size || $chunk_size == 0) else ,
              • 403: $chunk .= $tmp // changelog.phpif(filesize($file) < $chunk_size || $chunk_size == 0) else ,
                • 395: $chunk = '' // changelog.phpif(filesize($file) < $chunk_size || $chunk_size == 0) else ,
                • : 
                • : 
                • 400: $tmp = fread($fpmax($chunk_size - $got0)) // if(filesize($file) < $chunk_size || $chunk_size == 0) else , changelog.php stopped, already traced
              • 395: $chunk = '' // changelog.phpif(filesize($file) < $chunk_size || $chunk_size == 0) else ,
              • : 
            • 359: $lines = file ($file) // changelog.phpif(filesize($file) < $chunk_size || $chunk_size == 0),
              • 354: $file = metafn ($id'.changes') // changelog.phpif($media) else ,
                • 60: $id = cleanid ($id) // changelog.php
                  • 43: $id = count($GLOBALS['output'][$file_name]) : 0 // searcher.php
                    • : 
    • requires:
      • 307:  function auth_cookiesalt($addsession = false)

Call triggers vulnerability in function auth_cookiesalt()
  • 821:  $pass = pma_blowfish_encrypt ($changes['pass']auth_cookiesalt (!$sticky)) // auth.php
    • 820: list($user$sticky$pass) = auth_getcookie () // auth.php list()
    • requires:
      • 817: if($result = $auth->triggerusermod ('modify'array($_SERVER['REMOTE_USER']$changes)))
      • 819: if($changes['pass'])

Userinput returned by function cleanid() reaches sensitive sink.
  • 862:  $user = io_readfile ($tfile) // auth.php
    • 857: $tfile = $conf['cachedir'] . '/' . $token[0] . '/' . $token . '.pwauth' // auth.php
      • 157: $conf['plugin'][$plugin][$key] = $value // plugin.php by loadconfig()functionloadconfig(), if(isset($conf)),
        • 411: foreach($lines as $value) // changelog.php
          • 405: $lines = explode("\n"$chunk) // changelog.phpif(filesize($file) < $chunk_size || $chunk_size == 0) else ,
            • 403: $chunk .= $tmp // changelog.phpif(filesize($file) < $chunk_size || $chunk_size == 0) else ,
              • 395: $chunk = '' // changelog.phpif(filesize($file) < $chunk_size || $chunk_size == 0) else ,
              • : 
              • : 
              • 400: $tmp = fread($fpmax($chunk_size - $got0)) // if(filesize($file) < $chunk_size || $chunk_size == 0) else , changelog.php stopped, already traced
            • 395: $chunk = '' // changelog.phpif(filesize($file) < $chunk_size || $chunk_size == 0) else ,
            • : 
          • 359: $lines = file ($file) // changelog.phpif(filesize($file) < $chunk_size || $chunk_size == 0),
            • 354: $file = metafn ($id'.changes') // changelog.phpif($media) else ,
              • 60: $id = cleanid ($id) // changelog.php
                • 43: $id = count($GLOBALS['output'][$file_name]) : 0 // searcher.php
                  • : 
      • 852: $token = preg_replace('/[^a-f0-9]+/'''$_REQUEST['pwauth']) // auth.php
      • 852: $token = preg_replace('/[^a-f0-9]+/'''$_REQUEST['pwauth']) // auth.php
    • requires:
      • 854: if($token)

Call triggers vulnerability in function auth_cookiesalt()
  • 902:  $token = md5(auth_cookiesalt () . $user) // auth.php
    • requires:
      • 883: if($token) else 
File Manipulation

Userinput returned by function parse_url() reaches sensitive sink. (Blind exploitation)
  • 186: gzwrite gzwrite($fh$content) // io.php
    • 354: $fh = fopen($file'a') // infoutils.php
      • 353: $file = $conf['cachedir'] . '/debug.log' // infoutils.php
        • 18: $conf = array() // plugin.php
    • 1231: extract($data) // indexer.phpregister_globals implementation
      • 1228: $data['body'] = $data['body'] . " " . rawwiki ($page) // indexer.php
        • 1226: $data['body'] = $body // indexer.php compact()
          • 1219: $body = '' // indexer.php
        • 592: $page = $page_idx[$pid] // indexer.phpif($key == 'title'),
          • 587: $page_idx = $this->getindex ('page''') // indexer.php
            • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
              • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
              • 1172: $query = array() // common.php
    • requires:
      • 179: if(substr($file - 3) == '.gz')
File Manipulation

Userinput returned by function parse_url() reaches sensitive sink. (Blind exploitation)
  • 195: bzwrite bzwrite($fh$content) // io.php
    • 1231: extract($data) // indexer.phpregister_globals implementation
      • 1228: $data['body'] = $data['body'] . " " . rawwiki ($page) // indexer.php
        • 1226: $data['body'] = $body // indexer.php compact()
          • 1219: $body = '' // indexer.php
        • 592: $page = $page_idx[$pid] // indexer.phpif($key == 'title'),
          • 587: $page_idx = $this->getindex ('page''') // indexer.php
            • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
              • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
              • 1172: $query = array() // common.php
    • requires:
      • 188: if(substr($file - 4) == '.bz2')
File Manipulation

Userinput returned by function parse_url() reaches sensitive sink. (Blind exploitation)
  • 204: fwrite fwrite($fh$content) // io.php
    • 198: $fh = fopen($file$mode) // io.php
      • 353: $file = $conf['cachedir'] . '/debug.log' // infoutils.php
        • 18: $conf = array() // plugin.php
      • 1231: extract($data) // indexer.phpregister_globals implementation
        • 1228: $data['body'] = $data['body'] . " " . rawwiki ($page) // indexer.php
          • 1226: $data['body'] = $body // indexer.php compact()
            • 1219: $body = '' // indexer.php
          • 592: $page = $page_idx[$pid] // indexer.phpif($key == 'title'),
            • 587: $page_idx = $this->getindex ('page''') // indexer.php
              • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
                • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
                • 1172: $query = array() // common.php
    • 1231: extract($data) // indexer.phpregister_globals implementation
      • 1228: $data['body'] = $data['body'] . " " . rawwiki ($page) // indexer.php
        • 1226: $data['body'] = $body // indexer.php compact()
          • 1219: $body = '' // indexer.php
        • 592: $page = $page_idx[$pid] // indexer.phpif($key == 'title'),
          • 587: $page_idx = $this->getindex ('page''') // indexer.php
            • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
              • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
              • 1172: $query = array() // common.php
    • requires:
      • 197: if(substr($file - 4) == '.bz2') else 
File Manipulation

Userinput returned by function parse_url() reaches sensitive sink. (Blind exploitation)
  • 257: gzwrite gzwrite($fh$content) // io.php
    • 251: $fh = gzopen($file'wb9') // io.php
      • 353: $file = $conf['cachedir'] . '/debug.log' // infoutils.php
        • 18: $conf = array() // plugin.php
    • 249: $content = join(''$lines) // io.php
      • 239: $lines = preg_grep($badline$linesPREG_GREP_INVERT) // io.phpif($regex),
        • 1231: extract($data) // indexer.phpregister_globals implementation
          • 1228: $data['body'] = $data['body'] . " " . rawwiki ($page) // indexer.php
            • 1226: $data['body'] = $body // indexer.php compact()
              • 1219: $body = '' // indexer.php
            • 592: $page = $page_idx[$pid] // indexer.phpif($key == 'title'),
              • 587: $page_idx = $this->getindex ('page''') // indexer.php
                • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
                  • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
                  • 1172: $query = array() // common.php
        • 234: $lines = file($file) // if(substr($file, - 3) == '.gz') else , io.php stopped, already traced
        • 1231: extract($data) // indexer.phpregister_globals implementation
          • 1228: $data['body'] = $data['body'] . " " . rawwiki ($page) // indexer.php
            • 1226: $data['body'] = $body // indexer.php compact()
              • 1219: $body = '' // indexer.php
            • 592: $page = $page_idx[$pid] // indexer.phpif($key == 'title'),
              • 587: $page_idx = $this->getindex ('page''') // indexer.php
                • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
                  • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
                  • 1172: $query = array() // common.php
    • requires:
      • 248: if(count($lines))
      • 250: if(substr($file - 3) == '.gz')
File Manipulation

Userinput returned by function parse_url() reaches sensitive sink. (Blind exploitation)
  • 266: fwrite fwrite($fh$content) // io.php
    • 260: $fh = fopen($file'wb') // io.php
      • 353: $file = $conf['cachedir'] . '/debug.log' // infoutils.php
        • 18: $conf = array() // plugin.php
    • 249: $content = join(''$lines) // io.php
      • 239: $lines = preg_grep($badline$linesPREG_GREP_INVERT) // io.phpif($regex),
        • 1231: extract($data) // indexer.phpregister_globals implementation
          • 1228: $data['body'] = $data['body'] . " " . rawwiki ($page) // indexer.php
            • 1226: $data['body'] = $body // indexer.php compact()
              • 1219: $body = '' // indexer.php
            • 592: $page = $page_idx[$pid] // indexer.phpif($key == 'title'),
              • 587: $page_idx = $this->getindex ('page''') // indexer.php
                • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
                  • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
                  • 1172: $query = array() // common.php
        • 234: $lines = file($file) // if(substr($file, - 3) == '.gz') else , io.php stopped, already traced
        • 1231: extract($data) // indexer.phpregister_globals implementation
          • 1228: $data['body'] = $data['body'] . " " . rawwiki ($page) // indexer.php
            • 1226: $data['body'] = $body // indexer.php compact()
              • 1219: $body = '' // indexer.php
            • 592: $page = $page_idx[$pid] // indexer.phpif($key == 'title'),
              • 587: $page_idx = $this->getindex ('page''') // indexer.php
                • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
                  • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
                  • 1172: $query = array() // common.php
    • requires:
      • 248: if(count($lines))
      • 259: if(substr($file - 3) == '.gz') else 
File Manipulation

Userinput returned by function parse_url() reaches sensitive sink.
  • 300: mkdir $locked = mkdir($lockDir$conf['dmode']) // io.php
    • 1231: extract($data) // indexer.phpregister_globals implementation
      • 1228: $data['body'] = $data['body'] . " " . rawwiki ($page) // indexer.php
        • 1226: $data['body'] = $body // indexer.php compact()
          • 1219: $body = '' // indexer.php
        • 592: $page = $page_idx[$pid] // indexer.phpif($key == 'title'),
          • 587: $page_idx = $this->getindex ('page''') // indexer.php
            • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
              • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
              • 1172: $query = array() // common.php
File Manipulation

Userinput returned by function parse_url() reaches sensitive sink. (Blind exploitation)
  • 302: chmod chmod($lockDir$conf['dperm']) // io.php
    • 1231: extract($data) // indexer.phpregister_globals implementation
      • 1228: $data['body'] = $data['body'] . " " . rawwiki ($page) // indexer.php
        • 1226: $data['body'] = $body // indexer.php compact()
          • 1219: $body = '' // indexer.php
        • 592: $page = $page_idx[$pid] // indexer.phpif($key == 'title'),
          • 587: $page_idx = $this->getindex ('page''') // indexer.php
            • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
              • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
              • 1172: $query = array() // common.php
    • requires:
      • 301: if($locked)
      • 302: if(!empty($conf['dperm']))
File Manipulation

Userinput returned by function parse_url() reaches sensitive sink. (Blind exploitation)
  • 320: rmdir rmdir($lockDir) // io.php
    • 1231: extract($data) // indexer.phpregister_globals implementation
      • 1228: $data['body'] = $data['body'] . " " . rawwiki ($page) // indexer.php
        • 1226: $data['body'] = $body // indexer.php compact()
          • 1219: $body = '' // indexer.php
        • 592: $page = $page_idx[$pid] // indexer.phpif($key == 'title'),
          • 587: $page_idx = $this->getindex ('page''') // indexer.php
            • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
              • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
              • 1172: $query = array() // common.php
Code Evaluation

Userinput returned by function parse_url() reaches sensitive sink.
  • 345: call_user_func $file = call_user_func($types[$ns_type]$ns)) // io.php
    • 1231: extract($data) // indexer.phpregister_globals implementation
      • 1228: $data['body'] = $data['body'] . " " . rawwiki ($page) // indexer.php
        • 1226: $data['body'] = $body // indexer.php compact()
          • 1219: $body = '' // indexer.php
        • 592: $page = $page_idx[$pid] // indexer.phpif($key == 'title'),
          • 587: $page_idx = $this->getindex ('page''') // indexer.php
            • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
              • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
              • 1172: $query = array() // common.php
Code Evaluation

Userinput returned by function parse_url() reaches sensitive sink.
  • 351: call_user_func $tmp = dirname(call_user_func($types[$ns_type]$ns)) // io.php
    • 1231: extract($data) // indexer.phpregister_globals implementation
      • 1228: $data['body'] = $data['body'] . " " . rawwiki ($page) // indexer.php
        • 1226: $data['body'] = $body // indexer.php compact()
          • 1219: $body = '' // indexer.php
        • 592: $page = $page_idx[$pid] // indexer.phpif($key == 'title'),
          • 587: $page_idx = $this->getindex ('page''') // indexer.php
            • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
              • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
              • 1172: $query = array() // common.php
File Manipulation

Userinput returned by function parse_url() reaches sensitive sink. (Blind exploitation)
  • 504: fwrite fwrite($fp$data) // io.php
    • 502: $fp = fopen($file"w") // io.php
      • 498: $file = $file . $name // io.phpif($useAttachment),
        • 345: $file = call_user_func($types[$ns_type]$ns)) // io.php
          • 1231: extract($data) // indexer.phpregister_globals implementation
            • 1228: $data['body'] = $data['body'] . " " . rawwiki ($page) // indexer.php
              • 1226: $data['body'] = $body // indexer.php compact()
                • 1219: $body = '' // indexer.php
              • 592: $page = $page_idx[$pid] // indexer.phpif($key == 'title'),
                • 587: $page_idx = $this->getindex ('page''') // indexer.php
                  • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
                    • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
                    • 1172: $query = array() // common.php
          • 344: $ns = $id // io.php
            • 391: foreach($val_idx as $id) // indexer.php
              • 389: $val_idx = explode(':'$this->getindexkey ($metaname . '_p'''$pid)) // indexer.php
                • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
                  • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
                  • 1172: $query = array() // common.php
                • 388: foreach($keyidx as $metaname) // indexer.php
                  • 387: $keyidx = $this->getindex ('metadata''') // indexer.php
                    • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
                      • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
                      • 1172: $query = array() // common.php
                • 354: $pid = $this->getindexkey ('page'''$page) // indexer.php
                  • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
                    • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
                    • 1172: $query = array() // common.php
                  • 1050: foreach($pages as $page) // common.phpif(useheading('content')),
                    • 1049: $pages = ft_backlinks ($id) // common.phpif(useheading('content')),
File Manipulation

Userinput returned by function parse_url() reaches sensitive sink. (Blind exploitation)
  • 506: chmod chmod($file$conf['fperm']) // io.php
    • 498: $file = $file . $name // io.phpif($useAttachment),
      • 345: $file = call_user_func($types[$ns_type]$ns)) // io.php
        • 1231: extract($data) // indexer.phpregister_globals implementation
          • 1228: $data['body'] = $data['body'] . " " . rawwiki ($page) // indexer.php
            • 1226: $data['body'] = $body // indexer.php compact()
              • 1219: $body = '' // indexer.php
            • 592: $page = $page_idx[$pid] // indexer.phpif($key == 'title'),
              • 587: $page_idx = $this->getindex ('page''') // indexer.php
                • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
                  • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
                  • 1172: $query = array() // common.php
        • 344: $ns = $id // io.php
          • 391: foreach($val_idx as $id) // indexer.php
            • 389: $val_idx = explode(':'$this->getindexkey ($metaname . '_p'''$pid)) // indexer.php
              • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
                • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
                • 1172: $query = array() // common.php
              • 388: foreach($keyidx as $metaname) // indexer.php
                • 387: $keyidx = $this->getindex ('metadata''') // indexer.php
                  • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
                    • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
                    • 1172: $query = array() // common.php
              • 354: $pid = $this->getindexkey ('page'''$page) // indexer.php
                • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
                  • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
                  • 1172: $query = array() // common.php
                • 1050: foreach($pages as $page) // common.phpif(useheading('content')),
                  • 1049: $pages = ft_backlinks ($id) // common.phpif(useheading('content')),
                    • 463: $id = idfilter ($id) // common.php
    • requires:
      • 506: if(!$fileexists and $conf['fperm'])
File Manipulation

Userinput returned by function parse_url() reaches sensitive sink. (Blind exploitation)
  • 522: unlink unlink ($from) // io.php
    • 1231: extract($data) // indexer.phpregister_globals implementation
      • 1228: $data['body'] = $data['body'] . " " . rawwiki ($page) // indexer.php
        • 1226: $data['body'] = $body // indexer.php compact()
          • 1219: $body = '' // indexer.php
        • 592: $page = $page_idx[$pid] // indexer.phpif($key == 'title'),
          • 587: $page_idx = $this->getindex ('page''') // indexer.php
            • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
              • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
              • 1172: $query = array() // common.php
    • requires:
      • 519: if(!rename($from$to))
      • 520: if(copy($from$to))
File Manipulation

Userinput returned by function parse_url() reaches sensitive sink. (Blind exploitation)
  • 563: fwrite fwrite($pipes[0]$input) // io.php
    • 1231: extract($data) // indexer.phpregister_globals implementation
      • 1228: $data['body'] = $data['body'] . " " . rawwiki ($page) // indexer.php
        • 1226: $data['body'] = $body // indexer.php compact()
          • 1219: $body = '' // indexer.php
        • 592: $page = $page_idx[$pid] // indexer.phpif($key == 'title'),
          • 587: $page_idx = $this->getindex ('page''') // indexer.php
            • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
              • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
              • 1172: $query = array() // common.php
    • 1231: extract($data) // indexer.phpregister_globals implementation
      • 1228: $data['body'] = $data['body'] . " " . rawwiki ($page) // indexer.php
        • 1226: $data['body'] = $body // indexer.php compact()
          • 1219: $body = '' // indexer.php
        • 592: $page = $page_idx[$pid] // indexer.phpif($key == 'title'),
          • 587: $page_idx = $this->getindex ('page''') // indexer.php
            • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
              • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
              • 1172: $query = array() // common.php
File Inclusion

Userinput returned by function parse_url() reaches sensitive sink.
  • 28: require_once require_once (DOKU_INC . 'inc/mail.php') // mail.php
    • 1231: extract($data) // indexer.phpregister_globals implementation
      • 1228: $data['body'] = $data['body'] . " " . rawwiki ($page) // indexer.php
        • 1226: $data['body'] = $body // indexer.php compact()
          • 1219: $body = '' // indexer.php
        • 592: $page = $page_idx[$pid] // indexer.phpif($key == 'title'),
          • 587: $page_idx = $this->getindex ('page''') // indexer.php
            • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
              • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
              • 1172: $query = array() // common.php
Command Execution

Userinput returned by function parse_url() reaches sensitive sink.
  • 148: mail mail($to$subject$body$header) // mail.php
    • 135: $to = mail_encode_address ($to''$usenames) // mail.php
      • 1109: $to = $conf['registernotify'] // common.phpelseif($who == 'register'),
        • : 
      • 1104: $to = '' // common.phpelseif($who == 'subscribers'), if(empty($bcc)),
      • : 
      • : 
      • 133: $usenames = false : true // mail.php
        • 1231: extract($data) // indexer.phpregister_globals implementation
          • 1228: $data['body'] = $data['body'] . " " . rawwiki ($page) // indexer.php
            • 1226: $data['body'] = $body // indexer.php compact()
              • 1219: $body = '' // indexer.php
            • 592: $page = $page_idx[$pid] // indexer.phpif($key == 'title'),
              • 587: $page_idx = $this->getindex ('page''') // indexer.php
                • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
                  • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
                  • 1172: $query = array() // common.php
        • 1231: extract($data) // indexer.phpregister_globals implementation
          • 1228: $data['body'] = $data['body'] . " " . rawwiki ($page) // indexer.php
            • 1226: $data['body'] = $body // indexer.php compact()
              • 1219: $body = '' // indexer.php
            • 592: $page = $page_idx[$pid] // indexer.phpif($key == 'title'),
              • 587: $page_idx = $this->getindex ('page''') // indexer.php
                • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
                  • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
                  • 1172: $query = array() // common.php
    • 143: $header = trim($header) // mail.php
      • 142: $header .= $headers // mail.php
        • 141: $header .= 'Content-Transfer-Encoding: quoted-printable' . MAILHEADER_EOL // mail.php
          • 140: $header .= 'Content-Type: text/plain; charset=UTF-8' . MAILHEADER_EOL // mail.php
    • requires:
      • 147: if($params == null)
Command Execution

Userinput returned by function parse_url() reaches sensitive sink.
  • 150: mail mail($to$subject$body$header$params) // mail.php
    • 135: $to = mail_encode_address ($to''$usenames) // mail.php
      • 1109: $to = $conf['registernotify'] // common.phpelseif($who == 'register'),
        • : 
      • 1104: $to = '' // common.phpelseif($who == 'subscribers'), if(empty($bcc)),
      • : 
      • : 
      • 133: $usenames = false : true // mail.php
        • 1231: extract($data) // indexer.phpregister_globals implementation
          • 1228: $data['body'] = $data['body'] . " " . rawwiki ($page) // indexer.php
            • 1226: $data['body'] = $body // indexer.php compact()
              • 1219: $body = '' // indexer.php
            • 592: $page = $page_idx[$pid] // indexer.phpif($key == 'title'),
              • 587: $page_idx = $this->getindex ('page''') // indexer.php
                • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
                  • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
                  • 1172: $query = array() // common.php
        • 1231: extract($data) // indexer.phpregister_globals implementation
          • 1228: $data['body'] = $data['body'] . " " . rawwiki ($page) // indexer.php
            • 1226: $data['body'] = $body // indexer.php compact()
              • 1219: $body = '' // indexer.php
            • 592: $page = $page_idx[$pid] // indexer.phpif($key == 'title'),
              • 587: $page_idx = $this->getindex ('page''') // indexer.php
                • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
                  • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
                  • 1172: $query = array() // common.php
    • 143: $header = trim($header) // mail.php
      • 142: $header .= $headers // mail.php
        • 141: $header .= 'Content-Transfer-Encoding: quoted-printable' . MAILHEADER_EOL // mail.php
          • 140: $header .= 'Content-Type: text/plain; charset=UTF-8' . MAILHEADER_EOL // mail.php
    • requires:
      • 149: if($params == null) else 
File Inclusion

Userinput returned by function parse_url() reaches sensitive sink.
  • 29: require_once require_once (DOKU_INC . 'inc/media.php') // media.php
    • 1231: extract($data) // indexer.phpregister_globals implementation
      • 1228: $data['body'] = $data['body'] . " " . rawwiki ($page) // indexer.php
        • 1226: $data['body'] = $body // indexer.php compact()
          • 1219: $body = '' // indexer.php
        • 592: $page = $page_idx[$pid] // indexer.phpif($key == 'title'),
          • 587: $page_idx = $this->getindex ('page''') // indexer.php
            • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
              • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
              • 1172: $query = array() // common.php
File Manipulation

Userinput returned by function io_mktmpdir() reaches sensitive sink. (Blind exploitation)
  • 252: unlink unlink ($path) // media.php
    • 238: $path = $tmp . '/' . md5($id) // media.php
      • 237: $tmp = io_mktmpdir ())) // media.php
      • 230: $id = $_GET['qqfile'] // media.php
Code Evaluation

Userinput is used as dynamic function name. Arbitrary functions may be called.
  • 410: $move $move($fn_tmp$fn)) // media.php
    • 1231: extract($data) // indexer.phpregister_globals implementation
      • 1228: $data['body'] = $data['body'] . " " . rawwiki ($page) // indexer.php
        • 1226: $data['body'] = $body // indexer.php compact()
          • 1219: $body = '' // indexer.php
        • 592: $page = $page_idx[$pid] // indexer.phpif($key == 'title'),
          • 587: $page_idx = $this->getindex ('page''') // indexer.php
            • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
              • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
              • 1172: $query = array() // common.php
File Manipulation

Userinput returned by function parse_url() reaches sensitive sink. (Blind exploitation)
  • 461: copy copy($oldf$newf)) // media.php
    • 1231: extract($data) // indexer.phpregister_globals implementation
      • 1228: $data['body'] = $data['body'] . " " . rawwiki ($page) // indexer.php
        • 1226: $data['body'] = $body // indexer.php compact()
          • 1219: $body = '' // indexer.php
        • 592: $page = $page_idx[$pid] // indexer.phpif($key == 'title'),
          • 587: $page_idx = $this->getindex ('page''') // indexer.php
            • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
              • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
              • 1172: $query = array() // common.php
Command Execution

Userinput returned by function parse_url() reaches sensitive sink.
  • 1881: exec exec($cmd$out$retval) // media.php
    • 1879: $cmd .= " $from $to" // media.php
      • 1877: $cmd .= ' -quality ' . $conf['jpg_quality'] // media.phpif($ext == 'jpg' || $ext == 'jpeg'),
        • 1875: $cmd .= ' -resize ' . $to_w . 'x' . $to_h . '!' // media.php
          • 1874: $cmd = $conf['im_convert'] // media.php
            • 18: $conf = array() // plugin.php
          • 1231: extract($data) // indexer.phpregister_globals implementation
            • 1228: $data['body'] = $data['body'] . " " . rawwiki ($page) // indexer.php
              • 1226: $data['body'] = $body // indexer.php compact()
                • 1219: $body = '' // indexer.php
              • 592: $page = $page_idx[$pid] // indexer.phpif($key == 'title'),
                • 587: $page_idx = $this->getindex ('page''') // indexer.php
                  • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
                    • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
                    • 1172: $query = array() // common.php
          • 1231: extract($data) // indexer.phpregister_globals implementation
            • 1228: $data['body'] = $data['body'] . " " . rawwiki ($page) // indexer.php
              • 1226: $data['body'] = $body // indexer.php compact()
                • 1219: $body = '' // indexer.php
              • 592: $page = $page_idx[$pid] // indexer.phpif($key == 'title'),
                • 587: $page_idx = $this->getindex ('page''') // indexer.php
                  • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
                    • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
                    • 1172: $query = array() // common.php
        • 18: $conf = array() // plugin.php
      • 1231: extract($data) // indexer.phpregister_globals implementation
        • 1228: $data['body'] = $data['body'] . " " . rawwiki ($page) // indexer.php
          • 1226: $data['body'] = $body // indexer.php compact()
            • 1219: $body = '' // indexer.php
          • 592: $page = $page_idx[$pid] // indexer.phpif($key == 'title'),
Command Execution

Userinput returned by function parse_url() reaches sensitive sink.
  • 1905: exec exec($cmd$out$retval) // media.php
    • 1903: $cmd .= " $from $to" // media.php
      • 1901: $cmd .= ' -quality ' . $conf['jpg_quality'] // media.phpif($ext == 'jpg' || $ext == 'jpeg'),
        • 1899: $cmd .= ' -crop ' . $to_w . 'x' . $to_h . '+' . $ofs_x . '+' . $ofs_y // media.php
          • 1898: $cmd = $conf['im_convert'] // media.php
            • 18: $conf = array() // plugin.php
          • 1231: extract($data) // indexer.phpregister_globals implementation
            • 1228: $data['body'] = $data['body'] . " " . rawwiki ($page) // indexer.php
              • 1226: $data['body'] = $body // indexer.php compact()
                • 1219: $body = '' // indexer.php
              • 592: $page = $page_idx[$pid] // indexer.phpif($key == 'title'),
                • 587: $page_idx = $this->getindex ('page''') // indexer.php
                  • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
                    • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
                    • 1172: $query = array() // common.php
          • 1231: extract($data) // indexer.phpregister_globals implementation
            • 1228: $data['body'] = $data['body'] . " " . rawwiki ($page) // indexer.php
              • 1226: $data['body'] = $body // indexer.php compact()
                • 1219: $body = '' // indexer.php
              • 592: $page = $page_idx[$pid] // indexer.phpif($key == 'title'),
                • 587: $page_idx = $this->getindex ('page''') // indexer.php
                  • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
                    • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
                    • 1172: $query = array() // common.php
          • 1231: extract($data) // indexer.phpregister_globals implementation
            • 1228: $data['body'] = $data['body'] . " " . rawwiki ($page) // indexer.php
              • 1226: $data['body'] = $body // indexer.php compact()
                • 1219: $body = '' // indexer.php
              • 592: $page = $page_idx[$pid] // indexer.phpif($key == 'title'),
                • 587: $page_idx = $this->getindex ('page''') // indexer.php
File Disclosure

Userinput returned by function parse_url() reaches sensitive sink.
  • 1932: imagecreatefrompng $image = imagecreatefrompng($from) // media.php
    • 1231: extract($data) // indexer.phpregister_globals implementation
      • 1228: $data['body'] = $data['body'] . " " . rawwiki ($page) // indexer.php
        • 1226: $data['body'] = $body // indexer.php compact()
          • 1219: $body = '' // indexer.php
        • 592: $page = $page_idx[$pid] // indexer.phpif($key == 'title'),
          • 587: $page_idx = $this->getindex ('page''') // indexer.php
            • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
              • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
              • 1172: $query = array() // common.php
    • requires:
      • 1930: elseif($ext == 'png')
File Disclosure

Userinput returned by function parse_url() reaches sensitive sink.
  • 1936: imagecreatefromgif $image = imagecreatefromgif($from) // media.php
    • 1231: extract($data) // indexer.phpregister_globals implementation
      • 1228: $data['body'] = $data['body'] . " " . rawwiki ($page) // indexer.php
        • 1226: $data['body'] = $body // indexer.php compact()
          • 1219: $body = '' // indexer.php
        • 592: $page = $page_idx[$pid] // indexer.phpif($key == 'title'),
          • 587: $page_idx = $this->getindex ('page''') // indexer.php
            • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
              • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
              • 1172: $query = array() // common.php
    • requires:
      • 1934: elseif($ext == 'gif')
File Inclusion

Userinput returned by function parse_url() reaches sensitive sink.
  • 30: require_once require_once (DOKU_INC . 'inc/pageutils.php') // pageutils.php
    • 1231: extract($data) // indexer.phpregister_globals implementation
      • 1228: $data['body'] = $data['body'] . " " . rawwiki ($page) // indexer.php
        • 1226: $data['body'] = $body // indexer.php compact()
          • 1219: $body = '' // indexer.php
        • 592: $page = $page_idx[$pid] // indexer.phpif($key == 'title'),
          • 587: $page_idx = $this->getindex ('page''') // indexer.php
            • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
              • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
              • 1172: $query = array() // common.php
File Inclusion

Userinput returned by function parse_url() reaches sensitive sink.
  • 31: require_once require_once (DOKU_INC . 'inc/parserutils.php') // parserutils.php
    • 1231: extract($data) // indexer.phpregister_globals implementation
      • 1228: $data['body'] = $data['body'] . " " . rawwiki ($page) // indexer.php
        • 1226: $data['body'] = $body // indexer.php compact()
          • 1219: $body = '' // indexer.php
        • 592: $page = $page_idx[$pid] // indexer.phpif($key == 'title'),
          • 587: $page_idx = $this->getindex ('page''') // indexer.php
            • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
              • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
              • 1172: $query = array() // common.php
Unserialize

Userinput returned by function parse_url() reaches sensitive sink.
  • 457: unserialize $meta = unserialize(io_readfile ($filefalse)) : array('current'=>array()'persistent'=>array()) // parserutils.php
    • 456: $file = metafn ($id'.meta') // parserutils.php
      • 569: $id .= '*' // pageutils.phpif((substr($id, - 1, 1) === ':')),
        • 423: $id = cleanid ($id) // pageutils.php
          • 420: $id = $ns . ':' . $id // pageutils.phpelseif($ns !== false && strpos($id, ':') === false),
            • 1650: $ns = utf8_encodefn (str_replace(':''/'$ns)) // media.php
              • 357: foreach($missing as $ns) // io.php
                • 356: $missing = array_reverse($missing) // io.php
                  • 350: $missing[] = $ns // io.php
                    • 348: $ns = implode(':'$ns_stack) // io.php
                      • 343: $ns_stack = explode(':'$id) // io.php
                        • 391: foreach($val_idx as $id) // indexer.php
                          • 389: $val_idx = explode(':'$this->getindexkey ($metaname . '_p'''$pid)) // indexer.php
                            • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
                              • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
                              • 1172: $query = array() // common.php
                            • 388: foreach($keyidx as $metaname) // indexer.php
                              • 387: $keyidx = $this->getindex ('metadata''') // indexer.php
                                • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
                                  • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
                                  • 1172: $query = array() // common.php
                            • 354: $pid = $this->getindexkey ('page'''$page) // indexer.php
                              • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
                                • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
                                • 1172: $query = array() // common.php
                              • 1050: foreach($pages as $page) // common.phpif(useheading('content')),
                                • 1049: $pages = ft_backlinks ($id) // common.phpif(useheading('content')),
                                  • 463: $id = idfilter ($id) // common.php
                                    • 393: $id = idfilter ($id) // common.php
                                      • 353: $id = idfilter ($id) // common.php
File Inclusion

Userinput returned by function parse_url() reaches sensitive sink.
  • 19: require_once require_once DOKU_INC . 'inc/parser/renderer.php' // renderer.php
    • 1231: extract($data) // indexer.phpregister_globals implementation
      • 1228: $data['body'] = $data['body'] . " " . rawwiki ($page) // indexer.php
        • 1226: $data['body'] = $body // indexer.php compact()
          • 1219: $body = '' // indexer.php
        • 592: $page = $page_idx[$pid] // indexer.phpif($key == 'title'),
          • 587: $page_idx = $this->getindex ('page''') // indexer.php
            • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
              • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
              • 1172: $query = array() // common.php
    • requires:
      • 506: if($evt->advise_before ())
File Inclusion

Userinput returned by function parse_url() reaches sensitive sink.
  • 9: require_once require_once DOKU_INC . 'inc/plugin.php' // plugin.php
    • 1231: extract($data) // indexer.phpregister_globals implementation
      • 1228: $data['body'] = $data['body'] . " " . rawwiki ($page) // indexer.php
        • 1226: $data['body'] = $body // indexer.php compact()
          • 1219: $body = '' // indexer.php
        • 592: $page = $page_idx[$pid] // indexer.phpif($key == 'title'),
          • 587: $page_idx = $this->getindex ('page''') // indexer.php
            • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
              • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
              • 1172: $query = array() // common.php
    • requires:
      • 506: if($evt->advise_before ())
File Inclusion

Userinput reaches sensitive sink when function readdefaultsettings() is called.
  • 176: include include ($path . 'default.php') // plugin.php
    • 172: $path = DOKU_PLUGIN . $this->getpluginname () . '/conf/' // plugin.php
      • 10: define('DOKU_PLUGIN'DOKU_INC . 'lib/plugins/') // pluginutils.php define()
        • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
          • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
          • 1172: $query = array() // common.php
    • requires:
      • 175: if(file_exists($path . 'default.php'))
      • 170:  function readdefaultsettings()
Code Evaluation

Userinput returned by function parse_url() reaches sensitive sink.
  • 526: call_user_func_array call_user_func_array(array(&$renderer$instruction[0])(array)$instruction[1]) // parserutils.php
    • 519: $renderer =  new doku_renderer_metadata() // parserutils.php
    • 524: foreach($instructions as $instruction) // parserutils.php
      • 511: $instructions = p_cached_instructions (wikifn ($id)false$id) // parserutils.php
        • 569: $id .= '*' // pageutils.phpif((substr($id, - 1, 1) === ':')),
          • 423: $id = cleanid ($id) // pageutils.php
            • 420: $id = $ns . ':' . $id // pageutils.phpelseif($ns !== false && strpos($id, ':') === false),
              • 1650: $ns = utf8_encodefn (str_replace(':''/'$ns)) // media.php
                • 357: foreach($missing as $ns) // io.php
                  • 356: $missing = array_reverse($missing) // io.php
                    • 350: $missing[] = $ns // io.php
                      • 348: $ns = implode(':'$ns_stack) // io.php
                        • 343: $ns_stack = explode(':'$id) // io.php
                          • 391: foreach($val_idx as $id) // indexer.php
                            • 389: $val_idx = explode(':'$this->getindexkey ($metaname . '_p'''$pid)) // indexer.php
                              • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
                                • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
                                • 1172: $query = array() // common.php
                              • 388: foreach($keyidx as $metaname) // indexer.php
                                • 387: $keyidx = $this->getindex ('metadata''') // indexer.php
                                  • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
                                    • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
                                    • 1172: $query = array() // common.php
                              • 354: $pid = $this->getindexkey ('page'''$page) // indexer.php
                                • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
                                  • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
                                  • 1172: $query = array() // common.php
                                • 1050: foreach($pages as $page) // common.phpif(useheading('content')),
                                  • 1049: $pages = ft_backlinks ($id) // common.phpif(useheading('content')),
                                    • 463: $id = idfilter ($id) // common.php
File Inclusion

Userinput returned by function parse_url() reaches sensitive sink.
  • 3: require_once require_once DOKU_INC . 'inc/parser/lexer.php' // lexer.php
    • 1231: extract($data) // indexer.phpregister_globals implementation
      • 1228: $data['body'] = $data['body'] . " " . rawwiki ($page) // indexer.php
        • 1226: $data['body'] = $body // indexer.php compact()
          • 1219: $body = '' // indexer.php
        • 592: $page = $page_idx[$pid] // indexer.phpif($key == 'title'),
          • 587: $page_idx = $this->getindex ('page''') // indexer.php
            • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
              • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
              • 1172: $query = array() // common.php
Code Evaluation

Userinput is used as dynamic function name. Arbitrary functions may be called.
  • 517: $handler $handler($content$is_match$pos$plugin) // lexer.php
    • 516: list($handler$plugin) = explode('_'$handler2) // lexer.php list()
      • 510: $handler = $this->_mode_handlers[$handler] // lexer.phpif(isset($this->_mode_handlers[$handler])),
        • 1231: extract($data) // indexer.phpregister_globals implementation
          • 1228: $data['body'] = $data['body'] . " " . rawwiki ($page) // indexer.php
            • 1226: $data['body'] = $body // indexer.php compact()
              • 1219: $body = '' // indexer.php
            • 592: $page = $page_idx[$pid] // indexer.phpif($key == 'title'),
              • 587: $page_idx = $this->getindex ('page''') // indexer.php
                • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
                  • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
                  • 1172: $query = array() // common.php
        • 1231: extract($data) // indexer.phpregister_globals implementation
          • 1228: $data['body'] = $data['body'] . " " . rawwiki ($page) // indexer.php
            • 1226: $data['body'] = $body // indexer.php compact()
              • 1219: $body = '' // indexer.php
            • 592: $page = $page_idx[$pid] // indexer.phpif($key == 'title'),
              • 587: $page_idx = $this->getindex ('page''') // indexer.php
                • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
                  • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
                  • 1172: $query = array() // common.php
        • 508: $handler = $this->_mode->getcurrent () // lexer.php
          • 1231: extract($data) // indexer.phpregister_globals implementation
            • 1228: $data['body'] = $data['body'] . " " . rawwiki ($page) // indexer.php
              • 1226: $data['body'] = $body // indexer.php compact()
                • 1219: $body = '' // indexer.php
              • 592: $page = $page_idx[$pid] // indexer.phpif($key == 'title'),
                • 587: $page_idx = $this->getindex ('page''') // indexer.php
                  • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
                    • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
    • requires:
      • 515: if(substr($handler07) == 'plugin_')
Code Evaluation

Userinput is used as dynamic function name. Arbitrary functions may be called.
  • 520: $handler $handler($content$is_match$pos) // lexer.php
    • 516: list($handler$plugin) = explode('_'$handler2) // lexer.php list() if(substr($handler, 0, 7) == 'plugin_'),
      • 510: $handler = $this->_mode_handlers[$handler] // lexer.phpif(isset($this->_mode_handlers[$handler])),
        • 1231: extract($data) // indexer.phpregister_globals implementation
          • 1228: $data['body'] = $data['body'] . " " . rawwiki ($page) // indexer.php
            • 1226: $data['body'] = $body // indexer.php compact()
              • 1219: $body = '' // indexer.php
            • 592: $page = $page_idx[$pid] // indexer.phpif($key == 'title'),
              • 587: $page_idx = $this->getindex ('page''') // indexer.php
                • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
                  • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
                  • 1172: $query = array() // common.php
        • 1231: extract($data) // indexer.phpregister_globals implementation
          • 1228: $data['body'] = $data['body'] . " " . rawwiki ($page) // indexer.php
            • 1226: $data['body'] = $body // indexer.php compact()
              • 1219: $body = '' // indexer.php
            • 592: $page = $page_idx[$pid] // indexer.phpif($key == 'title'),
              • 587: $page_idx = $this->getindex ('page''') // indexer.php
                • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
                  • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
                  • 1172: $query = array() // common.php
        • 508: $handler = $this->_mode->getcurrent () // lexer.php
          • 1231: extract($data) // indexer.phpregister_globals implementation
            • 1228: $data['body'] = $data['body'] . " " . rawwiki ($page) // indexer.php
              • 1226: $data['body'] = $body // indexer.php compact()
                • 1219: $body = '' // indexer.php
              • 592: $page = $page_idx[$pid] // indexer.phpif($key == 'title'),
                • 587: $page_idx = $this->getindex ('page''') // indexer.php
                  • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
                    • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
File Inclusion

Userinput returned by function parse_url() reaches sensitive sink.
  • 4: require_once require_once DOKU_INC . 'inc/parser/handler.php' // handler.php
    • 1231: extract($data) // indexer.phpregister_globals implementation
      • 1228: $data['body'] = $data['body'] . " " . rawwiki ($page) // indexer.php
        • 1226: $data['body'] = $body // indexer.php compact()
          • 1219: $body = '' // indexer.php
        • 592: $page = $page_idx[$pid] // indexer.phpif($key == 'title'),
          • 587: $page_idx = $this->getindex ('page''') // indexer.php
            • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
              • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
              • 1172: $query = array() // common.php
Code Evaluation

Userinput returned by function cleanid() reaches sensitive sink.
  • 664: call_user_func_array call_user_func_array(array(&$Renderer$instruction[0])$instruction[1]) // parserutils.php
    • 651: $Renderer = &p_get_renderer($mode) // parserutils.php
      • 87: foreach(array_keys($this->modes) as $mode) // parser.php
        • 1231: extract($data) // indexer.phpregister_globals implementation
          • 1228: $data['body'] = $data['body'] . " " . rawwiki ($page) // indexer.php
            • 1226: $data['body'] = $body // indexer.php compact()
              • 1219: $body = '' // indexer.php
            • 592: $page = $page_idx[$pid] // indexer.phpif($key == 'title'),
              • 587: $page_idx = $this->getindex ('page''') // indexer.php
                • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
                  • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
                  • 1172: $query = array() // common.php
        • 1231: extract($data) // indexer.phpregister_globals implementation
          • 1228: $data['body'] = $data['body'] . " " . rawwiki ($page) // indexer.php
            • 1226: $data['body'] = $body // indexer.php compact()
              • 1219: $body = '' // indexer.php
            • 592: $page = $page_idx[$pid] // indexer.phpif($key == 'title'),
              • 587: $page_idx = $this->getindex ('page''') // indexer.php
                • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
                  • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
                  • 1172: $query = array() // common.php
    • 662: foreach($instructions as $instruction) // parserutils.php
      • 511: $instructions = p_cached_instructions (wikifn ($id)false$id) // parserutils.php
        • 569: $id .= '*' // pageutils.phpif((substr($id, - 1, 1) === ':')),
          • 423: $id = cleanid ($id) // pageutils.php
            • 420: $id = $ns . ':' . $id // pageutils.phpelseif($ns !== false && strpos($id, ':') === false),
              • 1650: $ns = utf8_encodefn (str_replace(':''/'$ns)) // media.php
                • 357: foreach($missing as $ns) // io.php
                  • 356: $missing = array_reverse($missing) // io.php
                    • 350: $missing[] = $ns // io.php
File Inclusion

Userinput returned by function parse_url() reaches sensitive sink.
  • 689: require_once require_once $file // parserutils.php
    • 687: $file = DOKU_INC . "inc/parser/$rname.php" // parserutils.php
      • 1231: extract($data) // indexer.phpregister_globals implementation
        • 1228: $data['body'] = $data['body'] . " " . rawwiki ($page) // indexer.php
          • 1226: $data['body'] = $body // indexer.php compact()
            • 1219: $body = '' // indexer.php
          • 592: $page = $page_idx[$pid] // indexer.phpif($key == 'title'),
            • 587: $page_idx = $this->getindex ('page''') // indexer.php
              • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
                • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
                • 1172: $query = array() // common.php
      • 1231: extract($data) // indexer.phpregister_globals implementation
        • 1228: $data['body'] = $data['body'] . " " . rawwiki ($page) // indexer.php
          • 1226: $data['body'] = $body // indexer.php compact()
            • 1219: $body = '' // indexer.php
          • 592: $page = $page_idx[$pid] // indexer.phpif($key == 'title'),
            • 587: $page_idx = $this->getindex ('page''') // indexer.php
              • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
                • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
                • 1172: $query = array() // common.php
    • requires:
      • 688: if(file_exists($file))
Code Evaluation

Userinput is used as dynamic function name. Arbitrary functions may be called.
  • 696: $rclass $rclass() // parserutils.php
    • 1231: extract($data) // indexer.phpregister_globals implementation
      • 1228: $data['body'] = $data['body'] . " " . rawwiki ($page) // indexer.php
        • 1226: $data['body'] = $body // indexer.php compact()
          • 1219: $body = '' // indexer.php
        • 592: $page = $page_idx[$pid] // indexer.phpif($key == 'title'),
          • 587: $page_idx = $this->getindex ('page''') // indexer.php
            • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
              • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
              • 1172: $query = array() // common.php
    • requires:
      • 688: if(file_exists($file))
File Inclusion

Userinput returned by function parse_url() reaches sensitive sink.
  • 32: require_once require_once (DOKU_INC . 'inc/search.php') // search.php
    • 1231: extract($data) // indexer.phpregister_globals implementation
      • 1228: $data['body'] = $data['body'] . " " . rawwiki ($page) // indexer.php
        • 1226: $data['body'] = $body // indexer.php compact()
          • 1219: $body = '' // indexer.php
        • 592: $page = $page_idx[$pid] // indexer.phpif($key == 'title'),
          • 587: $page_idx = $this->getindex ('page''') // indexer.php
            • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
              • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
              • 1172: $query = array() // common.php
Code Evaluation

Userinput returned by function parse_url() reaches sensitive sink.
  • 51: call_user_func_array call_user_func_array($funcarray(&$data$base$dir'd'$lvl$opts))) // search.php
    • 1231: extract($data) // indexer.phpregister_globals implementation
      • 1228: $data['body'] = $data['body'] . " " . rawwiki ($page) // indexer.php
        • 1226: $data['body'] = $body // indexer.php compact()
          • 1219: $body = '' // indexer.php
        • 592: $page = $page_idx[$pid] // indexer.phpif($key == 'title'),
          • 587: $page_idx = $this->getindex ('page''') // indexer.php
            • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
              • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
              • 1172: $query = array() // common.php
Code Evaluation

Userinput returned by function parse_url() reaches sensitive sink.
  • 57: call_user_func_array call_user_func_array($funcarray(&$data$base$file'f'$lvl$opts)) // search.php
    • 1231: extract($data) // indexer.phpregister_globals implementation
      • 1228: $data['body'] = $data['body'] . " " . rawwiki ($page) // indexer.php
        • 1226: $data['body'] = $body // indexer.php compact()
          • 1219: $body = '' // indexer.php
        • 592: $page = $page_idx[$pid] // indexer.phpif($key == 'title'),
          • 587: $page_idx = $this->getindex ('page''') // indexer.php
            • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
              • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
              • 1172: $query = array() // common.php
Code Evaluation

Userinput returned by function parse_url() reaches sensitive sink.
  • 455: preg_replace $snippet = preg_replace('#' . $mark . '#si''<strong class="search_hit">\\1</strong>'$snippet) // search.php
    • 454: $mark = '(' . join('|'$words) . ')' // search.php
      • 781: $words = $this->getindex ('w'$length) // indexer.phpelseif(!is_null($key)) else , if($freq >= $min && (!$max || $freq <= $max)), if($words === null),
        • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
          • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
          • 1172: $query = array() // common.php
        • 773: foreach($lengths as $length) // indexer.phpelseif(!is_null($key)) else ,
          • 772: $lengths = idx_listindexlengths () // indexer.phpelseif(!is_null($key)) else ,
    • requires:
      • 444: if($cnt = preg_match_all('#' . $reg . '#usi'$lctext$matches))
File Inclusion

Userinput returned by function parse_url() reaches sensitive sink.
  • 33: require_once require_once (DOKU_INC . 'inc/subscription.php') // subscription.php
    • 1231: extract($data) // indexer.phpregister_globals implementation
      • 1228: $data['body'] = $data['body'] . " " . rawwiki ($page) // indexer.php
        • 1226: $data['body'] = $body // indexer.php compact()
          • 1219: $body = '' // indexer.php
        • 592: $page = $page_idx[$pid] // indexer.phpif($key == 'title'),
          • 587: $page_idx = $this->getindex ('page''') // indexer.php
            • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
              • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
              • 1172: $query = array() // common.php
File Manipulation

Userinput returned by function cleanid() reaches sensitive sink. (Blind exploitation)
  • 62: mkdir mkdir($lock$conf['dmode'])) // subscription.php
    • 737: $lock = wikilockfn ($id) // common.php
      • 463: $id = idfilter ($id) // common.php
        • 393: $id = idfilter ($id) // common.php
          • 353: $id = idfilter ($id) // common.php
            • 332: $id = str_replace('%2F''/'$id) // common.phpif($ue),
              • 331: $id = str_replace('%3A'':'$id) // common.phpif($ue),
                • 330: $id = rawurlencode($id) // common.phpif($ue),
                  • 327: $id = strtr($id':'';') // common.phpelseif(strtoupper(substr(PHP_OS, 0, 3)) === 'WIN' && $conf),
                    • 60: $id = cleanid ($id) // changelog.php
                      • 43: $id = count($GLOBALS['output'][$file_name]) : 0 // searcher.php
                        • : 
File Manipulation

Userinput returned by function cleanid() reaches sensitive sink. (Blind exploitation)
  • 66: chmod chmod($lock$conf['dperm']) // subscription.php
    • 737: $lock = wikilockfn ($id) // common.php
      • 463: $id = idfilter ($id) // common.php
        • 393: $id = idfilter ($id) // common.php
          • 353: $id = idfilter ($id) // common.php
            • 332: $id = str_replace('%2F''/'$id) // common.phpif($ue),
              • 331: $id = str_replace('%3A'':'$id) // common.phpif($ue),
                • 330: $id = rawurlencode($id) // common.phpif($ue),
                  • 327: $id = strtr($id':'';') // common.phpelseif(strtoupper(substr(PHP_OS, 0, 3)) === 'WIN' && $conf),
                    • 60: $id = cleanid ($id) // changelog.php
                      • 43: $id = count($GLOBALS['output'][$file_name]) : 0 // searcher.php
                        • : 
    • requires:
      • 66: if($conf['dperm'])
File Disclosure

Userinput returned by function parse_url() reaches sensitive sink.
  • 173: file $subscriptions = file ($filename) // subscription.php
    • 169: foreach($filenames as $cur_page=>$filename) // subscription.php
      • 1231: extract($data) // indexer.phpregister_globals implementation
        • 1228: $data['body'] = $data['body'] . " " . rawwiki ($page) // indexer.php
          • 1226: $data['body'] = $body // indexer.php compact()
            • 1219: $body = '' // indexer.php
          • 592: $page = $page_idx[$pid] // indexer.phpif($key == 'title'),
            • 587: $page_idx = $this->getindex ('page''') // indexer.php
              • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
                • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
                • 1172: $query = array() // common.php
File Inclusion

Userinput returned by function parse_url() reaches sensitive sink.
  • 34: require_once require_once (DOKU_INC . 'inc/template.php') // template.php
    • 1231: extract($data) // indexer.phpregister_globals implementation
      • 1228: $data['body'] = $data['body'] . " " . rawwiki ($page) // indexer.php
        • 1226: $data['body'] = $body // indexer.php compact()
          • 1219: $body = '' // indexer.php
        • 592: $page = $page_idx[$pid] // indexer.phpif($key == 'title'),
          • 587: $page_idx = $this->getindex ('page''') // indexer.php
            • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
              • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
              • 1172: $query = array() // common.php
Possible Flow Control

Userinput returned by function parse_url() reaches sensitive sink.
  • 450: extract extract($data) // template.php
    • 298: $data['addresslist'] = trim($addresslist . ',' . implode(','$emails)',') // subscription.php
      • 1231: extract($data) // indexer.phpregister_globals implementation
        • 1228: $data['body'] = $data['body'] . " " . rawwiki ($page) // indexer.php
          • 1226: $data['body'] = $body // indexer.php compact()
            • 1219: $body = '' // indexer.php
          • 592: $page = $page_idx[$pid] // indexer.phpif($key == 'title'),
            • 587: $page_idx = $this->getindex ('page''') // indexer.php
              • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
                • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
                • 1172: $query = array() // common.php
      • 293: $emails[$sub0] = $info['mail'] // subscription.phpif($level >= AUTH_READ), if(strcasecmp($info, $conf) != 0),
        • 288: $info = $auth->getuserdata($sub[0]) // subscription.php
          • 1231: extract($data) // indexer.phpregister_globals implementation
            • 1228: $data['body'] = $data['body'] . " " . rawwiki ($page) // indexer.php
              • 1226: $data['body'] = $body // indexer.php compact()
                • 1219: $body = '' // indexer.php
              • 592: $page = $page_idx[$pid] // indexer.phpif($key == 'title'),
                • 587: $page_idx = $this->getindex ('page''') // indexer.php
                  • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
                    • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
                    • 1172: $query = array() // common.php
          • 287: foreach($by_targets as $sub) // subscription.php
            • 286: foreach($subs as $by_targets) // subscription.php
              • 284: $subs = subscription_find ($id$pres) // subscription.php
                • 497: $id = trim($id':') // search.php
                  • 340: $id = pathid ($file) // search.php
                    • 56: foreach($files as $file) // search.php
                      • 38: $files[] = $dir . '/' . $file // search.phpif(!$dh),
                        • 405: foreach($pathA AS $key=>$dir) // pageutils.phpif($id == '.'),
    • requires:
      • 449: elseif(!is_array($data)) else 
Possible Flow Control

Userinput returned by function parse_url() reaches sensitive sink.
  • 476: extract extract($data) // template.php
    • 298: $data['addresslist'] = trim($addresslist . ',' . implode(','$emails)',') // subscription.php
      • 1231: extract($data) // indexer.phpregister_globals implementation
        • 1228: $data['body'] = $data['body'] . " " . rawwiki ($page) // indexer.php
          • 1226: $data['body'] = $body // indexer.php compact()
            • 1219: $body = '' // indexer.php
          • 592: $page = $page_idx[$pid] // indexer.phpif($key == 'title'),
            • 587: $page_idx = $this->getindex ('page''') // indexer.php
              • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
                • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
                • 1172: $query = array() // common.php
      • 293: $emails[$sub0] = $info['mail'] // subscription.phpif($level >= AUTH_READ), if(strcasecmp($info, $conf) != 0),
        • 288: $info = $auth->getuserdata($sub[0]) // subscription.php
          • 1231: extract($data) // indexer.phpregister_globals implementation
            • 1228: $data['body'] = $data['body'] . " " . rawwiki ($page) // indexer.php
              • 1226: $data['body'] = $body // indexer.php compact()
                • 1219: $body = '' // indexer.php
              • 592: $page = $page_idx[$pid] // indexer.phpif($key == 'title'),
                • 587: $page_idx = $this->getindex ('page''') // indexer.php
                  • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
                    • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
                    • 1172: $query = array() // common.php
          • 287: foreach($by_targets as $sub) // subscription.php
            • 286: foreach($subs as $by_targets) // subscription.php
              • 284: $subs = subscription_find ($id$pres) // subscription.php
                • 497: $id = trim($id':') // search.php
                  • 340: $id = pathid ($file) // search.php
                    • 56: foreach($files as $file) // search.php
                      • 38: $files[] = $dir . '/' . $file // search.phpif(!$dh),
                        • 405: foreach($pathA AS $key=>$dir) // pageutils.phpif($id == '.'),
    • requires:
      • 475: elseif(!is_array($data)) else 
File Inclusion

Userinput reaches sensitive sink when function tpl_getlang() is called.
  • 1063: include include ($path . 'en/lang.php') // template.php
    • 1057: $path = DOKU_TPLINC . 'lang/' // template.php
      • 476: extract($data) // template.phpregister_globals implementationelseif(!is_array($data)) else ,
        • 298: $data['addresslist'] = trim($addresslist . ',' . implode(','$emails)',') // subscription.php
          • 1231: extract($data) // indexer.phpregister_globals implementation
            • 1228: $data['body'] = $data['body'] . " " . rawwiki ($page) // indexer.php
              • 1226: $data['body'] = $body // indexer.php compact()
                • 1219: $body = '' // indexer.php
              • 592: $page = $page_idx[$pid] // indexer.phpif($key == 'title'),
                • 587: $page_idx = $this->getindex ('page''') // indexer.php
                  • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
                    • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
                    • 1172: $query = array() // common.php
          • 293: $emails[$sub0] = $info['mail'] // subscription.phpif($level >= AUTH_READ), if(strcasecmp($info, $conf) != 0),
            • 288: $info = $auth->getuserdata($sub[0]) // subscription.php
              • 1231: extract($data) // indexer.phpregister_globals implementation
                • 1228: $data['body'] = $data['body'] . " " . rawwiki ($page) // indexer.php
                  • 1226: $data['body'] = $body // indexer.php compact()
                    • 1219: $body = '' // indexer.php
                  • 592: $page = $page_idx[$pid] // indexer.phpif($key == 'title'),
                    • 587: $page_idx = $this->getindex ('page''') // indexer.php
                      • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
                        • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
                        • 1172: $query = array() // common.php
              • 287: foreach($by_targets as $sub) // subscription.php
                • 286: foreach($subs as $by_targets) // subscription.php
                  • 284: $subs = subscription_find ($id$pres) // subscription.php
                    • 497: $id = trim($id':') // search.php
                      • 340: $id = pathid ($file) // search.php
                        • 56: foreach($files as $file) // search.php
    • requires:
      • 1056: if(count($lang) === 0)
      • 1053:  function tpl_getlang($id)
File Inclusion

Userinput reaches sensitive sink when function tpl_getlang() is called.
  • 1064: include include ($path . $conf['lang'] . '/lang.php') // template.php
    • 1057: $path = DOKU_TPLINC . 'lang/' // template.php
      • 476: extract($data) // template.phpregister_globals implementationelseif(!is_array($data)) else ,
        • 298: $data['addresslist'] = trim($addresslist . ',' . implode(','$emails)',') // subscription.php
          • 1231: extract($data) // indexer.phpregister_globals implementation
            • 1228: $data['body'] = $data['body'] . " " . rawwiki ($page) // indexer.php
              • 1226: $data['body'] = $body // indexer.php compact()
                • 1219: $body = '' // indexer.php
              • 592: $page = $page_idx[$pid] // indexer.phpif($key == 'title'),
                • 587: $page_idx = $this->getindex ('page''') // indexer.php
                  • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
                    • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
                    • 1172: $query = array() // common.php
          • 293: $emails[$sub0] = $info['mail'] // subscription.phpif($level >= AUTH_READ), if(strcasecmp($info, $conf) != 0),
            • 288: $info = $auth->getuserdata($sub[0]) // subscription.php
              • 1231: extract($data) // indexer.phpregister_globals implementation
                • 1228: $data['body'] = $data['body'] . " " . rawwiki ($page) // indexer.php
                  • 1226: $data['body'] = $body // indexer.php compact()
                    • 1219: $body = '' // indexer.php
                  • 592: $page = $page_idx[$pid] // indexer.phpif($key == 'title'),
                    • 587: $page_idx = $this->getindex ('page''') // indexer.php
                      • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
                        • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
                        • 1172: $query = array() // common.php
              • 287: foreach($by_targets as $sub) // subscription.php
                • 286: foreach($subs as $by_targets) // subscription.php
                  • 284: $subs = subscription_find ($id$pres) // subscription.php
                    • 497: $id = trim($id':') // search.php
                      • 340: $id = pathid ($file) // search.php
                        • 56: foreach($files as $file) // search.php
    • requires:
      • 1056: if(count($lang) === 0)
      • 1064: if($conf['lang'] != 'en')
      • 1053:  function tpl_getlang($id)
File Inclusion

Userinput reaches sensitive sink when function tpl_media() is called.
  • 1504: require_once require_once DOKU_INC . 'lib/exe/mediamanager.php' // template.php
    • 476: extract($data) // template.phpregister_globals implementationelseif(!is_array($data)) else ,
      • 298: $data['addresslist'] = trim($addresslist . ',' . implode(','$emails)',') // subscription.php
        • 1231: extract($data) // indexer.phpregister_globals implementation
          • 1228: $data['body'] = $data['body'] . " " . rawwiki ($page) // indexer.php
            • 1226: $data['body'] = $body // indexer.php compact()
              • 1219: $body = '' // indexer.php
            • 592: $page = $page_idx[$pid] // indexer.phpif($key == 'title'),
              • 587: $page_idx = $this->getindex ('page''') // indexer.php
                • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
                  • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
                  • 1172: $query = array() // common.php
        • 293: $emails[$sub0] = $info['mail'] // subscription.phpif($level >= AUTH_READ), if(strcasecmp($info, $conf) != 0),
          • 288: $info = $auth->getuserdata($sub[0]) // subscription.php
            • 1231: extract($data) // indexer.phpregister_globals implementation
              • 1228: $data['body'] = $data['body'] . " " . rawwiki ($page) // indexer.php
                • 1226: $data['body'] = $body // indexer.php compact()
                  • 1219: $body = '' // indexer.php
                • 592: $page = $page_idx[$pid] // indexer.phpif($key == 'title'),
                  • 587: $page_idx = $this->getindex ('page''') // indexer.php
                    • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
                      • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
                      • 1172: $query = array() // common.php
            • 287: foreach($by_targets as $sub) // subscription.php
              • 286: foreach($subs as $by_targets) // subscription.php
                • 284: $subs = subscription_find ($id$pres) // subscription.php
                  • 497: $id = trim($id':') // search.php
                    • 340: $id = pathid ($file) // search.php
                      • 56: foreach($files as $file) // search.php
                        • 38: $files[] = $dir . '/' . $file // search.phpif(!$dh),
    • requires:
      • 1501:  function tpl_media()
File Inclusion

Userinput returned by function parse_url() reaches sensitive sink.
  • 35: require_once require_once (DOKU_INC . 'inc/toolbar.php') // toolbar.php
    • 476: extract($data) // template.phpregister_globals implementationelseif(!is_array($data)) else ,
      • 298: $data['addresslist'] = trim($addresslist . ',' . implode(','$emails)',') // subscription.php
        • 1231: extract($data) // indexer.phpregister_globals implementation
          • 1228: $data['body'] = $data['body'] . " " . rawwiki ($page) // indexer.php
            • 1226: $data['body'] = $body // indexer.php compact()
              • 1219: $body = '' // indexer.php
            • 592: $page = $page_idx[$pid] // indexer.phpif($key == 'title'),
              • 587: $page_idx = $this->getindex ('page''') // indexer.php
                • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
                  • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
                  • 1172: $query = array() // common.php
        • 293: $emails[$sub0] = $info['mail'] // subscription.phpif($level >= AUTH_READ), if(strcasecmp($info, $conf) != 0),
          • 288: $info = $auth->getuserdata($sub[0]) // subscription.php
            • 1231: extract($data) // indexer.phpregister_globals implementation
              • 1228: $data['body'] = $data['body'] . " " . rawwiki ($page) // indexer.php
                • 1226: $data['body'] = $body // indexer.php compact()
                  • 1219: $body = '' // indexer.php
                • 592: $page = $page_idx[$pid] // indexer.phpif($key == 'title'),
                  • 587: $page_idx = $this->getindex ('page''') // indexer.php
                    • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
                      • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
                      • 1172: $query = array() // common.php
            • 287: foreach($by_targets as $sub) // subscription.php
              • 286: foreach($subs as $by_targets) // subscription.php
                • 284: $subs = subscription_find ($id$pres) // subscription.php
                  • 497: $id = trim($id':') // search.php
                    • 340: $id = pathid ($file) // search.php
                      • 56: foreach($files as $file) // search.php
                        • 38: $files[] = $dir . '/' . $file // search.phpif(!$dh),
File Inclusion

Userinput returned by function parse_url() reaches sensitive sink.
  • 36: require_once require_once (DOKU_INC . 'inc/utf8.php') // utf8.php
    • 476: extract($data) // template.phpregister_globals implementationelseif(!is_array($data)) else ,
      • 298: $data['addresslist'] = trim($addresslist . ',' . implode(','$emails)',') // subscription.php
        • 1231: extract($data) // indexer.phpregister_globals implementation
          • 1228: $data['body'] = $data['body'] . " " . rawwiki ($page) // indexer.php
            • 1226: $data['body'] = $body // indexer.php compact()
              • 1219: $body = '' // indexer.php
            • 592: $page = $page_idx[$pid] // indexer.phpif($key == 'title'),
              • 587: $page_idx = $this->getindex ('page''') // indexer.php
                • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
                  • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
                  • 1172: $query = array() // common.php
        • 293: $emails[$sub0] = $info['mail'] // subscription.phpif($level >= AUTH_READ), if(strcasecmp($info, $conf) != 0),
          • 288: $info = $auth->getuserdata($sub[0]) // subscription.php
            • 1231: extract($data) // indexer.phpregister_globals implementation
              • 1228: $data['body'] = $data['body'] . " " . rawwiki ($page) // indexer.php
                • 1226: $data['body'] = $body // indexer.php compact()
                  • 1219: $body = '' // indexer.php
                • 592: $page = $page_idx[$pid] // indexer.phpif($key == 'title'),
                  • 587: $page_idx = $this->getindex ('page''') // indexer.php
                    • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
                      • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
                      • 1172: $query = array() // common.php
            • 287: foreach($by_targets as $sub) // subscription.php
              • 286: foreach($subs as $by_targets) // subscription.php
                • 284: $subs = subscription_find ($id$pres) // subscription.php
                  • 497: $id = trim($id':') // search.php
                    • 340: $id = pathid ($file) // search.php
                      • 56: foreach($files as $file) // search.php
                        • 38: $files[] = $dir . '/' . $file // search.phpif(!$dh),
Code Evaluation

Userinput returned by function parse_url() reaches sensitive sink.
  • 422: preg_replace preg_replace('/[' . $additional . '\x00-\x19' . $specials . ']/u'$repl$string) // utf8.php
    • 476: extract($data) // template.phpregister_globals implementationelseif(!is_array($data)) else ,
      • 298: $data['addresslist'] = trim($addresslist . ',' . implode(','$emails)',') // subscription.php
        • 1231: extract($data) // indexer.phpregister_globals implementation
          • 1228: $data['body'] = $data['body'] . " " . rawwiki ($page) // indexer.php
            • 1226: $data['body'] = $body // indexer.php compact()
              • 1219: $body = '' // indexer.php
            • 592: $page = $page_idx[$pid] // indexer.phpif($key == 'title'),
              • 587: $page_idx = $this->getindex ('page''') // indexer.php
                • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
                  • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
                  • 1172: $query = array() // common.php
        • 293: $emails[$sub0] = $info['mail'] // subscription.phpif($level >= AUTH_READ), if(strcasecmp($info, $conf) != 0),
          • 288: $info = $auth->getuserdata($sub[0]) // subscription.php
            • 1231: extract($data) // indexer.phpregister_globals implementation
              • 1228: $data['body'] = $data['body'] . " " . rawwiki ($page) // indexer.php
                • 1226: $data['body'] = $body // indexer.php compact()
                  • 1219: $body = '' // indexer.php
                • 592: $page = $page_idx[$pid] // indexer.phpif($key == 'title'),
                  • 587: $page_idx = $this->getindex ('page''') // indexer.php
                    • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
                      • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
                      • 1172: $query = array() // common.php
            • 287: foreach($by_targets as $sub) // subscription.php
              • 286: foreach($subs as $by_targets) // subscription.php
                • 284: $subs = subscription_find ($id$pres) // subscription.php
                  • 497: $id = trim($id':') // search.php
                    • 340: $id = pathid ($file) // search.php
                      • 56: foreach($files as $file) // search.php
                        • 38: $files[] = $dir . '/' . $file // search.phpif(!$dh),
    • requires:
      • 400: if(!function_exists('utf8_stripspecials'))
Code Evaluation

Userinput returned by function parse_url() reaches sensitive sink.
  • 506: preg_replace_callback preg_replace_callback('/&(#)?([Xx])?([0-9A-Za-z]+);/m'array(&$decoder'decode')$str) // utf8.php
    • 476: extract($data) // template.phpregister_globals implementationelseif(!is_array($data)) else ,
      • 298: $data['addresslist'] = trim($addresslist . ',' . implode(','$emails)',') // subscription.php
        • 1231: extract($data) // indexer.phpregister_globals implementation
          • 1228: $data['body'] = $data['body'] . " " . rawwiki ($page) // indexer.php
            • 1226: $data['body'] = $body // indexer.php compact()
              • 1219: $body = '' // indexer.php
            • 592: $page = $page_idx[$pid] // indexer.phpif($key == 'title'),
              • 587: $page_idx = $this->getindex ('page''') // indexer.php
                • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
                  • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
                  • 1172: $query = array() // common.php
        • 293: $emails[$sub0] = $info['mail'] // subscription.phpif($level >= AUTH_READ), if(strcasecmp($info, $conf) != 0),
          • 288: $info = $auth->getuserdata($sub[0]) // subscription.php
            • 1231: extract($data) // indexer.phpregister_globals implementation
              • 1228: $data['body'] = $data['body'] . " " . rawwiki ($page) // indexer.php
                • 1226: $data['body'] = $body // indexer.php compact()
                  • 1219: $body = '' // indexer.php
                • 592: $page = $page_idx[$pid] // indexer.phpif($key == 'title'),
                  • 587: $page_idx = $this->getindex ('page''') // indexer.php
                    • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
                      • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
                      • 1172: $query = array() // common.php
            • 287: foreach($by_targets as $sub) // subscription.php
              • 286: foreach($subs as $by_targets) // subscription.php
                • 284: $subs = subscription_find ($id$pres) // subscription.php
                  • 497: $id = trim($id':') // search.php
                    • 340: $id = pathid ($file) // search.php
                      • 56: foreach($files as $file) // search.php
                        • 38: $files[] = $dir . '/' . $file // search.phpif(!$dh),
    • requires:
      • 479: if(!function_exists('utf8_unhtml'))
      • 505: if(is_null($entities)) else 
File Inclusion

Userinput returned by function parse_url() reaches sensitive sink.
  • 37: require_once require_once (DOKU_INC . 'inc/auth.php') // auth.php
    • 476: extract($data) // template.phpregister_globals implementationelseif(!is_array($data)) else ,
      • 298: $data['addresslist'] = trim($addresslist . ',' . implode(','$emails)',') // subscription.php
        • 1231: extract($data) // indexer.phpregister_globals implementation
          • 1228: $data['body'] = $data['body'] . " " . rawwiki ($page) // indexer.php
            • 1226: $data['body'] = $body // indexer.php compact()
              • 1219: $body = '' // indexer.php
            • 592: $page = $page_idx[$pid] // indexer.phpif($key == 'title'),
              • 587: $page_idx = $this->getindex ('page''') // indexer.php
                • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
                  • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
                  • 1172: $query = array() // common.php
        • 293: $emails[$sub0] = $info['mail'] // subscription.phpif($level >= AUTH_READ), if(strcasecmp($info, $conf) != 0),
          • 288: $info = $auth->getuserdata($sub[0]) // subscription.php
            • 1231: extract($data) // indexer.phpregister_globals implementation
              • 1228: $data['body'] = $data['body'] . " " . rawwiki ($page) // indexer.php
                • 1226: $data['body'] = $body // indexer.php compact()
                  • 1219: $body = '' // indexer.php
                • 592: $page = $page_idx[$pid] // indexer.phpif($key == 'title'),
                  • 587: $page_idx = $this->getindex ('page''') // indexer.php
                    • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
                      • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
                      • 1172: $query = array() // common.php
            • 287: foreach($by_targets as $sub) // subscription.php
              • 286: foreach($subs as $by_targets) // subscription.php
                • 284: $subs = subscription_find ($id$pres) // subscription.php
                  • 497: $id = trim($id':') // search.php
                    • 340: $id = pathid ($file) // search.php
                      • 56: foreach($files as $file) // search.php
                        • 38: $files[] = $dir . '/' . $file // search.phpif(!$dh),
File Inclusion

Userinput returned by function parse_url() reaches sensitive sink.
  • 45: require_once require_once (DOKU_INC . 'inc/auth/basic.class.php') // basic.class.php
    • 476: extract($data) // template.phpregister_globals implementationelseif(!is_array($data)) else ,
      • 298: $data['addresslist'] = trim($addresslist . ',' . implode(','$emails)',') // subscription.php
        • 1231: extract($data) // indexer.phpregister_globals implementation
          • 1228: $data['body'] = $data['body'] . " " . rawwiki ($page) // indexer.php
            • 1226: $data['body'] = $body // indexer.php compact()
              • 1219: $body = '' // indexer.php
            • 592: $page = $page_idx[$pid] // indexer.phpif($key == 'title'),
              • 587: $page_idx = $this->getindex ('page''') // indexer.php
                • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
                  • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
                  • 1172: $query = array() // common.php
        • 293: $emails[$sub0] = $info['mail'] // subscription.phpif($level >= AUTH_READ), if(strcasecmp($info, $conf) != 0),
          • 288: $info = $auth->getuserdata($sub[0]) // subscription.php
            • 1231: extract($data) // indexer.phpregister_globals implementation
              • 1228: $data['body'] = $data['body'] . " " . rawwiki ($page) // indexer.php
                • 1226: $data['body'] = $body // indexer.php compact()
                  • 1219: $body = '' // indexer.php
                • 592: $page = $page_idx[$pid] // indexer.phpif($key == 'title'),
                  • 587: $page_idx = $this->getindex ('page''') // indexer.php
                    • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
                      • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
                      • 1172: $query = array() // common.php
            • 287: foreach($by_targets as $sub) // subscription.php
              • 286: foreach($subs as $by_targets) // subscription.php
                • 284: $subs = subscription_find ($id$pres) // subscription.php
                  • 497: $id = trim($id':') // search.php
                    • 340: $id = pathid ($file) // search.php
                      • 56: foreach($files as $file) // search.php
                        • 38: $files[] = $dir . '/' . $file // search.phpif(!$dh),
    • requires:
      • 44: if(file_exists(DOKU_INC . 'inc/auth/' . $conf['authtype'] . '.class.php'))
Code Evaluation

Userinput returned by function parse_url() reaches sensitive sink.
  • 116: call_user_func_array $result = call_user_func_array(array($this$validTypes[$type])$params) // basic.class.php
    • 476: extract($data) // template.phpregister_globals implementationelseif(!is_array($data)) else ,
      • 298: $data['addresslist'] = trim($addresslist . ',' . implode(','$emails)',') // subscription.php
        • 1231: extract($data) // indexer.phpregister_globals implementation
          • 1228: $data['body'] = $data['body'] . " " . rawwiki ($page) // indexer.php
            • 1226: $data['body'] = $body // indexer.php compact()
              • 1219: $body = '' // indexer.php
            • 592: $page = $page_idx[$pid] // indexer.phpif($key == 'title'),
              • 587: $page_idx = $this->getindex ('page''') // indexer.php
                • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
                  • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
                  • 1172: $query = array() // common.php
        • 293: $emails[$sub0] = $info['mail'] // subscription.phpif($level >= AUTH_READ), if(strcasecmp($info, $conf) != 0),
          • 288: $info = $auth->getuserdata($sub[0]) // subscription.php
            • 1231: extract($data) // indexer.phpregister_globals implementation
              • 1228: $data['body'] = $data['body'] . " " . rawwiki ($page) // indexer.php
                • 1226: $data['body'] = $body // indexer.php compact()
                  • 1219: $body = '' // indexer.php
                • 592: $page = $page_idx[$pid] // indexer.phpif($key == 'title'),
                  • 587: $page_idx = $this->getindex ('page''') // indexer.php
                    • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
                      • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
                      • 1172: $query = array() // common.php
            • 287: foreach($by_targets as $sub) // subscription.php
              • 286: foreach($subs as $by_targets) // subscription.php
                • 284: $subs = subscription_find ($id$pres) // subscription.php
                  • 497: $id = trim($id':') // search.php
                    • 340: $id = pathid ($file) // search.php
                      • 56: foreach($files as $file) // search.php
                        • 38: $files[] = $dir . '/' . $file // search.phpif(!$dh),
    • requires:
      • 115: if($evt->advise_before (true))
File Inclusion

Userinput returned by function parse_url() reaches sensitive sink.
  • 46: require_once require_once (DOKU_INC . 'inc/auth/' . $conf['authtype'] . '.class.php') // auth.php
    • 476: extract($data) // template.phpregister_globals implementationelseif(!is_array($data)) else ,
      • 298: $data['addresslist'] = trim($addresslist . ',' . implode(','$emails)',') // subscription.php
        • 1231: extract($data) // indexer.phpregister_globals implementation
          • 1228: $data['body'] = $data['body'] . " " . rawwiki ($page) // indexer.php
            • 1226: $data['body'] = $body // indexer.php compact()
              • 1219: $body = '' // indexer.php
            • 592: $page = $page_idx[$pid] // indexer.phpif($key == 'title'),
              • 587: $page_idx = $this->getindex ('page''') // indexer.php
                • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
                  • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
                  • 1172: $query = array() // common.php
        • 293: $emails[$sub0] = $info['mail'] // subscription.phpif($level >= AUTH_READ), if(strcasecmp($info, $conf) != 0),
          • 288: $info = $auth->getuserdata ($sub[0]) // subscription.php
            • 1231: extract($data) // indexer.phpregister_globals implementation
              • 1228: $data['body'] = $data['body'] . " " . rawwiki ($page) // indexer.php
                • 1226: $data['body'] = $body // indexer.php compact()
                  • 1219: $body = '' // indexer.php
                • 592: $page = $page_idx[$pid] // indexer.phpif($key == 'title'),
                  • 587: $page_idx = $this->getindex ('page''') // indexer.php
                    • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
                      • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
                      • 1172: $query = array() // common.php
            • 287: foreach($by_targets as $sub) // subscription.php
              • 286: foreach($subs as $by_targets) // subscription.php
                • 284: $subs = subscription_find ($id$pres) // subscription.php
                  • 497: $id = trim($id':') // search.php
                    • 340: $id = pathid ($file) // search.php
                      • 56: foreach($files as $file) // search.php
                        • 38: $files[] = $dir . '/' . $file // search.phpif(!$dh),
Code Evaluation

Userinput is used as dynamic function name. Arbitrary functions may be called.
  • 50: $auth_class $auth_class() // auth.php
    • 48: $auth_class = "auth_" . $conf['authtype'] // auth.php
      • 157: $conf['plugin'][$plugin][$key] = $value // plugin.php by loadconfig()functionloadconfig(), if(isset($conf)),
        • 411: foreach($lines as $value) // changelog.php
          • 405: $lines = explode("\n"$chunk) // changelog.phpif(filesize($file) < $chunk_size || $chunk_size == 0) else ,
            • 403: $chunk .= $tmp // changelog.phpif(filesize($file) < $chunk_size || $chunk_size == 0) else ,
              • 395: $chunk = '' // changelog.phpif(filesize($file) < $chunk_size || $chunk_size == 0) else ,
              • : 
              • : 
              • 400: $tmp = fread($fpmax($chunk_size - $got0)) // if(filesize($file) < $chunk_size || $chunk_size == 0) else , changelog.php stopped, already traced
            • 395: $chunk = '' // changelog.phpif(filesize($file) < $chunk_size || $chunk_size == 0) else ,
            • : 
          • 359: $lines = file ($file) // changelog.phpif(filesize($file) < $chunk_size || $chunk_size == 0),
            • 354: $file = metafn ($id'.changes') // changelog.phpif($media) else ,
              • 60: $id = cleanid ($id) // changelog.php
                • 43: $id = count($GLOBALS['output'][$file_name]) : 0 // searcher.php
                  • : 
    • requires:
      • 49: if(class_exists($auth_class))
File Disclosure

Userinput returned by function parse_url() reaches sensitive sink.
  • 126: file $acl = file ($config_cascade['acl']['default']) // auth.php
    • 476: extract($data) // template.phpregister_globals implementationelseif(!is_array($data)) else ,
      • 298: $data['addresslist'] = trim($addresslist . ',' . implode(','$emails)',') // subscription.php
        • 1231: extract($data) // indexer.phpregister_globals implementation
          • 1228: $data['body'] = $data['body'] . " " . rawwiki ($page) // indexer.php
            • 1226: $data['body'] = $body // indexer.php compact()
              • 1219: $body = '' // indexer.php
            • 592: $page = $page_idx[$pid] // indexer.phpif($key == 'title'),
              • 587: $page_idx = $this->getindex ('page''') // indexer.php
                • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
                  • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
                  • 1172: $query = array() // common.php
        • 293: $emails[$sub0] = $info['mail'] // subscription.phpif($level >= AUTH_READ), if(strcasecmp($info, $conf) != 0),
          • 288: $info = $auth->getuserdata ($sub[0]) // subscription.php
            • : 
            • 287: foreach($by_targets as $sub) // subscription.php
              • 286: foreach($subs as $by_targets) // subscription.php
                • 284: $subs = subscription_find ($id$pres) // subscription.php
                  • 497: $id = trim($id':') // search.php
                    • 340: $id = pathid ($file) // search.php
                      • 56: foreach($files as $file) // search.php
                        • 38: $files[] = $dir . '/' . $file // search.phpif(!$dh),
                          • 405: foreach($pathA AS $key=>$dir) // pageutils.phpif($id == '.'),
                            • 403: $pathA = explode(':'$id) // pageutils.phpif($id == '.'),
                              • 399: $id = $ns . ':' . $id // pageutils.phpif($id == '.'),
                                • 1650: $ns = utf8_encodefn (str_replace(':''/'$ns)) // media.php
                                  • 357: foreach($missing as $ns) // io.php
                                    • 356: $missing = array_reverse($missing) // io.php
                                      • 350: $missing[] = $ns // io.php
                                        • 348: $ns = implode(':'$ns_stack) // io.php
Code Evaluation

Userinput returned by function cleanid() reaches sensitive sink.
  • 437: array_map $groups = array_map(array($auth'cleanGroup')$groups) // auth.php
    • 50: $auth =  new $auth_class() // auth.phpif(class_exists($auth_class)),
      • 48: $auth_class = "auth_" . $conf['authtype'] // auth.php
        • 157: $conf['plugin'][$plugin][$key] = $value // plugin.php by loadconfig()functionloadconfig(), if(isset($conf)),
          • 411: foreach($lines as $value) // changelog.php
            • 405: $lines = explode("\n"$chunk) // changelog.phpif(filesize($file) < $chunk_size || $chunk_size == 0) else ,
              • 403: $chunk .= $tmp // changelog.phpif(filesize($file) < $chunk_size || $chunk_size == 0) else ,
                • 395: $chunk = '' // changelog.phpif(filesize($file) < $chunk_size || $chunk_size == 0) else ,
                • : 
                • : 
                • 400: $tmp = fread($fpmax($chunk_size - $got0)) // if(filesize($file) < $chunk_size || $chunk_size == 0) else , changelog.php stopped, already traced
              • 395: $chunk = '' // changelog.phpif(filesize($file) < $chunk_size || $chunk_size == 0) else ,
              • : 
            • 359: $lines = file ($file) // changelog.phpif(filesize($file) < $chunk_size || $chunk_size == 0),
              • 354: $file = metafn ($id'.changes') // changelog.phpif($media) else ,
                • 60: $id = cleanid ($id) // changelog.php
                  • 43: $id = count($GLOBALS['output'][$file_name]) : 0 // searcher.php
                    • : 
Code Evaluation

Userinput returned by function cleanid() reaches sensitive sink.
  • 509: array_map $groups = array_map(array($auth'cleanGroup')(array)$groups) // auth.php
    • 50: $auth =  new $auth_class() // auth.phpif(class_exists($auth_class)),
      • 48: $auth_class = "auth_" . $conf['authtype'] // auth.php
        • 157: $conf['plugin'][$plugin][$key] = $value // plugin.php by loadconfig()functionloadconfig(), if(isset($conf)),
          • 411: foreach($lines as $value) // changelog.php
            • 405: $lines = explode("\n"$chunk) // changelog.phpif(filesize($file) < $chunk_size || $chunk_size == 0) else ,
              • 403: $chunk .= $tmp // changelog.phpif(filesize($file) < $chunk_size || $chunk_size == 0) else ,
                • 395: $chunk = '' // changelog.phpif(filesize($file) < $chunk_size || $chunk_size == 0) else ,
                • : 
                • : 
                • 400: $tmp = fread($fpmax($chunk_size - $got0)) // if(filesize($file) < $chunk_size || $chunk_size == 0) else , changelog.php stopped, already traced
              • 395: $chunk = '' // changelog.phpif(filesize($file) < $chunk_size || $chunk_size == 0) else ,
              • : 
            • 359: $lines = file ($file) // changelog.phpif(filesize($file) < $chunk_size || $chunk_size == 0),
              • 354: $file = metafn ($id'.changes') // changelog.phpif($media) else ,
                • 60: $id = cleanid ($id) // changelog.php
                  • 43: $id = count($GLOBALS['output'][$file_name]) : 0 // searcher.php
                    • : 
File Manipulation

Userinput returned by function cleanid() reaches sensitive sink. (Blind exploitation)
  • 863: unlink unlink ($tfile) // auth.php
    • 857: $tfile = $conf['cachedir'] . '/' . $token[0] . '/' . $token . '.pwauth' // auth.php
      • 157: $conf['plugin'][$plugin][$key] = $value // plugin.php by loadconfig()functionloadconfig(), if(isset($conf)),
        • 411: foreach($lines as $value) // changelog.php
          • 405: $lines = explode("\n"$chunk) // changelog.phpif(filesize($file) < $chunk_size || $chunk_size == 0) else ,
            • 403: $chunk .= $tmp // changelog.phpif(filesize($file) < $chunk_size || $chunk_size == 0) else ,
              • 395: $chunk = '' // changelog.phpif(filesize($file) < $chunk_size || $chunk_size == 0) else ,
              • : 
              • : 
              • 400: $tmp = fread($fpmax($chunk_size - $got0)) // if(filesize($file) < $chunk_size || $chunk_size == 0) else , changelog.php stopped, already traced
            • 395: $chunk = '' // changelog.phpif(filesize($file) < $chunk_size || $chunk_size == 0) else ,
            • : 
          • 359: $lines = file ($file) // changelog.phpif(filesize($file) < $chunk_size || $chunk_size == 0),
            • 354: $file = metafn ($id'.changes') // changelog.phpif($media) else ,
              • 60: $id = cleanid ($id) // changelog.php
                • 43: $id = count($GLOBALS['output'][$file_name]) : 0 // searcher.php
                  • : 
      • 852: $token = preg_replace('/[^a-f0-9]+/'''$_REQUEST['pwauth']) // auth.php
      • 852: $token = preg_replace('/[^a-f0-9]+/'''$_REQUEST['pwauth']) // auth.php
    • requires:
      • 854: if($token)
File Inclusion

Userinput returned by function parse_url() reaches sensitive sink.
  • 87: require_once require_once ($classes[$name])
    • 476: extract($data) // template.phpregister_globals implementationelseif(!is_array($data)) else ,
      • 298: $data['addresslist'] = trim($addresslist . ',' . implode(','$emails)',') // subscription.php
        • 1231: extract($data) // indexer.phpregister_globals implementation
          • 1228: $data['body'] = $data['body'] . " " . rawwiki ($page) // indexer.php
            • 1226: $data['body'] = $body // indexer.php compact()
              • 1219: $body = '' // indexer.php
            • 592: $page = $page_idx[$pid] // indexer.phpif($key == 'title'),
              • 587: $page_idx = $this->getindex ('page''') // indexer.php
                • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
                  • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
                  • 1172: $query = array() // common.php
        • 293: $emails[$sub0] = $info['mail'] // subscription.phpif($level >= AUTH_READ), if(strcasecmp($info, $conf) != 0),
          • 288: $info = $auth->getuserdata ($sub[0]) // subscription.php
            • : 
            • 287: foreach($by_targets as $sub) // subscription.php
              • 286: foreach($subs as $by_targets) // subscription.php
                • 284: $subs = subscription_find ($id$pres) // subscription.php
                  • 497: $id = trim($id':') // search.php
                    • 340: $id = pathid ($file) // search.php
                      • 56: foreach($files as $file) // search.php
                        • 38: $files[] = $dir . '/' . $file // search.phpif(!$dh),
                          • 405: foreach($pathA AS $key=>$dir) // pageutils.phpif($id == '.'),
                            • 403: $pathA = explode(':'$id) // pageutils.phpif($id == '.'),
                              • 399: $id = $ns . ':' . $id // pageutils.phpif($id == '.'),
                                • 1650: $ns = utf8_encodefn (str_replace(':''/'$ns)) // media.php
                                  • 357: foreach($missing as $ns) // io.php
                                    • 356: $missing = array_reverse($missing) // io.php
                                      • 350: $missing[] = $ns // io.php
                                        • 348: $ns = implode(':'$ns_stack) // io.php
    • requires:
      • 86: if(isset($classes[$name]))
File Inclusion

Userinput returned by function parse_url() reaches sensitive sink.
  • 98: include include DOKU_PLUGIN . "{$m[2]}/{$m[1]}$c.php"
    • 10: define('DOKU_PLUGIN'DOKU_INC . 'lib/plugins/') // pluginutils.php define()
      • 1231: extract($data) // indexer.phpregister_globals implementation
        • 1228: $data['body'] = $data['body'] . " " . rawwiki ($page) // indexer.php
          • 1226: $data['body'] = $body // indexer.php compact()
            • 1219: $body = '' // indexer.php
          • 592: $page = $page_idx[$pid] // indexer.phpif($key == 'title'),
            • 587: $page_idx = $this->getindex ('page''') // indexer.php
              • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
                • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
                • 1172: $query = array() // common.php
    • 93: preg_match('/^(helper|syntax|action|admin|renderer)_plugin_([^_]+)(?:_([^_]+))?$/'$name$m)) // preg_match()
      • 869: $name = $title // template.phpif(useheading('navigation')),
        • 868: $title = p_get_first_heading ($id) // template.phpif(useheading('navigation')),
          • 717: foreach($crumbs as $id=>$name) // template.php
            • 707: $crumbs = array_reverse($crumbstrue) // template.phpif($lang == 'rtl'),
              • 703: $crumbs = breadcrumbs () // template.php
              • 476: extract($data) // template.phpregister_globals implementationelseif(!is_array($data)) else ,
                • 298: $data['addresslist'] = trim($addresslist . ',' . implode(','$emails)',') // subscription.php
                  • 1231: extract($data) // indexer.phpregister_globals implementation
                    • 1228: $data['body'] = $data['body'] . " " . rawwiki ($page) // indexer.php
                      • 1226: $data['body'] = $body // indexer.php compact()
                        • 1219: $body = '' // indexer.php
                      • 592: $page = $page_idx[$pid] // indexer.phpif($key == 'title'),
                        • 587: $page_idx = $this->getindex ('page''') // indexer.php
                          • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
                            • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
                            • 1172: $query = array() // common.php
                  • 293: $emails[$sub0] = $info['mail'] // subscription.phpif($level >= AUTH_READ), if(strcasecmp($info, $conf) != 0),
                    • 288: $info = $auth->getuserdata ($sub[0]) // subscription.php
    • requires:
      • 93: if(preg_match('/^(helper|syntax|action|admin|renderer)_plugin_([^_]+)(?:_([^_]+))?$/'$name$m))

File: /srv/http-rips/tests/test-1/inc/init.php

File Disclosure

Userinput reaches sensitive sink.
  • 23: opendir $handle = opendir($path) // filer.php
    • 19:  function read_recursiv($path$scan_subdirs)

Userinput is passed through function parameters.
  • 50:  $files = read_recursiv ($location$scan_subdirs) // main.php
    • 45: $location = realpath($_POST['loc']) // main.php
    • requires:
      • 43: if(!empty($_POST['loc']))
      • 47: if(is_dir($location))
File Disclosure

Userinput reaches sensitive sink.
  • 21: file $lines = file ($file_name) // searcher.php
    • 18:  function searchfile($file_name$search)

Userinput is passed through function parameters.
  • 185:  searchfile ($file_name$_POST['regex']) // main.php
    • 183: foreach($files as $file_name) // main.php
      • 61: $files = array() // main.phpif(is_file($location) && in_array(substr($location, strrpos($location, '.')), $FILETYPES)) else ,
      • 57: $files[0] = $location // main.phpif(is_file($location) && in_array(substr($location, strrpos($location, '.')), $FILETYPES)),
        • 45: $location = realpath($_POST['loc']) // main.php
      • 50: $files = read_recursiv ($location$scan_subdirs) // main.phpif(is_dir($location)),
        • 45: $location = realpath($_POST['loc']) // main.php
        • 49: $scan_subdirs = $_POST['subdirs'] : false // main.phpif(is_dir($location)),
    • requires:
      • 43: if(!empty($_POST['loc']))
      • 179: if(!empty($_POST['regex']))
Code Evaluation

Userinput reaches sensitive sink.
  • 33: preg_replace $line = preg_replace("/(>[^<]*)(" . trim($search) . ")/i""$1<span class='markline'>$2</span>"$line) // searcher.php
    • 20: $search = str_replace('/''\/'$search) // searcher.php
      • 18:  function searchfile($file_name$search)
    • requires:
      • 23:  function searchfile($file_name$search)
      • 25: if(preg_match("/" . trim($search) . "/i"$lines[$i]))

Userinput is passed through function parameters.
  • 185:  searchfile ($file_name$_POST['regex']) // main.php
    • 183: foreach($files as $file_name) // main.php
      • 61: $files = array() // main.phpif(is_file($location) && in_array(substr($location, strrpos($location, '.')), $FILETYPES)) else ,
      • 57: $files[0] = $location // main.phpif(is_file($location) && in_array(substr($location, strrpos($location, '.')), $FILETYPES)),
        • 45: $location = realpath($_POST['loc']) // main.php
      • 50: $files = read_recursiv ($location$scan_subdirs) // main.phpif(is_dir($location)),
        • 45: $location = realpath($_POST['loc']) // main.php
        • 49: $scan_subdirs = $_POST['subdirs'] : false // main.phpif(is_dir($location)),
    • requires:
      • 43: if(!empty($_POST['loc']))
      • 179: if(!empty($_POST['regex']))
Possible Flow Control

Userinput returned by function parse_url() reaches sensitive sink.
  • 1177: parse_str parse_str ($url['query']$query) // common.php
    • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
Code Evaluation

Userinput is used as dynamic function name. Arbitrary functions may be called.
  • 88: $method $method($this->data) // events.php
    • 87: list($obj$method) = $action // events.php list()
      • 734: $action = valid_input_set ('action'array('subscribe''unsubscribe')$params'invalid subscription action given') // actions.php
        • 680: $params[$param] = $_REQUEST["sub_$param"] // actions.phpif(isset($_REQUEST)),
          • 177: $_REQUEST = array_merge($_GET$_POST)
    • requires:
      • 85: if($this->advise_before ($enablePrevent) && is_callable($action))
      • 86: if(is_array($action))
Code Evaluation

Userinput is used as dynamic function name. Arbitrary functions may be called.
  • 90: $action $action($this->data) // events.php
    • 734: $action = valid_input_set ('action'array('subscribe''unsubscribe')$params'invalid subscription action given') // actions.php
      • 680: $params[$param] = $_REQUEST["sub_$param"] // actions.phpif(isset($_REQUEST)),
        • 177: $_REQUEST = array_merge($_GET$_POST)
    • requires:
      • 85: if($this->advise_before ($enablePrevent) && is_callable($action))
      • 89: if(is_array($action)) else 
Code Evaluation

Userinput returned by function parse_url() reaches sensitive sink.
  • 264: call_user_func $form .= call_user_func('form_' . $elem_type$element) . DOKU_LF // form.php
    • 262: $elem_type = $element['_elem'] // form.php
      • 260: foreach($this->_content as $element) // form.php
        • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
          • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
          • 1172: $query = array() // common.php
        • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
          • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
          • 1172: $query = array() // common.php
    • requires:
      • 261: if(is_array($element))
      • 263: if(function_exists('form_' . $elem_type))
Code Evaluation

Userinput returned by function parse_url() reaches sensitive sink.
  • 377: preg_replace $snippets = preg_replace('/' . $re1 . '/iu'$m . '$1' . $m$snippets) // fulltext.php
    • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
      • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
      • 1172: $query = array() // common.php
    • 376: $m = "\1" // fulltext.php
    • 376: $m = "\1" // fulltext.php
    • requires:
      • 308: if($evt->advise_before ())
Code Evaluation

Userinput returned by function parse_url() reaches sensitive sink.
  • 90: preg_replace_callback preg_replace_callback($regexp'html_secedit_button'$text) // html.php
    • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
      • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
      • 1172: $query = array() // common.php
Unserialize

Userinput reaches sensitive sink when function html_draft() is called.
  • 259: unserialize $draft = unserialize(io_readfile ($INFO['draft']false)) // html.php
    • 255:  global $INFO // html.php
      • 706: $INFO['subscribed'] = get_info_subscribed () // actions.php
    • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
      • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
      • 1172: $query = array() // common.php
    • requires:
      • 254:  function html_draft()

Call triggers vulnerability in function html_draft()
  • 74:  html_draft () // template.php
    • requires:
      • 59: switch($ACT)
      • 73:  case 'draft' : 
Code Evaluation

Userinput returned by function parse_url() reaches sensitive sink.
  • 288: preg_replace_callback $html = preg_replace_callback("/((<[^>]*)|$regex)/ui"'html_hilight_callback'$html) // html.php
    • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
      • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
      • 1172: $query = array() // common.php
Code Evaluation

Userinput returned by function parse_url() reaches sensitive sink.
  • 938: call_user_func $ret .= call_user_func($lifunc$item) // html.php
    • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
      • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
      • 1172: $query = array() // common.php
Code Evaluation

Userinput returned by function parse_url() reaches sensitive sink.
  • 941: call_user_func $ret .= call_user_func($func$item) // html.php
    • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
      • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
      • 1172: $query = array() // common.php
File Disclosure

Userinput returned by function parse_url() reaches sensitive sink. (Blind exploitation)
  • 170: fread print fread($fh$chunk) // httputils.php
    • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
      • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
      • 1172: $query = array() // common.php
Code Evaluation

Userinput returned by function parse_url() reaches sensitive sink.
  • 550: call_user_func_array call_user_func_array($funcarray($val$word))) // indexer.php
    • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
      • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
      • 1172: $query = array() // common.php
    • requires:
      • 547: if(!is_null($func))
File Manipulation

Userinput returned by function parse_url() reaches sensitive sink. (Blind exploitation)
  • 865: fwrite fwrite($fhjoin("\n"$lines)) // indexer.php
    • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
      • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
      • 1172: $query = array() // common.php
    • 723: $lines = $this->getindex ($metaname . '_i''') // indexer.php
      • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
        • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
        • 1172: $query = array() // common.php
      • 711: $metaname = idx_cleanname ($key) // indexer.php
        • 1812: foreach($params as $key=>$val) // html.php
          • 453: $params['action'] = media_managerurl (array('image'=>$media_id)'&') // html.php
            • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
              • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
              • 1172: $query = array() // common.php
          • 452: $params['id'] = 'page__revisions' // html.php array()
          • 180: $params['id'] = $id // html.phpelseif($conf) else ,
            • 171: $id = idfilter ($idfalse) // html.php
              • 481: foreach(array_keys($result) as $id) // fulltext.php
                • 480: $result = $args[0] // fulltext.php
                  • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
                    • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
                    • 1172: $query = array() // common.php
              • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
                • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
                • 1172: $query = array() // common.php
          • 31: $params = array() // form.php
File Manipulation

Userinput returned by function parse_url() reaches sensitive sink. (Blind exploitation)
  • 867: fwrite fwrite($fh"\n") // indexer.php
    • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
      • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
      • 1172: $query = array() // common.php
    • requires:
      • 866: if(!empty($lines))
File Disclosure

Userinput returned by function parse_url() reaches sensitive sink.
  • 919: fgets $curline = fgets($ih)) !==  // indexer.php
    • 916: $ih = fopen($fn . '.idx''r') // indexer.php
      • 913: $fn = $conf['indexdir'] . '/' . $idx . $suffix // indexer.php
        • 18: $conf = array() // plugin.php
        • 142: $idx = $index[$wid] : '' // indexer.phpif(!empty($words)),
          • 140: $index = $this->getindex ('i'$wlen) // indexer.phpif(!empty($words)),
            • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
              • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
              • 1172: $query = array() // common.php
            • 139: foreach(array_keys($words) as $wlen) // indexer.phpif(!empty($words)),
              • 132: $words = $this->getpagewords ($text) // indexer.php
                • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
                  • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
                  • 1172: $query = array() // common.php
                • 75: $text = utf8_strtolower (rawwiki ($id)) // fulltext.phpswitch(substr($token, 0, 3)), case 'P-:' : ,
                  • 74: foreach(array_keys($pages) as $id) // fulltext.phpswitch(substr($token, 0, 3)), case 'P-:' : ,
                    • 72: $pages = end($stack) // fulltext.phpswitch(substr($token, 0, 3)), case 'P-:' : ,
                      • 64: $stack[] = (array)$lookup[$word] // fulltext.phpswitch(substr($token, 0, 3)), case 'W_:' : ,
                        • 48: $lookup = $Indexer->lookup ($q['words']) // fulltext.php
                          • : 
                          • 1191: $q = preg_split('/[\s\'"\\\\`()\]\[?:!\.{};,#+*<>\\/]+/'$q - 1PREG_SPLIT_NO_EMPTY) // common.php
                            • 1188: $q = urldecode(ltrim($url['path']'/')) // common.phpelseif(preg_match("#a9\.com#i", $url)),
                              • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
                            • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
                              • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
                              • 1172: $query = array() // common.php
        • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
          • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
          • 1172: $query = array() // common.php
    • requires:
      • 917: if($ih)
File Manipulation

Userinput returned by function parse_url() reaches sensitive sink. (Blind exploitation)
  • 920: fwrite fwrite($fh$line : $curline) // indexer.php
    • 914: $fh = fopen($fn . '.tmp''w') // indexer.php
      • 913: $fn = $conf['indexdir'] . '/' . $idx . $suffix // indexer.php
        • 18: $conf = array() // plugin.php
        • 142: $idx = $index[$wid] : '' // indexer.phpif(!empty($words)),
          • 140: $index = $this->getindex ('i'$wlen) // indexer.phpif(!empty($words)),
            • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
              • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
              • 1172: $query = array() // common.php
            • 139: foreach(array_keys($words) as $wlen) // indexer.phpif(!empty($words)),
              • 132: $words = $this->getpagewords ($text) // indexer.php
                • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
                  • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
                  • 1172: $query = array() // common.php
                • 75: $text = utf8_strtolower (rawwiki ($id)) // fulltext.phpswitch(substr($token, 0, 3)), case 'P-:' : ,
                  • 74: foreach(array_keys($pages) as $id) // fulltext.phpswitch(substr($token, 0, 3)), case 'P-:' : ,
                    • 72: $pages = end($stack) // fulltext.phpswitch(substr($token, 0, 3)), case 'P-:' : ,
                      • 64: $stack[] = (array)$lookup[$word] // fulltext.phpswitch(substr($token, 0, 3)), case 'W_:' : ,
                        • 48: $lookup = $Indexer->lookup ($q['words']) // fulltext.php
                          • : 
                          • 1191: $q = preg_split('/[\s\'"\\\\`()\]\[?:!\.{};,#+*<>\\/]+/'$q - 1PREG_SPLIT_NO_EMPTY) // common.php
                            • 1188: $q = urldecode(ltrim($url['path']'/')) // common.phpelseif(preg_match("#a9\.com#i", $url)),
                              • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
                            • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
                              • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
                              • 1172: $query = array() // common.php
        • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
          • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
          • 1172: $query = array() // common.php
    • 893: $line = fgets($fh)) !==  // indexer.php stopped, already traced
    • requires:
      • 917: if($ih)
File Manipulation

Userinput returned by function parse_url() reaches sensitive sink. (Blind exploitation)
  • 924: fwrite fwrite($fh"\n") // indexer.php
    • 914: $fh = fopen($fn . '.tmp''w') // indexer.php
      • 913: $fn = $conf['indexdir'] . '/' . $idx . $suffix // indexer.php
        • 18: $conf = array() // plugin.php
        • 142: $idx = $index[$wid] : '' // indexer.phpif(!empty($words)),
          • 140: $index = $this->getindex ('i'$wlen) // indexer.phpif(!empty($words)),
            • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
              • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
              • 1172: $query = array() // common.php
            • 139: foreach(array_keys($words) as $wlen) // indexer.phpif(!empty($words)),
              • 132: $words = $this->getpagewords ($text) // indexer.php
                • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
                  • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
                  • 1172: $query = array() // common.php
                • 75: $text = utf8_strtolower (rawwiki ($id)) // fulltext.phpswitch(substr($token, 0, 3)), case 'P-:' : ,
                  • 74: foreach(array_keys($pages) as $id) // fulltext.phpswitch(substr($token, 0, 3)), case 'P-:' : ,
                    • 72: $pages = end($stack) // fulltext.phpswitch(substr($token, 0, 3)), case 'P-:' : ,
                      • 64: $stack[] = (array)$lookup[$word] // fulltext.phpswitch(substr($token, 0, 3)), case 'W_:' : ,
                        • 48: $lookup = $Indexer->lookup ($q['words']) // fulltext.php
                          • : 
                          • 1191: $q = preg_split('/[\s\'"\\\\`()\]\[?:!\.{};,#+*<>\\/]+/'$q - 1PREG_SPLIT_NO_EMPTY) // common.php
                            • 1188: $q = urldecode(ltrim($url['path']'/')) // common.phpelseif(preg_match("#a9\.com#i", $url)),
                              • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
                            • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
                              • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
                              • 1172: $query = array() // common.php
        • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
          • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
          • 1172: $query = array() // common.php
    • requires:
      • 917: if($ih)
      • 922: if($id > $ln)
File Manipulation

Userinput returned by function parse_url() reaches sensitive sink. (Blind exploitation)
  • 925: fwrite fwrite($fh$line) // indexer.php
    • 914: $fh = fopen($fn . '.tmp''w') // indexer.php
      • 913: $fn = $conf['indexdir'] . '/' . $idx . $suffix // indexer.php
        • 18: $conf = array() // plugin.php
        • 142: $idx = $index[$wid] : '' // indexer.phpif(!empty($words)),
          • 140: $index = $this->getindex ('i'$wlen) // indexer.phpif(!empty($words)),
            • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
              • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
              • 1172: $query = array() // common.php
            • 139: foreach(array_keys($words) as $wlen) // indexer.phpif(!empty($words)),
              • 132: $words = $this->getpagewords ($text) // indexer.php
                • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
                  • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
                  • 1172: $query = array() // common.php
                • 75: $text = utf8_strtolower (rawwiki ($id)) // fulltext.phpswitch(substr($token, 0, 3)), case 'P-:' : ,
                  • 74: foreach(array_keys($pages) as $id) // fulltext.phpswitch(substr($token, 0, 3)), case 'P-:' : ,
                    • 72: $pages = end($stack) // fulltext.phpswitch(substr($token, 0, 3)), case 'P-:' : ,
                      • 64: $stack[] = (array)$lookup[$word] // fulltext.phpswitch(substr($token, 0, 3)), case 'W_:' : ,
                        • 48: $lookup = $Indexer->lookup ($q['words']) // fulltext.php
                          • : 
                          • 1191: $q = preg_split('/[\s\'"\\\\`()\]\[?:!\.{};,#+*<>\\/]+/'$q - 1PREG_SPLIT_NO_EMPTY) // common.php
                            • 1188: $q = urldecode(ltrim($url['path']'/')) // common.phpelseif(preg_match("#a9\.com#i", $url)),
                              • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
                            • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
                              • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
                              • 1172: $query = array() // common.php
        • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
          • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
          • 1172: $query = array() // common.php
    • 893: $line = fgets($fh)) !==  // indexer.php stopped, already traced
    • requires:
      • 917: if($ih)
      • 922: if($id > $ln)
File Manipulation

Userinput returned by function parse_url() reaches sensitive sink. (Blind exploitation)
  • 931: fwrite fwrite($fh"\n") // indexer.php
    • 914: $fh = fopen($fn . '.tmp''w') // indexer.php
      • 913: $fn = $conf['indexdir'] . '/' . $idx . $suffix // indexer.php
        • 18: $conf = array() // plugin.php
        • 142: $idx = $index[$wid] : '' // indexer.phpif(!empty($words)),
          • 140: $index = $this->getindex ('i'$wlen) // indexer.phpif(!empty($words)),
            • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
              • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
              • 1172: $query = array() // common.php
            • 139: foreach(array_keys($words) as $wlen) // indexer.phpif(!empty($words)),
              • 132: $words = $this->getpagewords ($text) // indexer.php
                • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
                  • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
                  • 1172: $query = array() // common.php
                • 75: $text = utf8_strtolower (rawwiki ($id)) // fulltext.phpswitch(substr($token, 0, 3)), case 'P-:' : ,
                  • 74: foreach(array_keys($pages) as $id) // fulltext.phpswitch(substr($token, 0, 3)), case 'P-:' : ,
                    • 72: $pages = end($stack) // fulltext.phpswitch(substr($token, 0, 3)), case 'P-:' : ,
                      • 64: $stack[] = (array)$lookup[$word] // fulltext.phpswitch(substr($token, 0, 3)), case 'W_:' : ,
                        • 48: $lookup = $Indexer->lookup ($q['words']) // fulltext.php
                          • : 
                          • 1191: $q = preg_split('/[\s\'"\\\\`()\]\[?:!\.{};,#+*<>\\/]+/'$q - 1PREG_SPLIT_NO_EMPTY) // common.php
                            • 1188: $q = urldecode(ltrim($url['path']'/')) // common.phpelseif(preg_match("#a9\.com#i", $url)),
                              • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
                            • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
                              • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
                              • 1172: $query = array() // common.php
        • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
          • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
          • 1172: $query = array() // common.php
    • requires:
      • 928: if($ih) else 
File Manipulation

Userinput returned by function parse_url() reaches sensitive sink. (Blind exploitation)
  • 932: fwrite fwrite($fh$line) // indexer.php
    • 914: $fh = fopen($fn . '.tmp''w') // indexer.php
      • 913: $fn = $conf['indexdir'] . '/' . $idx . $suffix // indexer.php
        • 18: $conf = array() // plugin.php
        • 142: $idx = $index[$wid] : '' // indexer.phpif(!empty($words)),
          • 140: $index = $this->getindex ('i'$wlen) // indexer.phpif(!empty($words)),
            • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
              • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
              • 1172: $query = array() // common.php
            • 139: foreach(array_keys($words) as $wlen) // indexer.phpif(!empty($words)),
              • 132: $words = $this->getpagewords ($text) // indexer.php
                • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
                  • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
                  • 1172: $query = array() // common.php
                • 75: $text = utf8_strtolower (rawwiki ($id)) // fulltext.phpswitch(substr($token, 0, 3)), case 'P-:' : ,
                  • 74: foreach(array_keys($pages) as $id) // fulltext.phpswitch(substr($token, 0, 3)), case 'P-:' : ,
                    • 72: $pages = end($stack) // fulltext.phpswitch(substr($token, 0, 3)), case 'P-:' : ,
                      • 64: $stack[] = (array)$lookup[$word] // fulltext.phpswitch(substr($token, 0, 3)), case 'W_:' : ,
                        • 48: $lookup = $Indexer->lookup ($q['words']) // fulltext.php
                          • : 
                          • 1191: $q = preg_split('/[\s\'"\\\\`()\]\[?:!\.{};,#+*<>\\/]+/'$q - 1PREG_SPLIT_NO_EMPTY) // common.php
                            • 1188: $q = urldecode(ltrim($url['path']'/')) // common.phpelseif(preg_match("#a9\.com#i", $url)),
                              • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
                            • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
                              • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
                              • 1172: $query = array() // common.php
        • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
          • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
          • 1172: $query = array() // common.php
    • 893: $line = fgets($fh)) !==  // indexer.php stopped, already traced
    • requires:
      • 928: if($ih) else 
File Manipulation

Userinput returned by function parse_url() reaches sensitive sink. (Blind exploitation)
  • 936: chmod chmod($fn . '.tmp'$conf['fperm']) // indexer.php
    • 913: $fn = $conf['indexdir'] . '/' . $idx . $suffix // indexer.php
      • 18: $conf = array() // plugin.php
      • 142: $idx = $index[$wid] : '' // indexer.phpif(!empty($words)),
        • 140: $index = $this->getindex ('i'$wlen) // indexer.phpif(!empty($words)),
          • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
            • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
            • 1172: $query = array() // common.php
          • 139: foreach(array_keys($words) as $wlen) // indexer.phpif(!empty($words)),
            • 132: $words = $this->getpagewords ($text) // indexer.php
              • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
                • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
                • 1172: $query = array() // common.php
              • 75: $text = utf8_strtolower (rawwiki ($id)) // fulltext.phpswitch(substr($token, 0, 3)), case 'P-:' : ,
                • 74: foreach(array_keys($pages) as $id) // fulltext.phpswitch(substr($token, 0, 3)), case 'P-:' : ,
                  • 72: $pages = end($stack) // fulltext.phpswitch(substr($token, 0, 3)), case 'P-:' : ,
                    • 64: $stack[] = (array)$lookup[$word] // fulltext.phpswitch(substr($token, 0, 3)), case 'W_:' : ,
                      • 48: $lookup = $Indexer->lookup ($q['words']) // fulltext.php
                        • : 
                        • 1191: $q = preg_split('/[\s\'"\\\\`()\]\[?:!\.{};,#+*<>\\/]+/'$q - 1PREG_SPLIT_NO_EMPTY) // common.php
                          • 1188: $q = urldecode(ltrim($url['path']'/')) // common.phpelseif(preg_match("#a9\.com#i", $url)),
                            • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
                          • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
                            • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
                            • 1172: $query = array() // common.php
      • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
        • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
        • 1172: $query = array() // common.php
    • requires:
      • 935: if(isset($conf['fperm']))
File Disclosure

Userinput returned by function parse_url() reaches sensitive sink.
  • 972: file $lengths = file ($cachename . '.idx'FILE_IGNORE_NEW_LINES|FILE_SKIP_EMPTY_LINES) // indexer.php
    • 971: $cachename = $conf['indexdir'] . '/' . $idx . 'lengths' // indexer.phpif($idx == 'i') else ,
      • 18: $conf = array() // plugin.php
      • 142: $idx = $index[$wid] : '' // indexer.phpif(!empty($words)),
        • 140: $index = $this->getindex ('i'$wlen) // indexer.phpif(!empty($words)),
          • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
            • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
            • 1172: $query = array() // common.php
          • 139: foreach(array_keys($words) as $wlen) // indexer.phpif(!empty($words)),
            • 132: $words = $this->getpagewords ($text) // indexer.php
              • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
                • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
                • 1172: $query = array() // common.php
              • 75: $text = utf8_strtolower (rawwiki ($id)) // fulltext.phpswitch(substr($token, 0, 3)), case 'P-:' : ,
                • 74: foreach(array_keys($pages) as $id) // fulltext.phpswitch(substr($token, 0, 3)), case 'P-:' : ,
                  • 72: $pages = end($stack) // fulltext.phpswitch(substr($token, 0, 3)), case 'P-:' : ,
                    • 64: $stack[] = (array)$lookup[$word] // fulltext.phpswitch(substr($token, 0, 3)), case 'W_:' : ,
                      • 48: $lookup = $Indexer->lookup ($q['words']) // fulltext.php
                        • : 
                        • 1191: $q = preg_split('/[\s\'"\\\\`()\]\[?:!\.{};,#+*<>\\/]+/'$q - 1PREG_SPLIT_NO_EMPTY) // common.php
                          • 1188: $q = urldecode(ltrim($url['path']'/')) // common.phpelseif(preg_match("#a9\.com#i", $url)),
                            • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
                          • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
                            • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
                            • 1172: $query = array() // common.php
File Manipulation

Userinput returned by function parse_url() reaches sensitive sink. (Blind exploitation)
  • 988: fwrite fwrite($fhimplode("\n"$lengths)) // indexer.php
    • 983: $fh = fopen($cachename . '.tmp''w') // indexer.php
      • 971: $cachename = $conf['indexdir'] . '/' . $idx . 'lengths' // indexer.phpif($idx == 'i') else ,
        • 18: $conf = array() // plugin.php
        • 142: $idx = $index[$wid] : '' // indexer.phpif(!empty($words)),
          • 140: $index = $this->getindex ('i'$wlen) // indexer.phpif(!empty($words)),
            • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
              • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
              • 1172: $query = array() // common.php
            • 139: foreach(array_keys($words) as $wlen) // indexer.phpif(!empty($words)),
              • 132: $words = $this->getpagewords ($text) // indexer.php
                • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
                  • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
                  • 1172: $query = array() // common.php
                • 75: $text = utf8_strtolower (rawwiki ($id)) // fulltext.phpswitch(substr($token, 0, 3)), case 'P-:' : ,
                  • 74: foreach(array_keys($pages) as $id) // fulltext.phpswitch(substr($token, 0, 3)), case 'P-:' : ,
                    • 72: $pages = end($stack) // fulltext.phpswitch(substr($token, 0, 3)), case 'P-:' : ,
                      • 64: $stack[] = (array)$lookup[$word] // fulltext.phpswitch(substr($token, 0, 3)), case 'W_:' : ,
                        • 48: $lookup = $Indexer->lookup ($q['words']) // fulltext.php
                          • : 
                          • 1191: $q = preg_split('/[\s\'"\\\\`()\]\[?:!\.{};,#+*<>\\/]+/'$q - 1PREG_SPLIT_NO_EMPTY) // common.php
                            • 1188: $q = urldecode(ltrim($url['path']'/')) // common.phpelseif(preg_match("#a9\.com#i", $url)),
                              • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
                            • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
                              • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
                              • 1172: $query = array() // common.php
    • 980: $lengths[] = $suffix // indexer.phpif(empty($lines)) else , if($old !== false),
      • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
        • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
        • 1172: $query = array() // common.php
File Manipulation

Userinput returned by function parse_url() reaches sensitive sink. (Blind exploitation)
  • 991: chmod chmod($cachename . '.tmp'$conf['fperm']) // indexer.php
    • 971: $cachename = $conf['indexdir'] . '/' . $idx . 'lengths' // indexer.phpif($idx == 'i') else ,
      • 18: $conf = array() // plugin.php
      • 142: $idx = $index[$wid] : '' // indexer.phpif(!empty($words)),
        • 140: $index = $this->getindex ('i'$wlen) // indexer.phpif(!empty($words)),
          • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
            • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
            • 1172: $query = array() // common.php
          • 139: foreach(array_keys($words) as $wlen) // indexer.phpif(!empty($words)),
            • 132: $words = $this->getpagewords ($text) // indexer.php
              • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
                • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
                • 1172: $query = array() // common.php
              • 75: $text = utf8_strtolower (rawwiki ($id)) // fulltext.phpswitch(substr($token, 0, 3)), case 'P-:' : ,
                • 74: foreach(array_keys($pages) as $id) // fulltext.phpswitch(substr($token, 0, 3)), case 'P-:' : ,
                  • 72: $pages = end($stack) // fulltext.phpswitch(substr($token, 0, 3)), case 'P-:' : ,
                    • 64: $stack[] = (array)$lookup[$word] // fulltext.phpswitch(substr($token, 0, 3)), case 'W_:' : ,
                      • 48: $lookup = $Indexer->lookup ($q['words']) // fulltext.php
                        • : 
                        • 1191: $q = preg_split('/[\s\'"\\\\`()\]\[?:!\.{};,#+*<>\\/]+/'$q - 1PREG_SPLIT_NO_EMPTY) // common.php
                          • 1188: $q = urldecode(ltrim($url['path']'/')) // common.phpelseif(preg_match("#a9\.com#i", $url)),
                            • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
                          • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
                            • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
                            • 1172: $query = array() // common.php
    • requires:
      • 990: if(isset($conf['fperm']))
File Manipulation

Userinput returned by function parse_url() reaches sensitive sink. (Blind exploitation)
  • 1036: fwrite fwrite($fhimplode("\n"$lengths)) // indexer.php
    • 1031: $fh = fopen($cachename . '.tmp''w') // indexer.php
      • 971: $cachename = $conf['indexdir'] . '/' . $idx . 'lengths' // indexer.phpif($idx == 'i') else ,
        • 18: $conf = array() // plugin.php
        • 142: $idx = $index[$wid] : '' // indexer.phpif(!empty($words)),
          • 140: $index = $this->getindex ('i'$wlen) // indexer.phpif(!empty($words)),
            • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
              • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
              • 1172: $query = array() // common.php
            • 139: foreach(array_keys($words) as $wlen) // indexer.phpif(!empty($words)),
              • 132: $words = $this->getpagewords ($text) // indexer.php
                • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
                  • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
                  • 1172: $query = array() // common.php
                • 75: $text = utf8_strtolower (rawwiki ($id)) // fulltext.phpswitch(substr($token, 0, 3)), case 'P-:' : ,
                  • 74: foreach(array_keys($pages) as $id) // fulltext.phpswitch(substr($token, 0, 3)), case 'P-:' : ,
                    • 72: $pages = end($stack) // fulltext.phpswitch(substr($token, 0, 3)), case 'P-:' : ,
                      • 64: $stack[] = (array)$lookup[$word] // fulltext.phpswitch(substr($token, 0, 3)), case 'W_:' : ,
                        • 48: $lookup = $Indexer->lookup ($q['words']) // fulltext.php
                          • : 
                          • 1191: $q = preg_split('/[\s\'"\\\\`()\]\[?:!\.{};,#+*<>\\/]+/'$q - 1PREG_SPLIT_NO_EMPTY) // common.php
                            • 1188: $q = urldecode(ltrim($url['path']'/')) // common.phpelseif(preg_match("#a9\.com#i", $url)),
                              • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
                            • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
                              • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
                              • 1172: $query = array() // common.php
    • 1025: $lengths[] = (int)$i // indexer.phpif(substr($f, 0, 1) == 'i' && substr($f, - 4) == '.idx'), if(is_numeric($i)),
      • 1023: $i = substr($f1 - 4) // indexer.phpif(substr($f, 0, 1) == 'i' && substr($f, - 4) == '.idx'),
        • 1021: $f = readdir($dir)) !==  // indexer.php
          • 1017: $dir = opendir($conf['indexdir']) // indexer.php stopped, already traced
File Manipulation

Userinput returned by function parse_url() reaches sensitive sink. (Blind exploitation)
  • 1039: chmod chmod($cachename . '.tmp'$conf['fperm']) // indexer.php
    • 971: $cachename = $conf['indexdir'] . '/' . $idx . 'lengths' // indexer.phpif($idx == 'i') else ,
      • 18: $conf = array() // plugin.php
      • 142: $idx = $index[$wid] : '' // indexer.phpif(!empty($words)),
        • 140: $index = $this->getindex ('i'$wlen) // indexer.phpif(!empty($words)),
          • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
            • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
            • 1172: $query = array() // common.php
          • 139: foreach(array_keys($words) as $wlen) // indexer.phpif(!empty($words)),
            • 132: $words = $this->getpagewords ($text) // indexer.php
              • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
                • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
                • 1172: $query = array() // common.php
              • 75: $text = utf8_strtolower (rawwiki ($id)) // fulltext.phpswitch(substr($token, 0, 3)), case 'P-:' : ,
                • 74: foreach(array_keys($pages) as $id) // fulltext.phpswitch(substr($token, 0, 3)), case 'P-:' : ,
                  • 72: $pages = end($stack) // fulltext.phpswitch(substr($token, 0, 3)), case 'P-:' : ,
                    • 64: $stack[] = (array)$lookup[$word] // fulltext.phpswitch(substr($token, 0, 3)), case 'W_:' : ,
                      • 48: $lookup = $Indexer->lookup ($q['words']) // fulltext.php
                        • : 
                        • 1191: $q = preg_split('/[\s\'"\\\\`()\]\[?:!\.{};,#+*<>\\/]+/'$q - 1PREG_SPLIT_NO_EMPTY) // common.php
                          • 1188: $q = urldecode(ltrim($url['path']'/')) // common.phpelseif(preg_match("#a9\.com#i", $url)),
                            • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
                          • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
                            • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
                            • 1172: $query = array() // common.php
    • requires:
      • 1038: if(isset($conf['fperm']))
File Manipulation

Userinput returned by function parse_url() reaches sensitive sink. (Blind exploitation)
  • 1200: unlink unlink ($idxtag) // indexer.php
    • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
      • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
      • 1172: $query = array() // common.php
    • requires:
      • 1189: if(!page_exists ($page))
File Manipulation

Userinput returned by function parse_url() reaches sensitive sink. (Blind exploitation)
  • 1213: unlink unlink ($idxtag) // indexer.php
    • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
      • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
      • 1172: $query = array() // common.php
    • requires:
      • 1204: if($indexenabled === false)
      • 1206: if(file_exists($idxtag))
Possible Flow Control

Userinput returned by function parse_url() reaches sensitive sink.
  • 1231: extract extract($data) // indexer.php
    • 1228: $data['body'] = $data['body'] . " " . rawwiki ($page) // indexer.php
      • 1226: $data['body'] = $body // indexer.php compact()
        • 1219: $body = '' // indexer.php
      • 592: $page = $page_idx[$pid] // indexer.phpif($key == 'title'),
        • 587: $page_idx = $this->getindex ('page''') // indexer.php
          • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
            • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
            • 1172: $query = array() // common.php
File Disclosure

Userinput returned by function parse_url() reaches sensitive sink. (Blind exploitation)
  • 1294: file file ($fn) // indexer.php
    • 913: $fn = $conf['indexdir'] . '/' . $idx . $suffix // indexer.php
      • 18: $conf = array() // plugin.php
      • 142: $idx = $index[$wid] : '' // indexer.phpif(!empty($words)),
        • 140: $index = $this->getindex ('i'$wlen) // indexer.phpif(!empty($words)),
          • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
            • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
            • 1172: $query = array() // common.php
          • 139: foreach(array_keys($words) as $wlen) // indexer.phpif(!empty($words)),
            • 132: $words = $this->getpagewords ($text) // indexer.php
              • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
                • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
                • 1172: $query = array() // common.php
              • 75: $text = utf8_strtolower (rawwiki ($id)) // fulltext.phpswitch(substr($token, 0, 3)), case 'P-:' : ,
                • 74: foreach(array_keys($pages) as $id) // fulltext.phpswitch(substr($token, 0, 3)), case 'P-:' : ,
                  • 72: $pages = end($stack) // fulltext.phpswitch(substr($token, 0, 3)), case 'P-:' : ,
                    • 64: $stack[] = (array)$lookup[$word] // fulltext.phpswitch(substr($token, 0, 3)), case 'W_:' : ,
                      • 48: $lookup = $Indexer->lookup ($q['words']) // fulltext.php
                        • : 
                        • 1191: $q = preg_split('/[\s\'"\\\\`()\]\[?:!\.{};,#+*<>\\/]+/'$q - 1PREG_SPLIT_NO_EMPTY) // common.php
                          • 1188: $q = urldecode(ltrim($url['path']'/')) // common.phpelseif(preg_match("#a9\.com#i", $url)),
                            • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
                          • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
                            • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
                            • 1172: $query = array() // common.php
      • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
        • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
        • 1172: $query = array() // common.php
File Manipulation

Userinput returned by function parse_url() reaches sensitive sink. (Blind exploitation)
  • 356: fwrite fwrite($fhdate('H:i:s ') . $_SERVER['REMOTE_ADDR'] . ': ' . $msg . "\n") // infoutils.php
    • 354: $fh = fopen($file'a') // infoutils.php
      • 353: $file = $conf['cachedir'] . '/debug.log' // infoutils.php
        • 18: $conf = array() // plugin.php
    • 351: $msg = "$header\n$msg" // infoutils.php
      • 1231: extract($data) // indexer.phpregister_globals implementation
        • 1228: $data['body'] = $data['body'] . " " . rawwiki ($page) // indexer.php
          • 1226: $data['body'] = $body // indexer.php compact()
            • 1219: $body = '' // indexer.php
          • 592: $page = $page_idx[$pid] // indexer.phpif($key == 'title'),
            • 587: $page_idx = $this->getindex ('page''') // indexer.php
              • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
                • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
                • 1172: $query = array() // common.php
      • 38: foreach($msgs as $msg) // infoutils.php
        • 37: $msgs = explode("\n%\n"$data) // infoutils.php
          • 33: $data = io_readfile ($cf) // infoutils.phpif($lm < time() - (60 * 60 * 24) || $lm < filemtime(DOKU_INC . DOKU_SCRIPT)) else ,
            • 23: $cf = $conf['cachedir'] . '/messages.txt' // infoutils.phpif(!$conf),
              • 18: $conf = array() // plugin.php
    • requires:
      • 355: if($fh)
File Disclosure

Userinput reaches sensitive sink.
  • 96: gzfile $ret = join(''gzfile($file)) // io.php
    • 92:  function io_readfile($file$clean = true)
    • requires:
      • 94: if(file_exists($file))
      • 95: if(substr($file - 3) == '.gz')

Userinput returned by function parse_url() reaches sensitive sink.
  • 457:  $meta = unserialize(io_readfile ($filefalse)) : array('current'=>array()'persistent'=>array()) // parserutils.php
    • 456: $file = metafn ($id'.meta') // parserutils.php
      • 569: $id .= '*' // pageutils.phpif((substr($id, - 1, 1) === ':')),
        • 423: $id = cleanid ($id) // pageutils.php
          • 420: $id = $ns . ':' . $id // pageutils.phpelseif($ns !== false && strpos($id, ':') === false),
            • 1650: $ns = utf8_encodefn (str_replace(':''/'$ns)) // media.php
              • 357: foreach($missing as $ns) // io.php
                • 356: $missing = array_reverse($missing) // io.php
                  • 350: $missing[] = $ns // io.php
                    • 348: $ns = implode(':'$ns_stack) // io.php
                      • 343: $ns_stack = explode(':'$id) // io.php
                        • 391: foreach($val_idx as $id) // indexer.php
                          • 389: $val_idx = explode(':'$this->getindexkey ($metaname . '_p'''$pid)) // indexer.php
                            • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
                              • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
                              • 1172: $query = array() // common.php
                            • 388: foreach($keyidx as $metaname) // indexer.php
                              • 387: $keyidx = $this->getindex ('metadata''') // indexer.php
                                • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
                                  • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
                                  • 1172: $query = array() // common.php
                            • 354: $pid = $this->getindexkey ('page'''$page) // indexer.php
                              • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
                                • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
                                • 1172: $query = array() // common.php
                              • 1050: foreach($pages as $page) // common.phpif(useheading('content')),
                                • 1049: $pages = ft_backlinks ($id) // common.phpif(useheading('content')),
                                  • 463: $id = idfilter ($id) // common.php
                                    • 393: $id = idfilter ($id) // common.php
                                      • 353: $id = idfilter ($id) // common.php

Userinput reaches sensitive sink when function p_xhtml_cached_geshi() is called.
  • 754:  $highlighted_code = io_readfile ($cachefalse) // parserutils.php
    • 748: $cache = getcachename ($language . $code".code") // parserutils.php
      • 743: $language = strtolower($language) // parserutils.php
      • 746: $code = preg_replace('/^\s*?\n|\s*?\n$/'''$code) // parserutils.php
    • requires:
      • 753: if($ctime && !$_REQUEST['purge'] && $ctime > filemtime(DOKU_INC . 'inc/geshi.php') && $ctime > filemtime(DOKU_INC . 'inc/geshi/' . $language . '.php') && $ctime > filemtime(reset($config_cascade['main']['default'])))
      • 741:  function p_xhtml_cached_geshi($code$language$wrapper = 'pre')

Userinput is passed through function parameters.
  • 438:  $text = io_readfile ($base . '/' . $file) // search.php
    • 435:  function search_regex(&$data$base$file$reg$words)
    • 435:  function search_regex(&$data$base$file$reg$words)

Userinput returned by function parse_url() reaches sensitive sink.
  • 601:  $item['hash'] = md5(io_readfile ($base . '/' . $filefalse)) // search.php
    • 1231: extract($data) // indexer.phpregister_globals implementation
      • 1228: $data['body'] = $data['body'] . " " . rawwiki ($page) // indexer.php
        • 1226: $data['body'] = $body // indexer.php compact()
          • 1219: $body = '' // indexer.php
        • 592: $page = $page_idx[$pid] // indexer.phpif($key == 'title'),
          • 587: $page_idx = $this->getindex ('page''') // indexer.php
            • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
              • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
              • 1172: $query = array() // common.php
    • 56: foreach($files as $file) // search.php
      • 38: $files[] = $dir . '/' . $file // search.phpif(!$dh),
        • 405: foreach($pathA AS $key=>$dir) // pageutils.phpif($id == '.'),
          • 403: $pathA = explode(':'$id) // pageutils.phpif($id == '.'),
            • 399: $id = $ns . ':' . $id // pageutils.phpif($id == '.'),
              • 1650: $ns = utf8_encodefn (str_replace(':''/'$ns)) // media.php
                • 357: foreach($missing as $ns) // io.php
                  • 356: $missing = array_reverse($missing) // io.php
                    • 350: $missing[] = $ns // io.php
                      • 348: $ns = implode(':'$ns_stack) // io.php
                        • 343: $ns_stack = explode(':'$id) // io.php
                          • 391: foreach($val_idx as $id) // indexer.php
                            • 389: $val_idx = explode(':'$this->getindexkey ($metaname . '_p'''$pid)) // indexer.php
                              • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
                                • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
                                • 1172: $query = array() // common.php
                              • 388: foreach($keyidx as $metaname) // indexer.php
                                • 387: $keyidx = $this->getindex ('metadata''') // indexer.php
                                  • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
                                    • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
    • requires:
      • 600: if($type == 'f')
      • 601: if($opts['hash'])

Userinput reaches sensitive sink when function auth_cookiesalt() is called.
  • 310:  $salt = io_readfile ($file) // auth.php
    • 309: $file = $conf['metadir'] . '/_htcookiesalt' // auth.php
      • 308:  global $conf // auth.php
        • 63: $conf['mailfrom'] = str_replace(array_keys($replace)array_values($replace)$conf['mailfrom']) // mail.php
          • 60: $replace['@NAME@'] = '' // mail.phpif(!empty($USERINFO)) else ,
          • 58: $replace['@NAME@'] = $USERINFO['name'] // mail.phpif(!empty($USERINFO)),
            • : 
          • 54: $replace['@USER@'] = 'noreply' // mail.phpif(!empty($_SERVER)) else ,
          • 52: $replace['@USER@'] = $_SERVER['REMOTE_USER'] // mail.phpif(!empty($_SERVER)),
          • 48: $replace['@MAIL@'] = 'noreply@' . $host // mail.phpif(!empty($USERINFO)) else ,
            • 47: $host = 'example.com' // mail.phpif(!empty($USERINFO)) else ,
            • 46: $host = parse_url (DOKU_URLPHP_URL_HOST) // mail.phpif(!empty($USERINFO)) else ,
              • 101: define('DOKU_URL'getbaseurl(true)) // define()
              • 1231: extract($data) // indexer.phpregister_globals implementation
                • 1228: $data['body'] = $data['body'] . " " . rawwiki ($page) // indexer.php
                  • 1226: $data['body'] = $body // indexer.php compact()
                    • 1219: $body = '' // indexer.php
                  • 592: $page = $page_idx[$pid] // indexer.phpif($key == 'title'),
                    • 587: $page_idx = $this->getindex ('page''') // indexer.php
                      • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
                        • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
                        • 1172: $query = array() // common.php
          • 60: $replace['@NAME@'] = '' // mail.phpif(!empty($USERINFO)) else ,
          • 18: $conf = array() // plugin.php
    • requires:
      • 307:  function auth_cookiesalt($addsession = false)

Call triggers vulnerability in function auth_cookiesalt()
  • 821:  $pass = pma_blowfish_encrypt ($changes['pass']auth_cookiesalt (!$sticky)) // auth.php
    • 820: list($user$sticky$pass) = auth_getcookie () // auth.php list()
    • requires:
      • 817: if($result = $auth->triggerusermod ('modify'array($_SERVER['REMOTE_USER']$changes)))
      • 819: if($changes['pass'])

Userinput is passed through function parameters.
  • 862:  $user = io_readfile ($tfile) // auth.php
    • 857: $tfile = $conf['cachedir'] . '/' . $token[0] . '/' . $token . '.pwauth' // auth.php
      • 18: $conf = array() // plugin.php
      • 852: $token = preg_replace('/[^a-f0-9]+/'''$_REQUEST['pwauth']) // auth.php
        • 177: $_REQUEST = array_merge($_GET$_POST)
      • 852: $token = preg_replace('/[^a-f0-9]+/'''$_REQUEST['pwauth']) // auth.php
        • 177: $_REQUEST = array_merge($_GET$_POST)
    • requires:
      • 854: if($token)

Call triggers vulnerability in function auth_cookiesalt()
  • 902:  $token = md5(auth_cookiesalt () . $user) // auth.php
    • requires:
      • 883: if($token) else 
File Manipulation

Userinput returned by function parse_url() reaches sensitive sink. (Blind exploitation)
  • 186: gzwrite gzwrite($fh$content) // io.php
    • 354: $fh = fopen($file'a') // infoutils.php
      • 353: $file = $conf['cachedir'] . '/debug.log' // infoutils.php
        • 18: $conf = array() // plugin.php
    • 1231: extract($data) // indexer.phpregister_globals implementation
      • 1228: $data['body'] = $data['body'] . " " . rawwiki ($page) // indexer.php
        • 1226: $data['body'] = $body // indexer.php compact()
          • 1219: $body = '' // indexer.php
        • 592: $page = $page_idx[$pid] // indexer.phpif($key == 'title'),
          • 587: $page_idx = $this->getindex ('page''') // indexer.php
            • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
              • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
              • 1172: $query = array() // common.php
    • requires:
      • 179: if(substr($file - 3) == '.gz')
File Manipulation

Userinput returned by function parse_url() reaches sensitive sink. (Blind exploitation)
  • 195: bzwrite bzwrite($fh$content) // io.php
    • 1231: extract($data) // indexer.phpregister_globals implementation
      • 1228: $data['body'] = $data['body'] . " " . rawwiki ($page) // indexer.php
        • 1226: $data['body'] = $body // indexer.php compact()
          • 1219: $body = '' // indexer.php
        • 592: $page = $page_idx[$pid] // indexer.phpif($key == 'title'),
          • 587: $page_idx = $this->getindex ('page''') // indexer.php
            • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
              • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
              • 1172: $query = array() // common.php
    • requires:
      • 188: if(substr($file - 4) == '.bz2')
File Manipulation

Userinput returned by function parse_url() reaches sensitive sink. (Blind exploitation)
  • 204: fwrite fwrite($fh$content) // io.php
    • 198: $fh = fopen($file$mode) // io.php
      • 353: $file = $conf['cachedir'] . '/debug.log' // infoutils.php
        • 18: $conf = array() // plugin.php
      • 1231: extract($data) // indexer.phpregister_globals implementation
        • 1228: $data['body'] = $data['body'] . " " . rawwiki ($page) // indexer.php
          • 1226: $data['body'] = $body // indexer.php compact()
            • 1219: $body = '' // indexer.php
          • 592: $page = $page_idx[$pid] // indexer.phpif($key == 'title'),
            • 587: $page_idx = $this->getindex ('page''') // indexer.php
              • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
                • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
                • 1172: $query = array() // common.php
    • 1231: extract($data) // indexer.phpregister_globals implementation
      • 1228: $data['body'] = $data['body'] . " " . rawwiki ($page) // indexer.php
        • 1226: $data['body'] = $body // indexer.php compact()
          • 1219: $body = '' // indexer.php
        • 592: $page = $page_idx[$pid] // indexer.phpif($key == 'title'),
          • 587: $page_idx = $this->getindex ('page''') // indexer.php
            • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
              • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
              • 1172: $query = array() // common.php
    • requires:
      • 197: if(substr($file - 4) == '.bz2') else 
File Manipulation

Userinput returned by function parse_url() reaches sensitive sink. (Blind exploitation)
  • 257: gzwrite gzwrite($fh$content) // io.php
    • 251: $fh = gzopen($file'wb9') // io.php
      • 353: $file = $conf['cachedir'] . '/debug.log' // infoutils.php
        • 18: $conf = array() // plugin.php
    • 249: $content = join(''$lines) // io.php
      • 239: $lines = preg_grep($badline$linesPREG_GREP_INVERT) // io.phpif($regex),
        • 1231: extract($data) // indexer.phpregister_globals implementation
          • 1228: $data['body'] = $data['body'] . " " . rawwiki ($page) // indexer.php
            • 1226: $data['body'] = $body // indexer.php compact()
              • 1219: $body = '' // indexer.php
            • 592: $page = $page_idx[$pid] // indexer.phpif($key == 'title'),
              • 587: $page_idx = $this->getindex ('page''') // indexer.php
                • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
                  • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
                  • 1172: $query = array() // common.php
        • 234: $lines = file ($file) // io.phpif(substr($file, - 3) == '.gz') else ,
          • 353: $file = $conf['cachedir'] . '/debug.log' // infoutils.php
            • 18: $conf = array() // plugin.php
        • 1231: extract($data) // indexer.phpregister_globals implementation
          • 1228: $data['body'] = $data['body'] . " " . rawwiki ($page) // indexer.php
            • 1226: $data['body'] = $body // indexer.php compact()
              • 1219: $body = '' // indexer.php
            • 592: $page = $page_idx[$pid] // indexer.phpif($key == 'title'),
              • 587: $page_idx = $this->getindex ('page''') // indexer.php
                • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
                  • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
                  • 1172: $query = array() // common.php
    • requires:
      • 248: if(count($lines))
      • 250: if(substr($file - 3) == '.gz')
File Manipulation

Userinput returned by function parse_url() reaches sensitive sink. (Blind exploitation)
  • 266: fwrite fwrite($fh$content) // io.php
    • 260: $fh = fopen($file'wb') // io.php
      • 353: $file = $conf['cachedir'] . '/debug.log' // infoutils.php
        • 18: $conf = array() // plugin.php
    • 249: $content = join(''$lines) // io.php
      • 239: $lines = preg_grep($badline$linesPREG_GREP_INVERT) // io.phpif($regex),
        • 1231: extract($data) // indexer.phpregister_globals implementation
          • 1228: $data['body'] = $data['body'] . " " . rawwiki ($page) // indexer.php
            • 1226: $data['body'] = $body // indexer.php compact()
              • 1219: $body = '' // indexer.php
            • 592: $page = $page_idx[$pid] // indexer.phpif($key == 'title'),
              • 587: $page_idx = $this->getindex ('page''') // indexer.php
                • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
                  • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
                  • 1172: $query = array() // common.php
        • 234: $lines = file ($file) // io.phpif(substr($file, - 3) == '.gz') else ,
          • 353: $file = $conf['cachedir'] . '/debug.log' // infoutils.php
            • 18: $conf = array() // plugin.php
        • 1231: extract($data) // indexer.phpregister_globals implementation
          • 1228: $data['body'] = $data['body'] . " " . rawwiki ($page) // indexer.php
            • 1226: $data['body'] = $body // indexer.php compact()
              • 1219: $body = '' // indexer.php
            • 592: $page = $page_idx[$pid] // indexer.phpif($key == 'title'),
              • 587: $page_idx = $this->getindex ('page''') // indexer.php
                • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
                  • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
                  • 1172: $query = array() // common.php
    • requires:
      • 248: if(count($lines))
      • 259: if(substr($file - 3) == '.gz') else 
File Manipulation

Userinput returned by function parse_url() reaches sensitive sink.
  • 300: mkdir $locked = mkdir($lockDir$conf['dmode']) // io.php
    • 1231: extract($data) // indexer.phpregister_globals implementation
      • 1228: $data['body'] = $data['body'] . " " . rawwiki ($page) // indexer.php
        • 1226: $data['body'] = $body // indexer.php compact()
          • 1219: $body = '' // indexer.php
        • 592: $page = $page_idx[$pid] // indexer.phpif($key == 'title'),
          • 587: $page_idx = $this->getindex ('page''') // indexer.php
            • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
              • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
              • 1172: $query = array() // common.php
File Manipulation

Userinput returned by function parse_url() reaches sensitive sink. (Blind exploitation)
  • 302: chmod chmod($lockDir$conf['dperm']) // io.php
    • 1231: extract($data) // indexer.phpregister_globals implementation
      • 1228: $data['body'] = $data['body'] . " " . rawwiki ($page) // indexer.php
        • 1226: $data['body'] = $body // indexer.php compact()
          • 1219: $body = '' // indexer.php
        • 592: $page = $page_idx[$pid] // indexer.phpif($key == 'title'),
          • 587: $page_idx = $this->getindex ('page''') // indexer.php
            • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
              • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
              • 1172: $query = array() // common.php
    • requires:
      • 301: if($locked)
      • 302: if(!empty($conf['dperm']))
File Manipulation

Userinput returned by function parse_url() reaches sensitive sink. (Blind exploitation)
  • 320: rmdir rmdir($lockDir) // io.php
    • 1231: extract($data) // indexer.phpregister_globals implementation
      • 1228: $data['body'] = $data['body'] . " " . rawwiki ($page) // indexer.php
        • 1226: $data['body'] = $body // indexer.php compact()
          • 1219: $body = '' // indexer.php
        • 592: $page = $page_idx[$pid] // indexer.phpif($key == 'title'),
          • 587: $page_idx = $this->getindex ('page''') // indexer.php
            • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
              • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
              • 1172: $query = array() // common.php
Code Evaluation

Userinput returned by function parse_url() reaches sensitive sink.
  • 345: call_user_func $file = call_user_func($types[$ns_type]$ns)) // io.php
    • 1231: extract($data) // indexer.phpregister_globals implementation
      • 1228: $data['body'] = $data['body'] . " " . rawwiki ($page) // indexer.php
        • 1226: $data['body'] = $body // indexer.php compact()
          • 1219: $body = '' // indexer.php
        • 592: $page = $page_idx[$pid] // indexer.phpif($key == 'title'),
          • 587: $page_idx = $this->getindex ('page''') // indexer.php
            • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
              • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
              • 1172: $query = array() // common.php
Code Evaluation

Userinput returned by function parse_url() reaches sensitive sink.
  • 351: call_user_func $tmp = dirname(call_user_func($types[$ns_type]$ns)) // io.php
    • 1231: extract($data) // indexer.phpregister_globals implementation
      • 1228: $data['body'] = $data['body'] . " " . rawwiki ($page) // indexer.php
        • 1226: $data['body'] = $body // indexer.php compact()
          • 1219: $body = '' // indexer.php
        • 592: $page = $page_idx[$pid] // indexer.phpif($key == 'title'),
          • 587: $page_idx = $this->getindex ('page''') // indexer.php
            • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
              • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
              • 1172: $query = array() // common.php
File Manipulation

Userinput returned by function parse_url() reaches sensitive sink. (Blind exploitation)
  • 504: fwrite fwrite($fp$data) // io.php
    • 502: $fp = fopen($file"w") // io.php
      • 498: $file = $file . $name // io.phpif($useAttachment),
        • 345: $file = call_user_func($types[$ns_type]$ns)) // io.php
          • 1231: extract($data) // indexer.phpregister_globals implementation
            • 1228: $data['body'] = $data['body'] . " " . rawwiki ($page) // indexer.php
              • 1226: $data['body'] = $body // indexer.php compact()
                • 1219: $body = '' // indexer.php
              • 592: $page = $page_idx[$pid] // indexer.phpif($key == 'title'),
                • 587: $page_idx = $this->getindex ('page''') // indexer.php
                  • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
                    • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
                    • 1172: $query = array() // common.php
          • 344: $ns = $id // io.php
            • 391: foreach($val_idx as $id) // indexer.php
              • 389: $val_idx = explode(':'$this->getindexkey ($metaname . '_p'''$pid)) // indexer.php
                • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
                  • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
                  • 1172: $query = array() // common.php
                • 388: foreach($keyidx as $metaname) // indexer.php
                  • 387: $keyidx = $this->getindex ('metadata''') // indexer.php
                    • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
                      • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
                      • 1172: $query = array() // common.php
                • 354: $pid = $this->getindexkey ('page'''$page) // indexer.php
                  • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
                    • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
                    • 1172: $query = array() // common.php
                  • 1050: foreach($pages as $page) // common.phpif(useheading('content')),
                    • 1049: $pages = ft_backlinks ($id) // common.phpif(useheading('content')),
File Manipulation

Userinput returned by function parse_url() reaches sensitive sink. (Blind exploitation)
  • 506: chmod chmod($file$conf['fperm']) // io.php
    • 498: $file = $file . $name // io.phpif($useAttachment),
      • 345: $file = call_user_func($types[$ns_type]$ns)) // io.php
        • 1231: extract($data) // indexer.phpregister_globals implementation
          • 1228: $data['body'] = $data['body'] . " " . rawwiki ($page) // indexer.php
            • 1226: $data['body'] = $body // indexer.php compact()
              • 1219: $body = '' // indexer.php
            • 592: $page = $page_idx[$pid] // indexer.phpif($key == 'title'),
              • 587: $page_idx = $this->getindex ('page''') // indexer.php
                • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
                  • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
                  • 1172: $query = array() // common.php
        • 344: $ns = $id // io.php
          • 391: foreach($val_idx as $id) // indexer.php
            • 389: $val_idx = explode(':'$this->getindexkey ($metaname . '_p'''$pid)) // indexer.php
              • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
                • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
                • 1172: $query = array() // common.php
              • 388: foreach($keyidx as $metaname) // indexer.php
                • 387: $keyidx = $this->getindex ('metadata''') // indexer.php
                  • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
                    • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
                    • 1172: $query = array() // common.php
              • 354: $pid = $this->getindexkey ('page'''$page) // indexer.php
                • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
                  • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
                  • 1172: $query = array() // common.php
                • 1050: foreach($pages as $page) // common.phpif(useheading('content')),
                  • 1049: $pages = ft_backlinks ($id) // common.phpif(useheading('content')),
                    • 463: $id = idfilter ($id) // common.php
    • requires:
      • 506: if(!$fileexists and $conf['fperm'])
File Manipulation

Userinput returned by function parse_url() reaches sensitive sink. (Blind exploitation)
  • 522: unlink unlink ($from) // io.php
    • 1231: extract($data) // indexer.phpregister_globals implementation
      • 1228: $data['body'] = $data['body'] . " " . rawwiki ($page) // indexer.php
        • 1226: $data['body'] = $body // indexer.php compact()
          • 1219: $body = '' // indexer.php
        • 592: $page = $page_idx[$pid] // indexer.phpif($key == 'title'),
          • 587: $page_idx = $this->getindex ('page''') // indexer.php
            • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
              • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
              • 1172: $query = array() // common.php
    • requires:
      • 519: if(!rename($from$to))
      • 520: if(copy($from$to))
File Manipulation

Userinput returned by function parse_url() reaches sensitive sink. (Blind exploitation)
  • 563: fwrite fwrite($pipes[0]$input) // io.php
    • 1231: extract($data) // indexer.phpregister_globals implementation
      • 1228: $data['body'] = $data['body'] . " " . rawwiki ($page) // indexer.php
        • 1226: $data['body'] = $body // indexer.php compact()
          • 1219: $body = '' // indexer.php
        • 592: $page = $page_idx[$pid] // indexer.phpif($key == 'title'),
          • 587: $page_idx = $this->getindex ('page''') // indexer.php
            • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
              • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
              • 1172: $query = array() // common.php
    • 1231: extract($data) // indexer.phpregister_globals implementation
      • 1228: $data['body'] = $data['body'] . " " . rawwiki ($page) // indexer.php
        • 1226: $data['body'] = $body // indexer.php compact()
          • 1219: $body = '' // indexer.php
        • 592: $page = $page_idx[$pid] // indexer.phpif($key == 'title'),
          • 587: $page_idx = $this->getindex ('page''') // indexer.php
            • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
              • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
              • 1172: $query = array() // common.php
Command Execution

Userinput returned by function parse_url() reaches sensitive sink.
  • 148: mail mail($to$subject$body$header) // mail.php
    • 135: $to = mail_encode_address ($to''$usenames) // mail.php
      • 1109: $to = $conf['registernotify'] // common.phpelseif($who == 'register'),
        • 60: $conf = array()
      • 1104: $to = '' // common.phpelseif($who == 'subscribers'), if(empty($bcc)),
      • : 
      • : 
      • 133: $usenames = false : true // mail.php
        • 1231: extract($data) // indexer.phpregister_globals implementation
          • 1228: $data['body'] = $data['body'] . " " . rawwiki ($page) // indexer.php
            • 1226: $data['body'] = $body // indexer.php compact()
              • 1219: $body = '' // indexer.php
            • 592: $page = $page_idx[$pid] // indexer.phpif($key == 'title'),
              • 587: $page_idx = $this->getindex ('page''') // indexer.php
                • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
                  • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
                  • 1172: $query = array() // common.php
        • 1231: extract($data) // indexer.phpregister_globals implementation
          • 1228: $data['body'] = $data['body'] . " " . rawwiki ($page) // indexer.php
            • 1226: $data['body'] = $body // indexer.php compact()
              • 1219: $body = '' // indexer.php
            • 592: $page = $page_idx[$pid] // indexer.phpif($key == 'title'),
              • 587: $page_idx = $this->getindex ('page''') // indexer.php
                • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
                  • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
                  • 1172: $query = array() // common.php
    • 143: $header = trim($header) // mail.php
      • 142: $header .= $headers // mail.php
        • 141: $header .= 'Content-Transfer-Encoding: quoted-printable' . MAILHEADER_EOL // mail.php
          • 140: $header .= 'Content-Type: text/plain; charset=UTF-8' . MAILHEADER_EOL // mail.php
    • requires:
      • 147: if($params == null)
Command Execution

Userinput returned by function parse_url() reaches sensitive sink.
  • 150: mail mail($to$subject$body$header$params) // mail.php
    • 135: $to = mail_encode_address ($to''$usenames) // mail.php
      • 1109: $to = $conf['registernotify'] // common.phpelseif($who == 'register'),
        • 60: $conf = array()
      • 1104: $to = '' // common.phpelseif($who == 'subscribers'), if(empty($bcc)),
      • : 
      • : 
      • 133: $usenames = false : true // mail.php
        • 1231: extract($data) // indexer.phpregister_globals implementation
          • 1228: $data['body'] = $data['body'] . " " . rawwiki ($page) // indexer.php
            • 1226: $data['body'] = $body // indexer.php compact()
              • 1219: $body = '' // indexer.php
            • 592: $page = $page_idx[$pid] // indexer.phpif($key == 'title'),
              • 587: $page_idx = $this->getindex ('page''') // indexer.php
                • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
                  • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
                  • 1172: $query = array() // common.php
        • 1231: extract($data) // indexer.phpregister_globals implementation
          • 1228: $data['body'] = $data['body'] . " " . rawwiki ($page) // indexer.php
            • 1226: $data['body'] = $body // indexer.php compact()
              • 1219: $body = '' // indexer.php
            • 592: $page = $page_idx[$pid] // indexer.phpif($key == 'title'),
              • 587: $page_idx = $this->getindex ('page''') // indexer.php
                • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
                  • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
                  • 1172: $query = array() // common.php
    • 143: $header = trim($header) // mail.php
      • 142: $header .= $headers // mail.php
        • 141: $header .= 'Content-Transfer-Encoding: quoted-printable' . MAILHEADER_EOL // mail.php
          • 140: $header .= 'Content-Type: text/plain; charset=UTF-8' . MAILHEADER_EOL // mail.php
    • requires:
      • 149: if($params == null) else 
File Manipulation

Userinput returned by function io_mktmpdir() reaches sensitive sink. (Blind exploitation)
  • 252: unlink unlink ($path) // media.php
    • 238: $path = $tmp . '/' . md5($id) // media.php
      • 237: $tmp = io_mktmpdir ())) // media.php
      • 230: $id = $_GET['qqfile'] // media.php
Code Evaluation

Userinput is used as dynamic function name. Arbitrary functions may be called.
  • 410: $move $move($fn_tmp$fn)) // media.php
    • 1231: extract($data) // indexer.phpregister_globals implementation
      • 1228: $data['body'] = $data['body'] . " " . rawwiki ($page) // indexer.php
        • 1226: $data['body'] = $body // indexer.php compact()
          • 1219: $body = '' // indexer.php
        • 592: $page = $page_idx[$pid] // indexer.phpif($key == 'title'),
          • 587: $page_idx = $this->getindex ('page''') // indexer.php
            • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
              • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
              • 1172: $query = array() // common.php
File Manipulation

Userinput returned by function parse_url() reaches sensitive sink. (Blind exploitation)
  • 461: copy copy($oldf$newf)) // media.php
    • 1231: extract($data) // indexer.phpregister_globals implementation
      • 1228: $data['body'] = $data['body'] . " " . rawwiki ($page) // indexer.php
        • 1226: $data['body'] = $body // indexer.php compact()
          • 1219: $body = '' // indexer.php
        • 592: $page = $page_idx[$pid] // indexer.phpif($key == 'title'),
          • 587: $page_idx = $this->getindex ('page''') // indexer.php
            • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
              • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
              • 1172: $query = array() // common.php
Command Execution

Userinput returned by function parse_url() reaches sensitive sink.
  • 1881: exec exec($cmd$out$retval) // media.php
    • 1879: $cmd .= " $from $to" // media.php
      • 1877: $cmd .= ' -quality ' . $conf['jpg_quality'] // media.phpif($ext == 'jpg' || $ext == 'jpeg'),
        • 1875: $cmd .= ' -resize ' . $to_w . 'x' . $to_h . '!' // media.php
          • 1874: $cmd = $conf['im_convert'] // media.php
            • 18: $conf = array() // plugin.php
          • 1231: extract($data) // indexer.phpregister_globals implementation
            • 1228: $data['body'] = $data['body'] . " " . rawwiki ($page) // indexer.php
              • 1226: $data['body'] = $body // indexer.php compact()
                • 1219: $body = '' // indexer.php
              • 592: $page = $page_idx[$pid] // indexer.phpif($key == 'title'),
                • 587: $page_idx = $this->getindex ('page''') // indexer.php
                  • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
                    • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
                    • 1172: $query = array() // common.php
          • 1231: extract($data) // indexer.phpregister_globals implementation
            • 1228: $data['body'] = $data['body'] . " " . rawwiki ($page) // indexer.php
              • 1226: $data['body'] = $body // indexer.php compact()
                • 1219: $body = '' // indexer.php
              • 592: $page = $page_idx[$pid] // indexer.phpif($key == 'title'),
                • 587: $page_idx = $this->getindex ('page''') // indexer.php
                  • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
                    • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
                    • 1172: $query = array() // common.php
        • 18: $conf = array() // plugin.php
      • 1231: extract($data) // indexer.phpregister_globals implementation
        • 1228: $data['body'] = $data['body'] . " " . rawwiki ($page) // indexer.php
          • 1226: $data['body'] = $body // indexer.php compact()
            • 1219: $body = '' // indexer.php
          • 592: $page = $page_idx[$pid] // indexer.phpif($key == 'title'),
Command Execution

Userinput returned by function parse_url() reaches sensitive sink.
  • 1905: exec exec($cmd$out$retval) // media.php
    • 1903: $cmd .= " $from $to" // media.php
      • 1901: $cmd .= ' -quality ' . $conf['jpg_quality'] // media.phpif($ext == 'jpg' || $ext == 'jpeg'),
        • 1899: $cmd .= ' -crop ' . $to_w . 'x' . $to_h . '+' . $ofs_x . '+' . $ofs_y // media.php
          • 1898: $cmd = $conf['im_convert'] // media.php
            • 18: $conf = array() // plugin.php
          • 1231: extract($data) // indexer.phpregister_globals implementation
            • 1228: $data['body'] = $data['body'] . " " . rawwiki ($page) // indexer.php
              • 1226: $data['body'] = $body // indexer.php compact()
                • 1219: $body = '' // indexer.php
              • 592: $page = $page_idx[$pid] // indexer.phpif($key == 'title'),
                • 587: $page_idx = $this->getindex ('page''') // indexer.php
                  • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
                    • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
                    • 1172: $query = array() // common.php
          • 1231: extract($data) // indexer.phpregister_globals implementation
            • 1228: $data['body'] = $data['body'] . " " . rawwiki ($page) // indexer.php
              • 1226: $data['body'] = $body // indexer.php compact()
                • 1219: $body = '' // indexer.php
              • 592: $page = $page_idx[$pid] // indexer.phpif($key == 'title'),
                • 587: $page_idx = $this->getindex ('page''') // indexer.php
                  • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
                    • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
                    • 1172: $query = array() // common.php
          • 1231: extract($data) // indexer.phpregister_globals implementation
            • 1228: $data['body'] = $data['body'] . " " . rawwiki ($page) // indexer.php
              • 1226: $data['body'] = $body // indexer.php compact()
                • 1219: $body = '' // indexer.php
              • 592: $page = $page_idx[$pid] // indexer.phpif($key == 'title'),
                • 587: $page_idx = $this->getindex ('page''') // indexer.php
File Disclosure

Userinput returned by function parse_url() reaches sensitive sink.
  • 1932: imagecreatefrompng $image = imagecreatefrompng($from) // media.php
    • 1231: extract($data) // indexer.phpregister_globals implementation
      • 1228: $data['body'] = $data['body'] . " " . rawwiki ($page) // indexer.php
        • 1226: $data['body'] = $body // indexer.php compact()
          • 1219: $body = '' // indexer.php
        • 592: $page = $page_idx[$pid] // indexer.phpif($key == 'title'),
          • 587: $page_idx = $this->getindex ('page''') // indexer.php
            • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
              • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
              • 1172: $query = array() // common.php
    • requires:
      • 1930: elseif($ext == 'png')
File Disclosure

Userinput returned by function parse_url() reaches sensitive sink.
  • 1936: imagecreatefromgif $image = imagecreatefromgif($from) // media.php
    • 1231: extract($data) // indexer.phpregister_globals implementation
      • 1228: $data['body'] = $data['body'] . " " . rawwiki ($page) // indexer.php
        • 1226: $data['body'] = $body // indexer.php compact()
          • 1219: $body = '' // indexer.php
        • 592: $page = $page_idx[$pid] // indexer.phpif($key == 'title'),
          • 587: $page_idx = $this->getindex ('page''') // indexer.php
            • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
              • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
              • 1172: $query = array() // common.php
    • requires:
      • 1934: elseif($ext == 'gif')
Unserialize

Userinput returned by function parse_url() reaches sensitive sink.
  • 457: unserialize $meta = unserialize(io_readfile ($filefalse)) : array('current'=>array()'persistent'=>array()) // parserutils.php
    • 456: $file = metafn ($id'.meta') // parserutils.php
      • 569: $id .= '*' // pageutils.phpif((substr($id, - 1, 1) === ':')),
        • 423: $id = cleanid ($id) // pageutils.php
          • 420: $id = $ns . ':' . $id // pageutils.phpelseif($ns !== false && strpos($id, ':') === false),
            • 1650: $ns = utf8_encodefn (str_replace(':''/'$ns)) // media.php
              • 357: foreach($missing as $ns) // io.php
                • 356: $missing = array_reverse($missing) // io.php
                  • 350: $missing[] = $ns // io.php
                    • 348: $ns = implode(':'$ns_stack) // io.php
                      • 343: $ns_stack = explode(':'$id) // io.php
                        • 391: foreach($val_idx as $id) // indexer.php
                          • 389: $val_idx = explode(':'$this->getindexkey ($metaname . '_p'''$pid)) // indexer.php
                            • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
                              • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
                              • 1172: $query = array() // common.php
                            • 388: foreach($keyidx as $metaname) // indexer.php
                              • 387: $keyidx = $this->getindex ('metadata''') // indexer.php
                                • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
                                  • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
                                  • 1172: $query = array() // common.php
                            • 354: $pid = $this->getindexkey ('page'''$page) // indexer.php
                              • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
                                • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
                                • 1172: $query = array() // common.php
                              • 1050: foreach($pages as $page) // common.phpif(useheading('content')),
                                • 1049: $pages = ft_backlinks ($id) // common.phpif(useheading('content')),
                                  • 463: $id = idfilter ($id) // common.php
                                    • 393: $id = idfilter ($id) // common.php
                                      • 353: $id = idfilter ($id) // common.php
Code Evaluation

Userinput returned by function parse_url() reaches sensitive sink.
  • 664: call_user_func_array call_user_func_array(array(&$Renderer$instruction[0])$instruction[1]) // parserutils.php
    • 651: $Renderer = &p_get_renderer($mode) // parserutils.php
      • 87: foreach(array_keys($this->modes) as $mode) // parser.php
        • 1231: extract($data) // indexer.phpregister_globals implementation
          • 1228: $data['body'] = $data['body'] . " " . rawwiki ($page) // indexer.php
            • 1226: $data['body'] = $body // indexer.php compact()
              • 1219: $body = '' // indexer.php
            • 592: $page = $page_idx[$pid] // indexer.phpif($key == 'title'),
              • 587: $page_idx = $this->getindex ('page''') // indexer.php
                • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
                  • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
                  • 1172: $query = array() // common.php
        • 1231: extract($data) // indexer.phpregister_globals implementation
          • 1228: $data['body'] = $data['body'] . " " . rawwiki ($page) // indexer.php
            • 1226: $data['body'] = $body // indexer.php compact()
              • 1219: $body = '' // indexer.php
            • 592: $page = $page_idx[$pid] // indexer.phpif($key == 'title'),
              • 587: $page_idx = $this->getindex ('page''') // indexer.php
                • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
                  • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
                  • 1172: $query = array() // common.php
    • 662: foreach($instructions as $instruction) // parserutils.php
      • 511: $instructions = p_cached_instructions (wikifn ($id)false$id) // parserutils.php
        • 569: $id .= '*' // pageutils.phpif((substr($id, - 1, 1) === ':')),
          • 423: $id = cleanid ($id) // pageutils.php
            • 420: $id = $ns . ':' . $id // pageutils.phpelseif($ns !== false && strpos($id, ':') === false),
              • 1650: $ns = utf8_encodefn (str_replace(':''/'$ns)) // media.php
                • 357: foreach($missing as $ns) // io.php
                  • 356: $missing = array_reverse($missing) // io.php
                    • 350: $missing[] = $ns // io.php
File Inclusion

Userinput returned by function parse_url() reaches sensitive sink.
  • 689: require_once require_once $file // parserutils.php
    • 687: $file = DOKU_INC . "inc/parser/$rname.php" // parserutils.php
      • 20: define('DOKU_INC'fullpath(dirname(__FILE__) . '/../') . '/') // define()
      • 1231: extract($data) // indexer.phpregister_globals implementation
        • 1228: $data['body'] = $data['body'] . " " . rawwiki ($page) // indexer.php
          • 1226: $data['body'] = $body // indexer.php compact()
            • 1219: $body = '' // indexer.php
          • 592: $page = $page_idx[$pid] // indexer.phpif($key == 'title'),
            • 587: $page_idx = $this->getindex ('page''') // indexer.php
              • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
                • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
                • 1172: $query = array() // common.php
    • requires:
      • 688: if(file_exists($file))
Code Evaluation

Userinput is used as dynamic function name. Arbitrary functions may be called.
  • 696: $rclass $rclass() // parserutils.php
    • 1231: extract($data) // indexer.phpregister_globals implementation
      • 1228: $data['body'] = $data['body'] . " " . rawwiki ($page) // indexer.php
        • 1226: $data['body'] = $body // indexer.php compact()
          • 1219: $body = '' // indexer.php
        • 592: $page = $page_idx[$pid] // indexer.phpif($key == 'title'),
          • 587: $page_idx = $this->getindex ('page''') // indexer.php
            • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
              • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
              • 1172: $query = array() // common.php
    • requires:
      • 688: if(file_exists($file))
Code Evaluation

Userinput returned by function parse_url() reaches sensitive sink.
  • 51: call_user_func_array call_user_func_array($funcarray(&$data$base$dir'd'$lvl$opts))) // search.php
    • 1231: extract($data) // indexer.phpregister_globals implementation
      • 1228: $data['body'] = $data['body'] . " " . rawwiki ($page) // indexer.php
        • 1226: $data['body'] = $body // indexer.php compact()
          • 1219: $body = '' // indexer.php
        • 592: $page = $page_idx[$pid] // indexer.phpif($key == 'title'),
          • 587: $page_idx = $this->getindex ('page''') // indexer.php
            • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
              • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
              • 1172: $query = array() // common.php
Code Evaluation

Userinput returned by function parse_url() reaches sensitive sink.
  • 57: call_user_func_array call_user_func_array($funcarray(&$data$base$file'f'$lvl$opts)) // search.php
    • 1231: extract($data) // indexer.phpregister_globals implementation
      • 1228: $data['body'] = $data['body'] . " " . rawwiki ($page) // indexer.php
        • 1226: $data['body'] = $body // indexer.php compact()
          • 1219: $body = '' // indexer.php
        • 592: $page = $page_idx[$pid] // indexer.phpif($key == 'title'),
          • 587: $page_idx = $this->getindex ('page''') // indexer.php
            • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
              • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
              • 1172: $query = array() // common.php
Code Evaluation

Userinput returned by function parse_url() reaches sensitive sink.
  • 455: preg_replace $snippet = preg_replace('#' . $mark . '#si''<strong class="search_hit">\\1</strong>'$snippet) // search.php
    • 454: $mark = '(' . join('|'$words) . ')' // search.php
      • 781: $words = $this->getindex ('w'$length) // indexer.phpelseif(!is_null($key)) else , if($freq >= $min && (!$max || $freq <= $max)), if($words === null),
        • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
          • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
          • 1172: $query = array() // common.php
        • 773: foreach($lengths as $length) // indexer.phpelseif(!is_null($key)) else ,
          • 772: $lengths = idx_listindexlengths () // indexer.phpelseif(!is_null($key)) else ,
    • requires:
      • 444: if($cnt = preg_match_all('#' . $reg . '#usi'$lctext$matches))
File Manipulation

Userinput returned by function wikilockfn() reaches sensitive sink. (Blind exploitation)
  • 62: mkdir mkdir($lock$conf['dmode'])) // subscription.php
    • 737: $lock = wikilockfn ($id) // common.php
      • 463: $id = idfilter ($id) // common.php
        • 393: $id = idfilter ($id) // common.php
          • 353: $id = idfilter ($id) // common.php
            • 332: $id = str_replace('%2F''/'$id) // common.phpif($ue),
              • 331: $id = str_replace('%3A'':'$id) // common.phpif($ue),
                • 330: $id = rawurlencode($id) // common.phpif($ue),
                  • 327: $id = strtr($id':'';') // common.phpelseif(strtoupper(substr(PHP_OS, 0, 3)) === 'WIN' && $conf),
                    • 60: $id = cleanid ($id) // changelog.php
                      • 43: $id = count($GLOBALS['output'][$file_name]) : 0 // searcher.php
                        • : 
File Manipulation

Userinput returned by function wikilockfn() reaches sensitive sink. (Blind exploitation)
  • 66: chmod chmod($lock$conf['dperm']) // subscription.php
    • 737: $lock = wikilockfn ($id) // common.php
      • 463: $id = idfilter ($id) // common.php
        • 393: $id = idfilter ($id) // common.php
          • 353: $id = idfilter ($id) // common.php
            • 332: $id = str_replace('%2F''/'$id) // common.phpif($ue),
              • 331: $id = str_replace('%3A'':'$id) // common.phpif($ue),
                • 330: $id = rawurlencode($id) // common.phpif($ue),
                  • 327: $id = strtr($id':'';') // common.phpelseif(strtoupper(substr(PHP_OS, 0, 3)) === 'WIN' && $conf),
                    • 60: $id = cleanid ($id) // changelog.php
                      • 43: $id = count($GLOBALS['output'][$file_name]) : 0 // searcher.php
                        • : 
    • requires:
      • 66: if($conf['dperm'])
File Disclosure

Userinput returned by function parse_url() reaches sensitive sink.
  • 173: file $subscriptions = file ($filename) // subscription.php
    • 169: foreach($filenames as $cur_page=>$filename) // subscription.php
      • 1231: extract($data) // indexer.phpregister_globals implementation
        • 1228: $data['body'] = $data['body'] . " " . rawwiki ($page) // indexer.php
          • 1226: $data['body'] = $body // indexer.php compact()
            • 1219: $body = '' // indexer.php
          • 592: $page = $page_idx[$pid] // indexer.phpif($key == 'title'),
            • 587: $page_idx = $this->getindex ('page''') // indexer.php
              • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
                • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
                • 1172: $query = array() // common.php
Possible Flow Control

Userinput returned by function parse_url() reaches sensitive sink.
  • 450: extract extract($data) // template.php
    • 298: $data['addresslist'] = trim($addresslist . ',' . implode(','$emails)',') // subscription.php
      • 1231: extract($data) // indexer.phpregister_globals implementation
        • 1228: $data['body'] = $data['body'] . " " . rawwiki ($page) // indexer.php
          • 1226: $data['body'] = $body // indexer.php compact()
            • 1219: $body = '' // indexer.php
          • 592: $page = $page_idx[$pid] // indexer.phpif($key == 'title'),
            • 587: $page_idx = $this->getindex ('page''') // indexer.php
              • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
                • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
                • 1172: $query = array() // common.php
      • 293: $emails[$sub0] = $info['mail'] // subscription.phpif($level >= AUTH_READ), if(strcasecmp($info, $conf) != 0),
        • 288: $info = $auth->getuserdata ($sub[0]) // subscription.php
          • 1231: extract($data) // indexer.phpregister_globals implementation
            • 1228: $data['body'] = $data['body'] . " " . rawwiki ($page) // indexer.php
              • 1226: $data['body'] = $body // indexer.php compact()
                • 1219: $body = '' // indexer.php
              • 592: $page = $page_idx[$pid] // indexer.phpif($key == 'title'),
                • 587: $page_idx = $this->getindex ('page''') // indexer.php
                  • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
                    • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
                    • 1172: $query = array() // common.php
          • 287: foreach($by_targets as $sub) // subscription.php
            • 286: foreach($subs as $by_targets) // subscription.php
              • 284: $subs = subscription_find ($id$pres) // subscription.php
                • 497: $id = trim($id':') // search.php
                  • 340: $id = pathid ($file) // search.php
                    • 56: foreach($files as $file) // search.php
                      • 38: $files[] = $dir . '/' . $file // search.phpif(!$dh),
                        • 405: foreach($pathA AS $key=>$dir) // pageutils.phpif($id == '.'),
    • requires:
      • 449: elseif(!is_array($data)) else 
Possible Flow Control

Userinput returned by function parse_url() reaches sensitive sink.
  • 476: extract extract($data) // template.php
    • 298: $data['addresslist'] = trim($addresslist . ',' . implode(','$emails)',') // subscription.php
      • 1231: extract($data) // indexer.phpregister_globals implementation
        • 1228: $data['body'] = $data['body'] . " " . rawwiki ($page) // indexer.php
          • 1226: $data['body'] = $body // indexer.php compact()
            • 1219: $body = '' // indexer.php
          • 592: $page = $page_idx[$pid] // indexer.phpif($key == 'title'),
            • 587: $page_idx = $this->getindex ('page''') // indexer.php
              • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
                • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
                • 1172: $query = array() // common.php
      • 293: $emails[$sub0] = $info['mail'] // subscription.phpif($level >= AUTH_READ), if(strcasecmp($info, $conf) != 0),
        • 288: $info = $auth->getuserdata ($sub[0]) // subscription.php
          • 1231: extract($data) // indexer.phpregister_globals implementation
            • 1228: $data['body'] = $data['body'] . " " . rawwiki ($page) // indexer.php
              • 1226: $data['body'] = $body // indexer.php compact()
                • 1219: $body = '' // indexer.php
              • 592: $page = $page_idx[$pid] // indexer.phpif($key == 'title'),
                • 587: $page_idx = $this->getindex ('page''') // indexer.php
                  • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
                    • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
                    • 1172: $query = array() // common.php
          • 287: foreach($by_targets as $sub) // subscription.php
            • 286: foreach($subs as $by_targets) // subscription.php
              • 284: $subs = subscription_find ($id$pres) // subscription.php
                • 497: $id = trim($id':') // search.php
                  • 340: $id = pathid ($file) // search.php
                    • 56: foreach($files as $file) // search.php
                      • 38: $files[] = $dir . '/' . $file // search.phpif(!$dh),
                        • 405: foreach($pathA AS $key=>$dir) // pageutils.phpif($id == '.'),
    • requires:
      • 475: elseif(!is_array($data)) else 
File Inclusion

Userinput reaches sensitive sink when function tpl_getlang() is called.
  • 1064: include include ($path . $conf['lang'] . '/lang.php') // template.php
    • 1057: $path = DOKU_TPLINC . 'lang/' // template.php
      • 126: define('DOKU_TPLINC'DOKU_INC . 'lib/tpl/' . $conf['template'] . '/') // define()
        • 20: define('DOKU_INC'fullpath(dirname(__FILE__) . '/../') . '/') // define()
        • 60: $conf = array()
    • 1061:  global $conf // template.php
      • 63: $conf['mailfrom'] = str_replace(array_keys($replace)array_values($replace)$conf['mailfrom']) // mail.php
        • 60: $replace['@NAME@'] = '' // mail.phpif(!empty($USERINFO)) else ,
        • 58: $replace['@NAME@'] = $USERINFO['name'] // mail.phpif(!empty($USERINFO)),
          • 1231: extract($data) // indexer.phpregister_globals implementation
            • 1228: $data['body'] = $data['body'] . " " . rawwiki ($page) // indexer.php
              • 1226: $data['body'] = $body // indexer.php compact()
                • 1219: $body = '' // indexer.php
              • 592: $page = $page_idx[$pid] // indexer.phpif($key == 'title'),
                • 587: $page_idx = $this->getindex ('page''') // indexer.php
                  • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
                    • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
                    • 1172: $query = array() // common.php
        • 60: $replace['@NAME@'] = '' // mail.phpif(!empty($USERINFO)) else ,
        • 18: $conf = array() // plugin.php
    • requires:
      • 1056: if(count($lang) === 0)
      • 1064: if($conf['lang'] != 'en')
      • 1053:  function tpl_getlang($id)
Code Evaluation

Userinput returned by function parse_url() reaches sensitive sink.
  • 422: preg_replace preg_replace('/[' . $additional . '\x00-\x19' . $specials . ']/u'$repl$string) // utf8.php
    • 476: extract($data) // template.phpregister_globals implementationelseif(!is_array($data)) else ,
      • 298: $data['addresslist'] = trim($addresslist . ',' . implode(','$emails)',') // subscription.php
        • 1231: extract($data) // indexer.phpregister_globals implementation
          • 1228: $data['body'] = $data['body'] . " " . rawwiki ($page) // indexer.php
            • 1226: $data['body'] = $body // indexer.php compact()
              • 1219: $body = '' // indexer.php
            • 592: $page = $page_idx[$pid] // indexer.phpif($key == 'title'),
              • 587: $page_idx = $this->getindex ('page''') // indexer.php
                • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
                  • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
                  • 1172: $query = array() // common.php
        • 293: $emails[$sub0] = $info['mail'] // subscription.phpif($level >= AUTH_READ), if(strcasecmp($info, $conf) != 0),
          • 288: $info = $auth->getuserdata ($sub[0]) // subscription.php
            • 1231: extract($data) // indexer.phpregister_globals implementation
              • 1228: $data['body'] = $data['body'] . " " . rawwiki ($page) // indexer.php
                • 1226: $data['body'] = $body // indexer.php compact()
                  • 1219: $body = '' // indexer.php
                • 592: $page = $page_idx[$pid] // indexer.phpif($key == 'title'),
                  • 587: $page_idx = $this->getindex ('page''') // indexer.php
                    • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
                      • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
                      • 1172: $query = array() // common.php
            • 287: foreach($by_targets as $sub) // subscription.php
              • 286: foreach($subs as $by_targets) // subscription.php
                • 284: $subs = subscription_find ($id$pres) // subscription.php
                  • 497: $id = trim($id':') // search.php
                    • 340: $id = pathid ($file) // search.php
                      • 56: foreach($files as $file) // search.php
                        • 38: $files[] = $dir . '/' . $file // search.phpif(!$dh),
    • requires:
      • 400: if(!function_exists('utf8_stripspecials'))
Code Evaluation

Userinput returned by function parse_url() reaches sensitive sink.
  • 506: preg_replace_callback preg_replace_callback('/&(#)?([Xx])?([0-9A-Za-z]+);/m'array(&$decoder'decode')$str) // utf8.php
    • 476: extract($data) // template.phpregister_globals implementationelseif(!is_array($data)) else ,
      • 298: $data['addresslist'] = trim($addresslist . ',' . implode(','$emails)',') // subscription.php
        • 1231: extract($data) // indexer.phpregister_globals implementation
          • 1228: $data['body'] = $data['body'] . " " . rawwiki ($page) // indexer.php
            • 1226: $data['body'] = $body // indexer.php compact()
              • 1219: $body = '' // indexer.php
            • 592: $page = $page_idx[$pid] // indexer.phpif($key == 'title'),
              • 587: $page_idx = $this->getindex ('page''') // indexer.php
                • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
                  • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
                  • 1172: $query = array() // common.php
        • 293: $emails[$sub0] = $info['mail'] // subscription.phpif($level >= AUTH_READ), if(strcasecmp($info, $conf) != 0),
          • 288: $info = $auth->getuserdata ($sub[0]) // subscription.php
            • 1231: extract($data) // indexer.phpregister_globals implementation
              • 1228: $data['body'] = $data['body'] . " " . rawwiki ($page) // indexer.php
                • 1226: $data['body'] = $body // indexer.php compact()
                  • 1219: $body = '' // indexer.php
                • 592: $page = $page_idx[$pid] // indexer.phpif($key == 'title'),
                  • 587: $page_idx = $this->getindex ('page''') // indexer.php
                    • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
                      • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
                      • 1172: $query = array() // common.php
            • 287: foreach($by_targets as $sub) // subscription.php
              • 286: foreach($subs as $by_targets) // subscription.php
                • 284: $subs = subscription_find ($id$pres) // subscription.php
                  • 497: $id = trim($id':') // search.php
                    • 340: $id = pathid ($file) // search.php
                      • 56: foreach($files as $file) // search.php
                        • 38: $files[] = $dir . '/' . $file // search.phpif(!$dh),
    • requires:
      • 479: if(!function_exists('utf8_unhtml'))
      • 505: if(is_null($entities)) else 
Code Evaluation

Userinput returned by function parse_url() reaches sensitive sink.
  • 116: call_user_func_array $result = call_user_func_array(array($this$validTypes[$type])$params) // basic.class.php
    • 476: extract($data) // template.phpregister_globals implementationelseif(!is_array($data)) else ,
      • 298: $data['addresslist'] = trim($addresslist . ',' . implode(','$emails)',') // subscription.php
        • 1231: extract($data) // indexer.phpregister_globals implementation
          • 1228: $data['body'] = $data['body'] . " " . rawwiki ($page) // indexer.php
            • 1226: $data['body'] = $body // indexer.php compact()
              • 1219: $body = '' // indexer.php
            • 592: $page = $page_idx[$pid] // indexer.phpif($key == 'title'),
              • 587: $page_idx = $this->getindex ('page''') // indexer.php
                • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
                  • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
                  • 1172: $query = array() // common.php
        • 293: $emails[$sub0] = $info['mail'] // subscription.phpif($level >= AUTH_READ), if(strcasecmp($info, $conf) != 0),
          • 288: $info = $auth->getuserdata ($sub[0]) // subscription.php
            • 1231: extract($data) // indexer.phpregister_globals implementation
              • 1228: $data['body'] = $data['body'] . " " . rawwiki ($page) // indexer.php
                • 1226: $data['body'] = $body // indexer.php compact()
                  • 1219: $body = '' // indexer.php
                • 592: $page = $page_idx[$pid] // indexer.phpif($key == 'title'),
                  • 587: $page_idx = $this->getindex ('page''') // indexer.php
                    • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
                      • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
                      • 1172: $query = array() // common.php
            • 287: foreach($by_targets as $sub) // subscription.php
              • 286: foreach($subs as $by_targets) // subscription.php
                • 284: $subs = subscription_find ($id$pres) // subscription.php
                  • 497: $id = trim($id':') // search.php
                    • 340: $id = pathid ($file) // search.php
                      • 56: foreach($files as $file) // search.php
                        • 38: $files[] = $dir . '/' . $file // search.phpif(!$dh),
    • requires:
      • 115: if($evt->advise_before (true))
File Manipulation

Userinput reaches sensitive sink. (Blind exploitation)
  • 863: unlink unlink ($tfile) // auth.php
    • 857: $tfile = $conf['cachedir'] . '/' . $token[0] . '/' . $token . '.pwauth' // auth.php
      • 18: $conf = array() // plugin.php
      • 852: $token = preg_replace('/[^a-f0-9]+/'''$_REQUEST['pwauth']) // auth.php
        • 177: $_REQUEST = array_merge($_GET$_POST)
      • 852: $token = preg_replace('/[^a-f0-9]+/'''$_REQUEST['pwauth']) // auth.php
        • 177: $_REQUEST = array_merge($_GET$_POST)
    • requires:
      • 854: if($token)
Code Evaluation

Userinput is used as dynamic function name. Arbitrary functions may be called.
  • 950: $call $call($clear$salt) // auth.php
    • 943: $call = 'hash_' . $method // auth.php
      • 539: $method = 'post' // template.phpswitch($type), case 'edit' : , if($ACT == 'show' || $ACT == 'search'),
      • 533: $method = 'get' // template.php
      • 87: list($obj$method) = $action // events.php list() if($this->advise_before($enablePrevent) && is_callable($action)), if(is_array($action)),
        • 734: $action = valid_input_set ('action'array('subscribe''unsubscribe')$params'invalid subscription action given') // actions.php
          • 680: $params[$param] = $_REQUEST["sub_$param"] // actions.phpif(isset($_REQUEST)),
            • 177: $_REQUEST = array_merge($_GET$_POST)
File Inclusion

Userinput returned by function parse_url() reaches sensitive sink.
  • 87: require_once require_once ($classes[$name]) // load.php
    • 476: extract($data) // template.phpregister_globals implementationelseif(!is_array($data)) else ,
      • 298: $data['addresslist'] = trim($addresslist . ',' . implode(','$emails)',') // subscription.php
        • 1231: extract($data) // indexer.phpregister_globals implementation
          • 1228: $data['body'] = $data['body'] . " " . rawwiki ($page) // indexer.php
            • 1226: $data['body'] = $body // indexer.php compact()
              • 1219: $body = '' // indexer.php
            • 592: $page = $page_idx[$pid] // indexer.phpif($key == 'title'),
              • 587: $page_idx = $this->getindex ('page''') // indexer.php
                • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
                  • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
                  • 1172: $query = array() // common.php
        • 293: $emails[$sub0] = $info['mail'] // subscription.phpif($level >= AUTH_READ), if(strcasecmp($info, $conf) != 0),
          • 288: $info = $auth->getuserdata ($sub[0]) // subscription.php
            • : 
            • 287: foreach($by_targets as $sub) // subscription.php
              • 286: foreach($subs as $by_targets) // subscription.php
                • 284: $subs = subscription_find ($id$pres) // subscription.php
                  • 497: $id = trim($id':') // search.php
                    • 340: $id = pathid ($file) // search.php
                      • 56: foreach($files as $file) // search.php
                        • 38: $files[] = $dir . '/' . $file // search.phpif(!$dh),
                          • 405: foreach($pathA AS $key=>$dir) // pageutils.phpif($id == '.'),
                            • 403: $pathA = explode(':'$id) // pageutils.phpif($id == '.'),
                              • 399: $id = $ns . ':' . $id // pageutils.phpif($id == '.'),
                                • 1650: $ns = utf8_encodefn (str_replace(':''/'$ns)) // media.php
                                  • 357: foreach($missing as $ns) // io.php
                                    • 356: $missing = array_reverse($missing) // io.php
                                      • 350: $missing[] = $ns // io.php
                                        • 348: $ns = implode(':'$ns_stack) // io.php
    • requires:
      • 86: if(isset($classes[$name]))
File Inclusion

Userinput returned by function parse_url() reaches sensitive sink.
  • 98: include include DOKU_PLUGIN . "{$m[2]}/{$m[1]}$c.php" // load.php
    • 10: define('DOKU_PLUGIN'DOKU_INC . 'lib/plugins/') // pluginutils.php define()
      • 20: define('DOKU_INC'fullpath(dirname(__FILE__) . '/../') . '/') // define()
    • 93: preg_match('/^(helper|syntax|action|admin|renderer)_plugin_([^_]+)(?:_([^_]+))?$/'$name$m)) // load.php preg_match()
      • 869: $name = $title // template.phpif(useheading('navigation')),
        • 868: $title = p_get_first_heading ($id) // template.phpif(useheading('navigation')),
          • 717: foreach($crumbs as $id=>$name) // template.php
            • 707: $crumbs = array_reverse($crumbstrue) // template.phpif($lang == 'rtl'),
              • 703: $crumbs = breadcrumbs () // template.php
              • 476: extract($data) // template.phpregister_globals implementationelseif(!is_array($data)) else ,
                • 298: $data['addresslist'] = trim($addresslist . ',' . implode(','$emails)',') // subscription.php
                  • 1231: extract($data) // indexer.phpregister_globals implementation
                    • 1228: $data['body'] = $data['body'] . " " . rawwiki ($page) // indexer.php
                      • 1226: $data['body'] = $body // indexer.php compact()
                        • 1219: $body = '' // indexer.php
                      • 592: $page = $page_idx[$pid] // indexer.phpif($key == 'title'),
                        • 587: $page_idx = $this->getindex ('page''') // indexer.php
                          • 1177: parse_str ($url['query']$query) // common.phpregister_globals implementation
                            • 1170: $url = parse_url ($_SERVER['HTTP_REFERER']) // common.php
                            • 1172: $query = array() // common.php
                  • 293: $emails[$sub0] = $info['mail'] // subscription.phpif($level >= AUTH_READ), if(strcasecmp($info, $conf) != 0),
                    • 288: $info = $auth->getuserdata ($sub[0]) // subscription.php
                      • : 
                      • 287: foreach($by_targets as $sub) // subscription.php
                        • 286: foreach($subs as $by_targets) // subscription.php
                          • 284: $subs = subscription_find ($id$pres) // subscription.php
                            • 497: $id = trim($id':') // search.php
                              • 340: $id = pathid ($file) // search.php
                                • 56: foreach($files as $file) // search.php
                                  • 38: $files[] = $dir . '/' . $file // search.phpif(!$dh),
    • requires:
      • 93: if(preg_match('/^(helper|syntax|action|admin|renderer)_plugin_([^_]+)(?:_([^_]+))?$/'$name$m))