From 73e29b3dc3910703e713b98695f4d176f352a1b4 Mon Sep 17 00:00:00 2001
From: Pavel A. Karoukin <pavel@karoukin.us>
Date: Sat, 10 Mar 2012 01:26:20 +0000
Subject: [PATCH] Fix SQL injection issue through node title.

---
 similar.module |   12 +++++++++---
 1 files changed, 9 insertions(+), 3 deletions(-)

diff --git a/similar.module b/similar.module
index 6e67583..ec1d67a 100755
--- a/similar.module
+++ b/similar.module
@@ -391,16 +391,22 @@ function theme_similar_content($variables) {
     }
   }
 
-  $expression = "(2 *(MATCH (r.title) AGAINST ('$text')))";
+  $expression_params = array();
+  $expression = "(2 *(MATCH (r.title) AGAINST (:expr_param)))";
+  $expression_params['expr_param'] = $text;
+
+  $param_count = 1;
   foreach ($selects as $field) {
-    $expression .= " + (MATCH ($field) AGAINST ('$text'))";
+    $param_count++;
+    $expression_params['expr_param_'. $param_count] = $text;
+    $expression .= " + (MATCH ($field) AGAINST (:expr_param_$param_count))";
   }
   $expression = "($expression)";
 
   //$fields = implode(", ", $selects);
   //$expression = "MATCH ($fields) AGAINST ('$text')";
 
-  $query->addExpression($expression, 'score');
+  $query->addExpression($expression, 'score', $expression_params);
   $query->condition('n.status', 0, '<>');
   $query->condition('r.nid', $node->nid, '<>');
   $query->condition('n.type', $types, 'IN');
-- 
1.7.0.4