env: don't SEGV on bare "env -"

Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
diff --git a/coreutils/env.c b/coreutils/env.c
index f50a03e..9635d2b 100644
--- a/coreutils/env.c
+++ b/coreutils/env.c
@@ -43,21 +43,20 @@
 int env_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE;
 int env_main(int argc UNUSED_PARAM, char **argv)
 {
-	char **ep;
-	unsigned opt;
+	unsigned opts;
 	llist_t *unset_env = NULL;
 
 	opt_complementary = "u::";
 #if ENABLE_FEATURE_ENV_LONG_OPTIONS
 	applet_long_options = env_longopts;
 #endif
-	opt = getopt32(argv, "+iu:", &unset_env);
+	opts = getopt32(argv, "+iu:", &unset_env);
 	argv += optind;
-	if (*argv && LONE_DASH(argv[0])) {
-		opt |= 1;
+	if (argv[0] && LONE_DASH(argv[0])) {
+		opts |= 1;
 		++argv;
 	}
-	if (opt & 1) {
+	if (opts & 1) {
 		clearenv();
 	}
 	while (unset_env) {
@@ -84,8 +83,11 @@
 		bb_simple_perror_msg_and_die(*argv);
 	}
 
-	for (ep = environ; *ep; ep++) {
-		puts(*ep);
+	if (environ) { /* clearenv() may set environ == NULL! */
+		char **ep;
+		for (ep = environ; *ep; ep++) {
+			puts(*ep);
+		}
 	}
 
 	fflush_stdout_and_exit(EXIT_SUCCESS);