diff options
author | Evan Prodromou <evan@status.net> | 2010-02-03 11:53:54 -0500 |
---|---|---|
committer | Evan Prodromou <evan@status.net> | 2010-02-03 11:53:54 -0500 |
commit | 20953ea3de18eb596984cb4105d3eee71494f2f1 (patch) | |
tree | 845f41bc6cef6a80a7b079bf755985c47e580b0c /classes | |
parent | 6215b9788c8d1f523d4d173ecf40f185bd024bca (diff) | |
parent | 51c3606715573d8cea3c79ff7bc989a4ba86acc5 (diff) |
Merge branch 'master' of git@gitorious.org:statusnet/mainline
Diffstat (limited to 'classes')
-rw-r--r-- | classes/File.php | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/classes/File.php b/classes/File.php index c527c4ffe..ee418a802 100644 --- a/classes/File.php +++ b/classes/File.php @@ -176,8 +176,22 @@ class File extends Memcached_DataObject return "$nickname-$datestamp-$random.$ext"; } + /** + * Validation for as-saved base filenames + */ + static function validFilename($filename) + { + return preg_match('/^[A-Za-z0-9._-]+$/', $filename); + } + + /** + * @throws ClientException on invalid filename + */ static function path($filename) { + if (!self::validFilename($filename)) { + throw new ClientException("Invalid filename"); + } $dir = common_config('attachments', 'dir'); if ($dir[strlen($dir)-1] != '/') { @@ -189,6 +203,9 @@ class File extends Memcached_DataObject static function url($filename) { + if (!self::validFilename($filename)) { + throw new ClientException("Invalid filename"); + } if(common_config('site','private')) { return common_local_url('getfile', |