# HG changeset patch # User Dan Fuhry # Date 1289927953 18000 # Node ID c3f8982a961cf98c6c38325387b68740676df6ab # Parent 9e6311c59ad42e0fe171ccfb4bb2857211146464 SECURITY: Fix SQL injection in banlist check diff -r 9e6311c59ad4 -r c3f8982a961c includes/sessions.php --- a/includes/sessions.php Mon Jun 28 11:11:09 2010 -0400 +++ b/includes/sessions.php Tue Nov 16 12:19:13 2010 -0500 @@ -1368,10 +1368,10 @@ $sql = "SELECT $col_reason, ban_value, ban_type, is_regex FROM " . table_prefix . "banlist WHERE \n" . " ( ban_type = " . BAN_IP . " AND is_regex = 0 ) OR \n" . " ( ban_type = " . BAN_IP . " AND is_regex = 1 AND '{$_SERVER['REMOTE_ADDR']}' REGEXP ban_value ) OR \n" - . " ( ban_type = " . BAN_USER . " AND is_regex = 0 AND ban_value = '{$this->username}' ) OR \n" - . " ( ban_type = " . BAN_USER . " AND is_regex = 1 AND '{$this->username}' REGEXP ban_value ) OR \n" - . " ( ban_type = " . BAN_EMAIL . " AND is_regex = 0 AND ban_value = '{$this->email}' ) OR \n" - . " ( ban_type = " . BAN_EMAIL . " AND is_regex = 1 AND '{$this->email}' REGEXP ban_value ) \n" + . " ( ban_type = " . BAN_USER . " AND is_regex = 0 AND ban_value = '" . $db->escape($this->username) . "' ) OR \n" + . " ( ban_type = " . BAN_USER . " AND is_regex = 1 AND '" . $db->escape($this->username) . "' REGEXP ban_value ) OR \n" + . " ( ban_type = " . BAN_EMAIL . " AND is_regex = 0 AND ban_value = '" . $db->escape($this->email) . "' ) OR \n" + . " ( ban_type = " . BAN_EMAIL . " AND is_regex = 1 AND '" . $db->escape($this->email) . "' REGEXP ban_value ) \n" . " ORDER BY ban_type ASC;"; } else if ( ENANO_DBLAYER == 'PGSQL' ) @@ -1379,10 +1379,10 @@ $sql = "SELECT $col_reason, ban_value, ban_type, is_regex FROM " . table_prefix . "banlist WHERE \n" . " ( ban_type = " . BAN_IP . " AND is_regex = 0 ) OR \n" . " ( ban_type = " . BAN_IP . " AND is_regex = 1 AND '{$_SERVER['REMOTE_ADDR']}' ~ ban_value ) OR \n" - . " ( ban_type = " . BAN_USER . " AND is_regex = 0 AND ban_value = '{$this->username}' ) OR \n" - . " ( ban_type = " . BAN_USER . " AND is_regex = 1 AND '{$this->username}' ~ ban_value ) OR \n" - . " ( ban_type = " . BAN_EMAIL . " AND is_regex = 0 AND ban_value = '{$this->email}' ) OR \n" - . " ( ban_type = " . BAN_EMAIL . " AND is_regex = 1 AND '{$this->email}' ~ ban_value ) \n" + . " ( ban_type = " . BAN_USER . " AND is_regex = 0 AND ban_value = '" . $db->escape($this->username) . "' ) OR \n" + . " ( ban_type = " . BAN_USER . " AND is_regex = 1 AND '" . $db->escape($this->username) . "' ~ ban_value ) OR \n" + . " ( ban_type = " . BAN_EMAIL . " AND is_regex = 0 AND ban_value = '" . $db->escape($this->email) . "' ) OR \n" + . " ( ban_type = " . BAN_EMAIL . " AND is_regex = 1 AND '" . $db->escape($this->email) . "' ~ ban_value ) \n" . " ORDER BY ban_type ASC;"; } $q = $this->sql($sql);