]> git.p6c8.net - jirafeau_project.git/blobdiff - lib/functions.php
[FEATURE] option to randomize file hash
[jirafeau_project.git] / lib / functions.php
index 4e227967475973466a0c186fcbf616aeeaecf559..1dd03e54b55af485ad276643fb2e726ff8b897fc 100644 (file)
@@ -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;
 }
 
 /**

patrick-canterino.de