diff --git a/lib/mcpu.py b/lib/mcpu.py
index 9db223e792d6016c44244c6a7a1172163704bf70..7493f990a56f8a8dafb8514f3924b2989f50daa4 100644
--- a/lib/mcpu.py
+++ b/lib/mcpu.py
@@ -39,6 +39,7 @@ from ganeti import rpc
 from ganeti import cmdlib
 from ganeti import locking
 from ganeti import utils
+from ganeti import compat
 
 
 _OP_PREFIX = "Op"
@@ -448,10 +449,11 @@ class HooksMaster(object):
       }
 
     if self.lu.HPATH is not None:
-      lu_env, lu_nodes_pre, lu_nodes_post = self.lu.BuildHooksEnv()
+      (lu_env, lu_nodes_pre, lu_nodes_post) = self.lu.BuildHooksEnv()
       if lu_env:
-        for key in lu_env:
-          env["GANETI_" + key] = lu_env[key]
+        assert not compat.any(key.upper().startswith("GANETI")
+                              for key in lu_env)
+        env.update(("GANETI_%s" % key, value) for (key, value) in lu_env)
     else:
       lu_nodes_pre = lu_nodes_post = []
 
@@ -472,6 +474,10 @@ class HooksMaster(object):
 
     env = dict([(str(key), str(val)) for key, val in env.iteritems()])
 
+    assert compat.all(key == key.upper() and
+                      (key == "PATH" or key.startswith("GANETI_"))
+                      for key in env)
+
     return self.callfn(node_list, hpath, phase, env)
 
   def RunPhase(self, phase, nodes=None):