diff --git a/flag.inc b/flag.inc
index ca27db4..ddec792 100644
--- a/flag.inc
+++ b/flag.inc
@@ -581,6 +581,19 @@ class flag_flag {
         // User has no permission to flag/unflag this object.
         return FALSE;
       }
+      
+      // Make sure flag validates
+      $result = TRUE;
+      foreach (module_implements('flag_validate') as $module) {
+        $function = $module . '_flag_validate';
+        $result = $function($action, $this, $content_id, $account);
+        if ($result == FALSE) {
+          break;
+        }
+      }
+      if ($result == FALSE) {
+        return FALSE;
+      }
     }
     else {
       // We are skipping permission checks. However, at a minimum we must make
