*** /usr/src/lib/libc/gen/getvfsent.c	1996/03/11 03:06:43	1.6
--- /usr/src/lib/libc/gen/getvfsent.c	1996/05/17 18:20:56	1.5.4.1
***************
*** 17,22 ****
--- 17,24 ----
  #include <errno.h>
  #include <paths.h>
  
+ #define _PATH_MODLOAD	"/sbin/modload"	/* XXX should be in header file */
+ 
  static struct vfsconf *_vfslist = 0;
  static struct vfsconf _vfsconf;
  static size_t _vfslistlen = 0;
***************
*** 171,177 ****
  	char *userdir = getenv("LKMDIR");
  	int i;
  
! 	if(userdir) {
  		vfs_lkmdirs[NLKMDIRS - 2] = userdir;
  	}
  
--- 173,179 ----
  	char *userdir = getenv("LKMDIR");
  	int i;
  
! 	if(userdir && getuid() == geteuid() && getuid() == 0) {
  		vfs_lkmdirs[NLKMDIRS - 2] = userdir;
  	}
  
***************
*** 226,234 ****
  	}
  
  	status = -1;
! 	if(getenv("TMPDIR")) {
! 		status = chdir(getenv("TMPDIR"));
! 	}
  	if(status) {
  		status = chdir(_PATH_VARTMP);
  	}
--- 228,234 ----
  	}
  
  	status = -1;
! 	unsetenv("TMPDIR");
  	if(status) {
  		status = chdir(_PATH_VARTMP);
  	}
***************
*** 236,247 ****
  		status = chdir(_PATH_TMP);
  	}
  	if(status) {
! 		exit(status ? errno : 0);
  	}
  
  	snprintf(name_mod, sizeof name_mod, "%s%s", name, "_mod");
! 	status = execlp("modload", "modload", "-e", name_mod, "-o", name_mod,
! 			"-u", "-q", path, (const char *)0);
  
  	exit(status ? errno : 0);
  }
--- 236,247 ----
  		status = chdir(_PATH_TMP);
  	}
  	if(status) {
! 		exit(errno);
  	}
  
  	snprintf(name_mod, sizeof name_mod, "%s%s", name, "_mod");
! 	status = execl(_PATH_MODLOAD, "modload", "-e", name_mod, "-o",
! 		       name_mod, "-u", "-q", path, (const char *)0);
  
  	exit(status ? errno : 0);
  }