X-Git-Url: https://git.p6c8.net/jirafeau.git/blobdiff_plain/ecfc8a70b8f33915e53ef2fc9ab14e77daa96e72..fb66c960848f833ccd7ec87d165aee7c1ee7598f:/lib/functions.php diff --git a/lib/functions.php b/lib/functions.php index 4e22796..1dd03e5 100644 --- a/lib/functions.php +++ b/lib/functions.php @@ -321,7 +321,7 @@ function jirafeau_delete_file($hash) /** hash file's content - * @param $method hash method, see 'file_hash' option. 'md5' or 'md5_outside'. + * @param $method hash method, see 'file_hash' option. Valid methods are 'md5', 'md5_outside' or 'random' * @param $file_path file to hash * @returns hash string */ @@ -332,6 +332,8 @@ function jirafeau_hash_file($method, $file_path) return jirafeau_md5_outside($file_path); case 'md5': return md5_file($file_path); + case 'random': + return jirafeau_gen_random(32); } return md5_file($file_path); } @@ -343,22 +345,30 @@ function jirafeau_hash_file($method, $file_path) */ function jirafeau_md5_outside($file_path) { - $size = filesize($file_path); - if ($size === false) { - $size = 0; - } + $out = false; $handle = fopen($file_path, "r"); if ($handle === false) { return false; } + $size = filesize($file_path); + if ($size === false) { + goto err; + } $first = fread($handle, 64); if ($first === false) { - return false; + goto err; + } + if (fseek($handle, $size < 64 ? 0 : $size - 64) == -1) { + goto err; } - fseek($handle, $size < 64 ? 0 : $size - 64); $last = fread($handle, 64); + if ($last === false) { + goto err; + } + $out = md5($first . $last . $size); + err: fclose($handle); - return md5($first . $last . $size); + return $out; } /**