From 9de74a9149b4bac9dc7a358d278e47de7ea0c756 Mon Sep 17 00:00:00 2001 From: Cameron Date: Sat, 30 Jan 2016 17:11:32 -0800 Subject: [PATCH] Fixes #1255 Database Verification false positive. --- e107_handlers/db_verify_class.php | 30 ++++++++++++++++++++++-------- 1 file changed, 22 insertions(+), 8 deletions(-) diff --git a/e107_handlers/db_verify_class.php b/e107_handlers/db_verify_class.php index 2cb30d6c4..b35c0d5e4 100644 --- a/e107_handlers/db_verify_class.php +++ b/e107_handlers/db_verify_class.php @@ -219,9 +219,14 @@ class db_verify // echo "missing table: $tbl"; continue; } - + + // echo "

RAW

"; + // print_a($rawSqlData); + $sqlDataArr = $this->getTables($rawSqlData); - + // echo "

PARSED

"; + // print_a($sqlDataArr); + $fileFieldData = $this->getFields($this->tables[$selection]['data'][$key]); $sqlFieldData = $this->getFields($sqlDataArr['data'][0]); @@ -735,16 +740,18 @@ class db_verify } $ret = array(); - + $sql_data = preg_replace("#\/\*.*?\*\/#mis", '', $sql_data); // remove comments - + // echo "

SqlData

"; + // print_a($sql_data); // $regex = "/CREATE TABLE `?([\w]*)`?\s*?\(([\s\w\+\-_\(\),'\. `]*)\)\s*(ENGINE|TYPE)\s*?=\s?([\w]*)[\w =]*;/i"; - - $regex = "/CREATE TABLE (?:IF NOT EXISTS )?`?([\w]*)`?\s*?\(([\s\w\+\-_\(\),'\. `]*)\)\s*(ENGINE|TYPE)\s*?=\s?([\w]*)[\w =]*;/i"; + + $regex = "/CREATE TABLE (?:IF NOT EXISTS )?`?([\w]*)`?\s*?\(([\s\w\+\-_\(\),:'\. `]*)\)\s*(ENGINE|TYPE)\s*?=\s?([\w]*)[\w =]*;/i"; $table = preg_match_all($regex,$sql_data,$match); + $tables = array(); @@ -790,8 +797,15 @@ class db_verify $mes = e107::getMessage(); // $regex = "/`?([\w]*)`?\s*?(".implode("|",$this->fieldTypes)."|".implode("|",$this->fieldTypeNum).")\s?(?:\([\s]?([0-9,]*)[\s]?\))?[\s]?(unsigned)?[\s]?.*?(?:(NOT NULL|NULL))?[\s]*(auto_increment|default .*)?[\s]?(?:PRIMARY KEY)?[\s]*?,?\s*?\n/im"; - $regex = "/^\s*?`?([\w]*)`?\s*?(".implode("|",$this->fieldTypes)."|".implode("|",$this->fieldTypeNum).")\s?(?:\([\s]?([0-9,]*)[\s]?\))?[\s]?(unsigned)?[\s]?.*?(?:(NOT NULL|NULL))?[\s]*(auto_increment|default [\w'.-]*)?[\s]?(comment [\w\s'.-]*)?[\s]?(?:PRIMARY KEY)?[\s]*?,?\s*?\n/im"; - + $regex = "/^\s*?`?([\w]*)`?\s*?(".implode("|",$this->fieldTypes)."|".implode("|",$this->fieldTypeNum).")\s?(?:\([\s]?([0-9,]*)[\s]?\))?[\s]?(unsigned)?[\s]?.*?(?:(NOT NULL|NULL))?[\s]*(auto_increment|default|AUTO_INCREMENT|DEFAULT [\w'\s.\(:\)-]*)?[\s]?(comment [\w\s'.-]*)?[\s]?(?:PRIMARY KEY)?[\s]*?,?\s*?\n/im"; + + if(e_DEBUG) + { + // e107::getMessage()->addDebug("Regex: ".print_a($data,true)); + // e107::getMessage()->addDebug("Regex: ".$regex); + + } + // echo $regex."

"; // $regex = "/`?([\w]*)`?\s*(int|varchar|tinyint|smallint|text|char|tinyint) ?(?:\([\s]?([0-9]*)[\s]?\))?[\s]?(unsigned)?[\s]?.*?(NOT NULL|NULL)?[\s]*(auto_increment|default .*)?[\s]?,/i";