From dbcae2ec45cd0ab2e8be360f2326630f050e86a3 Mon Sep 17 00:00:00 2001 From: Arthur Schiwon Date: Wed, 20 Apr 2016 21:51:30 +0200 Subject: [PATCH] backport of #240 use parse_url to verify dn, because filter_var has issues with special chars Add test on adding bookmark with URL containing umlaut Does not relate to this issue (different code path, not covered by tests yet), but still it is a good addition. --- controller/rest/bookmarkcontroller.php | 9 ++++++--- tests/lib_bookmark_test.php | 4 +++- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/controller/rest/bookmarkcontroller.php b/controller/rest/bookmarkcontroller.php index 53f90e0b..6875af64 100644 --- a/controller/rest/bookmarkcontroller.php +++ b/controller/rest/bookmarkcontroller.php @@ -96,7 +96,8 @@ class BookmarkController extends ApiController { } // Check if it is a valid URL (after adding http(s) prefix) - if (filter_var($url, FILTER_VALIDATE_URL) === FALSE) { + $urlData = parse_url($url); + if ($urlData === false || !isset($urlData['scheme']) || !isset($urlData['host'])) { return new JSONResponse(array('status' => 'error'), Http::STATUS_BAD_REQUEST); } @@ -133,7 +134,8 @@ class BookmarkController extends ApiController { public function editBookmark($id = null, $url = "", $item = array(), $title = "", $is_public = false, $record_id = null, $description = "") { // Check if it is a valid URL - if (filter_var($url, FILTER_VALIDATE_URL) === FALSE) { + $urlData = parse_url($url); + if ($urlData === false || !isset($urlData['scheme']) || !isset($urlData['host'])) { return new JSONResponse(array(), Http::STATUS_BAD_REQUEST); } @@ -190,7 +192,8 @@ class BookmarkController extends ApiController { public function clickBookmark($url = "") { // Check if it is a valid URL - if (filter_var($url, FILTER_VALIDATE_URL) === FALSE) { + $urlData = parse_url($url); + if ($urlData === false || !isset($urlData['scheme']) || !isset($urlData['host'])) { return new JSONResponse(array(), Http::STATUS_BAD_REQUEST); } diff --git a/tests/lib_bookmark_test.php b/tests/lib_bookmark_test.php index be626234..0135b043 100644 --- a/tests/lib_bookmark_test.php +++ b/tests/lib_bookmark_test.php @@ -17,8 +17,10 @@ class Test_LibBookmarks_Bookmarks extends PHPUnit_Framework_TestCase { function testAddBookmark() { $this->cleanDB(); $this->assertCount(0, Bookmarks::findBookmarks($this->userid, $this->db, 0, 'id', array(), true, -1)); - Bookmarks::addBookmark($this->userid, $this->db, 'http://owncloud.org', 'Owncloud project', array('oc', 'cloud'), 'An Awesome project'); + Bookmarks::addBookmark($this->userid, $this->db, 'http://owncloud.org', 'owncloud project', array('oc', 'cloud'), 'An Awesome project'); $this->assertCount(1, Bookmarks::findBookmarks($this->userid, $this->db, 0, 'id', array(), true, -1)); + Bookmarks::addBookmark($this->userid, $this->db, 'http://de.wikipedia.org/Ü', 'Das Ü', array('encyclopedia', 'lang'), 'A terrific letter'); + $this->assertCount(2, Bookmarks::findBookmarks($this->userid, $this->db, 0, 'id', array(), true, -1)); } function testFindBookmarks() {