diff options
-rw-r--r-- | application/helpers/filebin_helper.php | 6 | ||||
-rw-r--r-- | application/test/tests/test_filebin_helper.php | 10 |
2 files changed, 13 insertions, 3 deletions
diff --git a/application/helpers/filebin_helper.php b/application/helpers/filebin_helper.php index 05a136eb3..55fdf773d 100644 --- a/application/helpers/filebin_helper.php +++ b/application/helpers/filebin_helper.php @@ -375,7 +375,11 @@ function return_bytes($size_str) case 'K': case 'k': return (int)$size_str * 1024; case 'M': case 'm': return (int)$size_str * 1048576; case 'G': case 'g': return (int)$size_str * 1073741824; - default: return (int)$size_str; + default: + if (strlen($size_str) === strlen(intval($size_str))) { + return (int)$size_str; + } + throw new \exceptions\ApiException('filebin-helper/invalid-input-unit', "Input has invalid unit"); } } diff --git a/application/test/tests/test_filebin_helper.php b/application/test/tests/test_filebin_helper.php index c505dfe8a..2069f2953 100644 --- a/application/test/tests/test_filebin_helper.php +++ b/application/test/tests/test_filebin_helper.php @@ -65,7 +65,13 @@ class test_filebin_helper extends \test\Test { $this->t->is(return_bytes("1k"), 1*1024, "1k"); $this->t->is(return_bytes("1M"), 1*1024*1024, "1M"); $this->t->is(return_bytes("1G"), 1*1024*1024*1024, "1G"); - $this->t->is(return_bytes("1P"), "1P", "unhandled text: 1P"); - $this->t->ok(return_bytes("106954752") === 106954752, "value without unit is returned as int"); + + try { + return_bytes("1P"); + } catch (\exceptions\ApiException $e) { + $this->t->is($e->get_error_id(), 'filebin-helper/invalid-input-unit', "unhandled text: 1P"); + } + + $this->t->is(return_bytes("106954752"), 106954752, "value without unit is returned as int"); } } |