Skip to content
Snippets Groups Projects
Commit b9f820d8 authored by Robin Appelman's avatar Robin Appelman
Browse files

normalize paths for dir and statcache in smb stream wrapper

parent 92ddefe5
Branches
No related tags found
No related merge requests found
...@@ -229,6 +229,8 @@ class smb { ...@@ -229,6 +229,8 @@ class smb {
} }
function addstatcache ($url, $info) { function addstatcache ($url, $info) {
$url = str_replace('//', '/', $url);
$url = rtrim($url, '/');
global $__smb_cache; global $__smb_cache;
$is_file = (strpos ($info['attr'],'D') === FALSE); $is_file = (strpos ($info['attr'],'D') === FALSE);
$s = ($is_file) ? stat ('/etc/passwd') : stat ('/tmp'); $s = ($is_file) ? stat ('/etc/passwd') : stat ('/tmp');
...@@ -238,11 +240,15 @@ class smb { ...@@ -238,11 +240,15 @@ class smb {
} }
function getstatcache ($url) { function getstatcache ($url) {
$url = str_replace('//', '/', $url);
$url = rtrim($url, '/');
global $__smb_cache; global $__smb_cache;
return isset ($__smb_cache['stat'][$url]) ? $__smb_cache['stat'][$url] : FALSE; return isset ($__smb_cache['stat'][$url]) ? $__smb_cache['stat'][$url] : FALSE;
} }
function clearstatcache ($url='') { function clearstatcache ($url='') {
$url = str_replace('//', '/', $url);
$url = rtrim($url, '/');
global $__smb_cache; global $__smb_cache;
if ($url == '') $__smb_cache['stat'] = array (); else unset ($__smb_cache['stat'][$url]); if ($url == '') $__smb_cache['stat'] = array (); else unset ($__smb_cache['stat'][$url]);
} }
...@@ -358,16 +364,22 @@ class smb_stream_wrapper extends smb { ...@@ -358,16 +364,22 @@ class smb_stream_wrapper extends smb {
# cache # cache
function adddircache ($url, $content) { function adddircache ($url, $content) {
$url = str_replace('//', '/', $url);
$url = rtrim($url, '/');
global $__smb_cache; global $__smb_cache;
return $__smb_cache['dir'][$url] = $content; return $__smb_cache['dir'][$url] = $content;
} }
function getdircache ($url) { function getdircache ($url) {
$url = str_replace('//', '/', $url);
$url = rtrim($url, '/');
global $__smb_cache; global $__smb_cache;
return isset ($__smb_cache['dir'][$url]) ? $__smb_cache['dir'][$url] : FALSE; return isset ($__smb_cache['dir'][$url]) ? $__smb_cache['dir'][$url] : FALSE;
} }
function cleardircache ($url='') { function cleardircache ($url='') {
$url = str_replace('//', '/', $url);
$url = rtrim($url, '/');
global $__smb_cache; global $__smb_cache;
if ($url == ''){ if ($url == ''){
$__smb_cache['dir'] = array (); $__smb_cache['dir'] = array ();
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment