diff --git a/src/Bzip.php b/src/Bzip.php index 6634801..971d096 100644 --- a/src/Bzip.php +++ b/src/Bzip.php @@ -53,9 +53,20 @@ public function extract($pathExtracted) } $output = fopen($pathExtracted, 'w'); + while (!feof($file)) { - fwrite($output, fread($file, 1024 * 1024)); + $content = fread($file, 1024 * 1024); + + if (false === $content) { + $this->error = "fread failed"; + fclose($output); + @unlink($pathExtracted); + return false; + } + + fwrite($output, $content); } + fclose($output); $success = bzclose($file); diff --git a/src/Gzip.php b/src/Gzip.php index 21b5019..b79c633 100644 --- a/src/Gzip.php +++ b/src/Gzip.php @@ -53,9 +53,20 @@ public function extract($pathExtracted) } $output = fopen($pathExtracted, 'w'); + while (!feof($file)) { - fwrite($output, fread($file, 1024 * 1024)); + $content = fread($file, 1024 * 1024); + + if (false === $content) { + $this->error = "fread failed"; + fclose($output); + @unlink($pathExtracted); + return false; + } + + fwrite($output, $content); } + fclose($output); $success = gzclose($file);