]> git.ipfire.org Git - thirdparty/util-linux.git/commitdiff
tests: add sanitize_env() check
authorSami Kerola <kerolasa@iki.fi>
Sun, 12 Apr 2020 18:45:53 +0000 (19:45 +0100)
committerSami Kerola <kerolasa@iki.fi>
Mon, 13 Apr 2020 11:14:08 +0000 (12:14 +0100)
Signed-off-by: Sami Kerola <kerolasa@iki.fi>
lib/Makemodule.am
lib/env.c

index c9adf3faa0b36f218bd02e06720760971b5571fa..cab44480d1bbfcbc52088199948069d1243a3aad 100644 (file)
@@ -83,6 +83,7 @@ check_PROGRAMS += \
        test_pwdutils \
        test_mangle \
        test_randutils \
+       test_remove_env \
        test_strutils \
        test_ttyutils \
        test_timeutils
@@ -182,3 +183,6 @@ test_timeutils_CFLAGS = $(AM_CFLAGS) -DTEST_PROGRAM_TIMEUTILS
 
 test_pwdutils_SOURCES = lib/pwdutils.c
 test_pwdutils_CFLAGS = $(AM_CFLAGS) -DTEST_PROGRAM
+
+test_remove_env_SOURCES = lib/env.c
+test_remove_env_CFLAGS = $(AM_CFLAGS) -DTEST_PROGRAM
index b2e3d975a8d3737589ae2e28ecd633033aed7e6c..ea7d457827854966b1ccfd7de7fdb294d3f15290 100644 (file)
--- a/lib/env.c
+++ b/lib/env.c
@@ -107,3 +107,34 @@ return secure_getenv(arg);
        return getenv(arg);
 #endif
 }
+
+#ifdef TEST_PROGRAM
+int main(int argc, char **argv)
+{
+       char *const *bad;
+       char copy[32];
+       char *p;
+       int retval = EXIT_SUCCESS;
+
+       for (bad = forbid; *bad; bad++) {
+               strcpy(copy, *bad);
+               p = strchr(copy, '=');
+               if (p)
+                       *p = '\0';
+               setenv(copy, copy, 1);
+       }
+       sanitize_env();
+       for (bad = forbid; *bad; bad++) {
+               strcpy(copy, *bad);
+               p = strchr(copy, '=');
+               if (p)
+                       *p = '\0';
+               p = getenv(copy);
+               if (p) {
+                       warnx("%s was not removed", copy);
+                       retval = EXIT_FAILURE;
+               }
+       }
+       return retval;
+}
+#endif