diff --git a/lib/SimpleSAML/Configuration.php b/lib/SimpleSAML/Configuration.php index 61081c06fecd90b4225b040a4bd4addfe1c1b704..700dd52d98923a08dc67c2aba289cf6debe3c474 100644 --- a/lib/SimpleSAML/Configuration.php +++ b/lib/SimpleSAML/Configuration.php @@ -361,10 +361,12 @@ class SimpleSAML_Configuration { assert('is_string($path)'); - /* Prepend path with basedir if it doesn't start with - * a slash. We assume getBaseDir ends with a slash. + /* Prepend path with basedir if it doesn't start with a slash or a Windows + * drive letter (e.g. "C:\"). We assume getBaseDir ends with a slash. */ - if ($path[0] !== '/') $path = $this->getBaseDir() . $path; + if ($path[0] !== '/' && + !(preg_match('@^[a-z]:[\\\\/]@i', $path, $matches) && is_dir($matches[0]))) + $path = $this->getBaseDir() . $path; /* Remove trailing slashes. */ while (substr($path, -1) === '/') {