From 77591074caa08df225540d735aa8a986d99c1ba9 Mon Sep 17 00:00:00 2001 From: Uma <uma.s@vtiger.com> Date: Tue, 10 Sep 2019 18:23:44 +0530 Subject: [PATCH] Query Sanitization and parametrization --- modules/Calendar/Activity.php | 2 ++ modules/Campaigns/models/Record.php | 4 ++-- modules/Emails/Emails.php | 1 + modules/Emails/models/Module.php | 6 +++--- 4 files changed, 8 insertions(+), 5 deletions(-) diff --git a/modules/Calendar/Activity.php b/modules/Calendar/Activity.php index 77f4cb79a..e40a285a6 100644 --- a/modules/Calendar/Activity.php +++ b/modules/Calendar/Activity.php @@ -1165,6 +1165,8 @@ function insertIntoRecurringTable(& $recurObj) $tabId = getTabid("Calendar"); $eventTempTable = 'vt_tmp_u'.$userModel->id.'_t'.$tabId.'_events'.$scope; $taskTempTable = 'vt_tmp_u'.$userModel->id.'_t'.$tabId.'_task'.$scope; + $eventTempTable = Vtiger_Util_Helper::validateStringForSql($eventTempTable); + $taskTempTable = Vtiger_Util_Helper::validateStringForSql($taskTempTable); $query = " ($eventTempTable.shared IS NOT NULL OR $taskTempTable.shared IS NOT NULL) "; } return $query; diff --git a/modules/Campaigns/models/Record.php b/modules/Campaigns/models/Record.php index 718d22e99..1aa1e5373 100644 --- a/modules/Campaigns/models/Record.php +++ b/modules/Campaigns/models/Record.php @@ -29,10 +29,10 @@ class Campaigns_Record_Model extends Vtiger_Record_Model { INNER JOIN vtiger_crmentity ON $tableName.$fieldName = vtiger_crmentity.crmid AND vtiger_crmentity.deleted = ? WHERE campaignid = ?"; if ($excludedIds) { - $query .= " AND $fieldName NOT IN (". implode(',', $excludedIds) .")"; + $query .= " AND $fieldName NOT IN (". generateQuestionMarks($excludedIds) .")"; } - $result = $db->pquery($query, array(0, $this->getId())); + $result = $db->pquery($query, array(0, $this->getId(), $excludedIds)); $numOfRows = $db->num_rows($result); $selectedIdsList = array(); diff --git a/modules/Emails/Emails.php b/modules/Emails/Emails.php index f3dac4473..19316b7a2 100644 --- a/modules/Emails/Emails.php +++ b/modules/Emails/Emails.php @@ -550,6 +550,7 @@ class Emails extends CRMEntity { $module = getTabname($tabId); } $query = $this->getNonAdminAccessQuery($module, $user, $parentRole, $userGroups); + $tableName = Vtiger_Util_Helper::validateStringForSql($tableName); $query = "create temporary table IF NOT EXISTS $tableName(id int(11) primary key, shared int(1) default 0) ignore ".$query; $db = PearDatabase::getInstance(); $result = $db->pquery($query, array()); diff --git a/modules/Emails/models/Module.php b/modules/Emails/models/Module.php index c591f976d..15a6487db 100644 --- a/modules/Emails/models/Module.php +++ b/modules/Emails/models/Module.php @@ -88,8 +88,8 @@ class Emails_Module_Model extends Vtiger_Module_Model{ $query = "SELECT vtiger_emailslookup.crmid, vtiger_emailslookup.setype, vtiger_emailslookup.value, vtiger_crmentity.label FROM vtiger_emailslookup INNER JOIN vtiger_crmentity on vtiger_crmentity.crmid = vtiger_emailslookup.crmid AND vtiger_crmentity.deleted=0 WHERE - vtiger_emailslookup.fieldid in (".implode(',', $fieldIds).") and - vtiger_emailslookup.setype in (".implode(',', $activeModules).") + vtiger_emailslookup.fieldid in (".generateQuestionMarks($fieldIds).") and + vtiger_emailslookup.setype in (".generateQuestionMarks($activeModules).") and (vtiger_emailslookup.value LIKE ? OR vtiger_crmentity.label LIKE ?)"; $emailOptOutIds = $this->getEmailOptOutRecordIds(); @@ -97,7 +97,7 @@ class Emails_Module_Model extends Vtiger_Module_Model{ $query .= " AND vtiger_emailslookup.crmid NOT IN (".implode(',', $emailOptOutIds).")"; } - $result = $db->pquery($query, array('%'.$searchValue.'%', '%'.$searchValue.'%')); + $result = $db->pquery($query, array($fieldIds, $activeModules, '%'.$searchValue.'%', '%'.$searchValue.'%')); $isAdmin = is_admin($current_user); while ($row = $db->fetchByAssoc($result)) { if (!$isAdmin) { -- GitLab