From 30e946ce8a9272b3de1a64498965933804b7bb6d Mon Sep 17 00:00:00 2001
From: Grzegorz Bizon <grzesiek.bizon@gmail.com>
Date: Tue, 14 Jun 2016 11:28:20 +0200
Subject: [PATCH] Validate ci config entry value before processing nodes

---
 lib/gitlab/ci/config/node/configurable.rb | 14 ++++++--------
 lib/gitlab/ci/config/node/entry.rb        |  5 +++++
 2 files changed, 11 insertions(+), 8 deletions(-)

diff --git a/lib/gitlab/ci/config/node/configurable.rb b/lib/gitlab/ci/config/node/configurable.rb
index 7587c8c34c9..d60f87f3f94 100644
--- a/lib/gitlab/ci/config/node/configurable.rb
+++ b/lib/gitlab/ci/config/node/configurable.rb
@@ -16,20 +16,18 @@ module Gitlab
         module Configurable
           extend ActiveSupport::Concern
 
-          def initialize(*)
-            super
-
-            unless @value.is_a?(Hash)
-              @errors << 'should be a configuration entry with hash value'
-            end
-          end
-
           def allowed_nodes
             self.class.allowed_nodes || {}
           end
 
           private
 
+          def prevalidate!
+            unless @value.is_a?(Hash)
+              @errors << 'should be a configuration entry with hash value'
+            end
+          end
+
           def create_node(key, factory)
             factory.with(value: @value[key])
             factory.nullify! unless @value.has_key?(key)
diff --git a/lib/gitlab/ci/config/node/entry.rb b/lib/gitlab/ci/config/node/entry.rb
index 507312e0c09..52758a962f3 100644
--- a/lib/gitlab/ci/config/node/entry.rb
+++ b/lib/gitlab/ci/config/node/entry.rb
@@ -14,6 +14,8 @@ module Gitlab
             @value = value
             @nodes = {}
             @errors = []
+
+            prevalidate!
           end
 
           def process!
@@ -56,6 +58,9 @@ module Gitlab
 
           private
 
+          def prevalidate!
+          end
+
           def compose!
             allowed_nodes.each do |key, essence|
               @nodes[key] = create_node(key, essence)
-- 
GitLab