]> git.ipfire.org Git - thirdparty/libvirt.git/commitdiff
Block all use of getenv with syntax-check
authorDaniel P. Berrange <berrange@redhat.com>
Wed, 9 Oct 2013 10:19:27 +0000 (11:19 +0100)
committerDaniel P. Berrange <berrange@redhat.com>
Wed, 30 Oct 2013 11:51:17 +0000 (11:51 +0000)
The use of getenv is typically insecure, and we want people
to use our wrappers, to force them to think about setuid
needs.

Signed-off-by: Daniel P. Berrange <berrange@redhat.com>
(cherry picked from commit 71b21f12bece1127b28b404f11f57b4c2d48983a)

cfg.mk
src/util/virutil.c

diff --git a/cfg.mk b/cfg.mk
index 9a9616c5ec1b42a9720b3c59e53b9564868f9fdb..e4f0eb1965104fd15a21139b9d697b74cfd1d5fa 100644 (file)
--- a/cfg.mk
+++ b/cfg.mk
@@ -842,6 +842,11 @@ sc_prohibit_unbounded_arrays_in_rpc:
        halt='Arrays in XDR must have a upper limit set for <NNN>'      \
          $(_sc_search_regexp)
 
+sc_prohibit_getenv:
+       @prohibit='\b(secure_)?getenv *\('                              \
+       exclude='exempt from syntax-check'                              \
+       halt='Use virGetEnv{Allow,Block}SUID instead of getenv'         \
+         $(_sc_search_regexp)
 
 # We don't use this feature of maint.mk.
 prev_version_file = /dev/null
@@ -1011,3 +1016,6 @@ exclude_file_name_regexp--sc_prohibit_include_public_headers_brackets = \
 
 exclude_file_name_regexp--sc_prohibit_int_ijk = \
   ^(src/remote_protocol-structs|src/remote/remote_protocol.x|cfg.mk|include/)$
+
+exclude_file_name_regexp--sc_prohibit_getenv = \
+  ^tests/.*\.[ch]$$
index bf19dc7d9953063057747800621c830dbd7f0138..face356c6018f9b098c1e2845b4b62af9291aa31 100644 (file)
@@ -2128,7 +2128,7 @@ cleanup:
  */
 const char *virGetEnvBlockSUID(const char *name)
 {
-    return secure_getenv(name);
+    return secure_getenv(name); /* exempt from syntax-check-rules */
 }
 
 
@@ -2142,7 +2142,7 @@ const char *virGetEnvBlockSUID(const char *name)
  */
 const char *virGetEnvAllowSUID(const char *name)
 {
-    return getenv(name);
+    return getenv(name); /* exempt from syntax-check-rules */
 }