svn commit: r199981 - stable/7/libexec/rtld-elf

Colin Percival cperciva at FreeBSD.org
Tue Dec 1 03:00:16 UTC 2009


Author: cperciva
Date: Tue Dec  1 03:00:16 2009
New Revision: 199981
URL: http://svn.freebsd.org/changeset/base/199981

Log:
  MFC r199979: Fix local root vulnerability.

Modified:
  stable/7/libexec/rtld-elf/rtld.c
Directory Properties:
  stable/7/libexec/rtld-elf/   (props changed)

Modified: stable/7/libexec/rtld-elf/rtld.c
==============================================================================
--- stable/7/libexec/rtld-elf/rtld.c	Tue Dec  1 02:59:22 2009	(r199980)
+++ stable/7/libexec/rtld-elf/rtld.c	Tue Dec  1 03:00:16 2009	(r199981)
@@ -361,12 +361,12 @@ _rtld(Elf_Addr *sp, func_ptr_type *exit_
      * future processes to honor the potentially un-safe variables.
      */
     if (!trust) {
-        unsetenv(LD_ "PRELOAD");
-        unsetenv(LD_ "LIBMAP");
-        unsetenv(LD_ "LIBRARY_PATH");
-        unsetenv(LD_ "LIBMAP_DISABLE");
-        unsetenv(LD_ "DEBUG");
-        unsetenv(LD_ "ELF_HINTS_PATH");
+        if (unsetenv(LD_ "PRELOAD") || unsetenv(LD_ "LIBMAP") ||
+	    unsetenv(LD_ "LIBRARY_PATH") || unsetenv(LD_ "LIBMAP_DISABLE") ||
+	    unsetenv(LD_ "DEBUG") || unsetenv(LD_ "ELF_HINTS_PATH")) {
+		_rtld_error("environment corrupt; aborting");
+		die();
+	}
     }
     ld_debug = getenv(LD_ "DEBUG");
     libmap_disable = getenv(LD_ "LIBMAP_DISABLE") != NULL;


More information about the svn-src-all mailing list