From 2010842d102ac0f304701ec3cbf9d567cc400634 Mon Sep 17 00:00:00 2001 From: ryan Date: Mon, 27 Jun 2011 15:46:11 +0000 Subject: [PATCH] Sanitize order and orderby in get_bookmarks() git-svn-id: http://svn.automattic.com/wordpress/trunk@18345 1a063a9b-81f0-0310-95a4-ce76da25c4cd --- wp-includes/bookmark.php | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/wp-includes/bookmark.php b/wp-includes/bookmark.php index 8b0fe4874..e1184231c 100644 --- a/wp-includes/bookmark.php +++ b/wp-includes/bookmark.php @@ -213,22 +213,32 @@ function get_bookmarks($args = '') { $orderby = strtolower($orderby); $length = ''; - switch ($orderby) { + switch ( $orderby ) { case 'length': $length = ", CHAR_LENGTH(link_name) AS length"; break; case 'rand': $orderby = 'rand()'; break; + case 'link_id': + $orderby = "$wpdb->links.link_id"; + break; default: $orderparams = array(); - foreach ( explode(',', $orderby) as $ordparam ) - $orderparams[] = 'link_' . trim($ordparam); + foreach ( explode(',', $orderby) as $ordparam ) { + $ordparam = trim($ordparam); + if ( in_array( $ordparam, array( 'name', 'url', 'visible', 'rating', 'owner', 'updated' ) ) ) + $orderparams[] = 'link_' . $ordparam; + } $orderby = implode(',', $orderparams); } - if ( 'link_id' == $orderby ) - $orderby = "$wpdb->links.link_id"; + if ( empty( $orderby ) ) + $orderby = 'link_name'; + + $order = strtoupper( $order ); + if ( '' !== $order && !in_array( $order, array( 'ASC', 'DESC' ) ) ) + $order = 'ASC'; $visible = ''; if ( $hide_invisible )