diff options
author | Bharat Mediratta <bharat@menalto.com> | 2012-04-01 11:36:16 -0700 |
---|---|---|
committer | Bharat Mediratta <bharat@menalto.com> | 2012-04-01 11:36:16 -0700 |
commit | 7ba0b1b75ca2b3ff720f7ddf0e03db882a65353d (patch) | |
tree | 0f5c0128be4492c9631a073e649540423621295f | |
parent | 7d66ab2e949bc915f108737f08cac2f9057ef729 (diff) |
Restrict valid urls to having a http:// or https:// prefix. Fixes #1830.
-rw-r--r-- | modules/gallery/helpers/MY_valid.php | 26 | ||||
-rw-r--r-- | modules/gallery/tests/Valid_Test.php | 28 | ||||
-rw-r--r-- | modules/user/controllers/users.php | 3 |
3 files changed, 56 insertions, 1 deletions
diff --git a/modules/gallery/helpers/MY_valid.php b/modules/gallery/helpers/MY_valid.php new file mode 100644 index 00000000..68712302 --- /dev/null +++ b/modules/gallery/helpers/MY_valid.php @@ -0,0 +1,26 @@ +<?php defined("SYSPATH") or die("No direct script access."); +/** + * Gallery - a web based photo album viewer and editor + * Copyright (C) 2000-2012 Bharat Mediratta + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. + */ +class valid extends valid_Core { + public static function url($url) { + return valid_Core::url($url) && + (!strncasecmp($url, "http://", strlen("http://")) || + !strncasecmp($url, "https://", strlen("https://"))); + } +} diff --git a/modules/gallery/tests/Valid_Test.php b/modules/gallery/tests/Valid_Test.php new file mode 100644 index 00000000..82001b94 --- /dev/null +++ b/modules/gallery/tests/Valid_Test.php @@ -0,0 +1,28 @@ +<?php defined("SYSPATH") or die("No direct script access."); +/** + * Gallery - a web based photo album viewer and editor + * Copyright (C) 2000-2012 Bharat Mediratta + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or (at + * your option) any later version. + * + * This program is distributed in the hope that it will be useful, but + * WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. + */ +class Valid_Test extends Gallery_Unit_Test_Case { + public function url_test() { + $this->assert_true(valid::url("http://foo.bar.com")); + $this->assert_true(valid::url("https://foo.bar.com")); + + $this->assert_false(valid::url("mailto://bar")); + $this->assert_false(valid::url("ftp://bar")); + } +}
\ No newline at end of file diff --git a/modules/user/controllers/users.php b/modules/user/controllers/users.php index 441a41bf..0f880fa9 100644 --- a/modules/user/controllers/users.php +++ b/modules/user/controllers/users.php @@ -209,7 +209,8 @@ class Users_Controller extends Controller { $group->input("full_name")->label(t("Full Name"))->id("g-fullname")->value($user->full_name) ->error_messages("length", t("Your name is too long")); self::_add_locale_dropdown($group, $user); - $group->input("url")->label(t("URL"))->id("g-url")->value($user->url); + $group->input("url")->label(t("URL"))->id("g-url")->value($user->url) + ->error_messages("url", t("You must enter a valid url")); module::event("user_edit_form", $user, $form); $group->submit("")->value(t("Save")); |