diff options
author | plegall <plg@piwigo.org> | 2014-01-17 12:50:14 +0000 |
---|---|---|
committer | plegall <plg@piwigo.org> | 2014-01-17 12:50:14 +0000 |
commit | 7f39d5b695f90f5d622f9b070a5a4815c584e707 (patch) | |
tree | 2f71e73ffe6d37c818b10cc891b766865f14022b | |
parent | 787089742d1d8e29f4d0d46c4458f43902d8fec7 (diff) |
bug 3020 and bug 3021 fixed: additionnal checks in search inputs
git-svn-id: http://piwigo.org/svn/trunk@26825 68402e56-0260-453c-a942-63ccdbb3a9ee
-rw-r--r-- | include/functions_search.inc.php | 6 | ||||
-rw-r--r-- | search.php | 5 | ||||
-rw-r--r-- | search_rules.php | 2 |
3 files changed, 11 insertions, 2 deletions
diff --git a/include/functions_search.inc.php b/include/functions_search.inc.php index 66452459e..9cf50d602 100644 --- a/include/functions_search.inc.php +++ b/include/functions_search.inc.php @@ -113,6 +113,12 @@ function get_sql_search_clause($search) create_function('&$s','$s="(".$s.")";') ); + // make sure the "mode" is either OR or AND + if ($search['fields']['allwords']['mode'] != 'AND' and $search['fields']['allwords']['mode'] != 'OR') + { + $search['fields']['allwords']['mode'] = 'AND'; + } + $clauses[] = "\n ". implode( "\n ". $search['fields']['allwords']['mode']. "\n ", diff --git a/search.php b/search.php index 43451cb7c..6feee2780 100644 --- a/search.php +++ b/search.php @@ -47,6 +47,8 @@ if (isset($_POST['submit'])) if (isset($_POST['search_allwords']) and !preg_match('/^\s*$/', $_POST['search_allwords'])) { + check_input_parameter('mode', $_POST, false, '/^(OR|AND)$/'); + $drop_char_match = array( '-','^','$',';','#','&','(',')','<','>','`','\'','"','|',',','@','_', '?','%','~','.','[',']','{','}',':','\\','/','=','\'','!','*'); @@ -73,6 +75,7 @@ if (isset($_POST['submit'])) if (isset($_POST['tags'])) { check_input_parameter('tags', $_POST, true, PATTERN_ID); + check_input_parameter('tag_mode', $_POST, false, '/^(OR|AND)$/'); $search['fields']['tags'] = array( 'words' => $_POST['tags'], @@ -85,7 +88,7 @@ if (isset($_POST['submit'])) $search['fields']['author'] = array( 'words' => preg_split( '/\s+/', - $_POST['search_author'] + strip_tags($_POST['search_author']) ), 'mode' => 'OR', ); diff --git a/search_rules.php b/search_rules.php index 371262d44..34854d2e0 100644 --- a/search_rules.php +++ b/search_rules.php @@ -107,7 +107,7 @@ if (isset($search['fields']['author'])) 'search_words', l10n( 'author(s) : %s', - join(', ', $search['fields']['author']['words']) + join(', ', array_map('strip_tags', $search['fields']['author']['words'])) ) ); } |