# HG changeset patch # User Dan Fuhry # Date 1289928701 18000 # Node ID 6012710ae538f22d17e3702a61076123bcd6ed49 # Parent 7365c9bf2106c272904733c8524a6169cd3b6bc5 SECURITY: Fix SQL injection in banlist check (1.1.7 branch) diff -r 7365c9bf2106 -r 6012710ae538 includes/sessions.php --- a/includes/sessions.php Thu Jul 01 18:24:11 2010 -0400 +++ b/includes/sessions.php Tue Nov 16 12:31:41 2010 -0500 @@ -1780,10 +1780,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' ) @@ -1791,10 +1791,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);