fix find_folder_hash_by_path() which was not safe against multiple attach structures with the same filename but in different directories

This commit is contained in:
zotlabs
2017-02-20 23:03:48 -08:00
parent 1c1d1f1185
commit e54ba7ecbc
2 changed files with 30 additions and 10 deletions

View File

@@ -1477,20 +1477,34 @@ function find_folder_hash_by_attach_hash($channel_id, $attachHash, $recurse = fa
function find_folder_hash_by_path($channel_id, $path) {
$filename = end(explode('/', $path));
if(! $path)
return '';
if($filename) {
$r = q("SELECT hash FROM attach WHERE uid = %d AND filename = '%s' LIMIT 1",
$comps = explode('/',$path);
$errors = false;
$parent_hash = '';
for($x = 0; $x < count($comps); $x ++) {
$element = $comps[$x];
$r = q("SELECT hash FROM attach WHERE uid = %d AND filename = '%s' AND folder = '%s' LIMIT 1",
intval($channel_id),
dbesc($filename)
dbesc($element),
dbesc($parent_hash)
);
if($r) {
$parent_hash = $r[0]['hash'];
}
else {
$errors ++;
break;
}
}
$hash = '';
if($r && $r[0]['hash']) {
$hash = $r[0]['hash'];
}
return $hash;
if($errors)
return '';
return $parent_hash;
}
/**