Hi!

The following change triggers a kernel trap 12 when env is NULL:

> @@ -260,8 +262,10 @@ void
>  freeenv(char *env)
>  {
>  
> -     if (dynamic_kenv)
> +     if (dynamic_kenv) {
> +             memset(env, 0, strlen(env));
>               free(env, M_KENV);
> +     }
>  }

This happens very early in boot for me, just after the lines:
    WARNING: WITNESS option enabled, expect reduced performance.
    VT: running with driver "vga".

The attached simple patch fixes the problem.

What I don't know is if the same problem can occur in kern_unsetenv():

> @@ -437,6 +441,7 @@ kern_unsetenv(const char *name)
>                       kenvp[i++] = kenvp[j];
>               kenvp[i] = NULL;
>               mtx_unlock(&kenv_lock);
> +             memset(oldenv, 0, strlen(oldenv));
>               free(oldenv, M_KENV);
>               return (0);
>       }

-- 
Jean-Sébastien Pédron
Index: sys/kern/kern_environment.c
===================================================================
--- sys/kern/kern_environment.c	(revision 273540)
+++ sys/kern/kern_environment.c	(working copy)
@@ -262,7 +262,7 @@
 freeenv(char *env)
 {
 
-	if (dynamic_kenv) {
+	if (dynamic_kenv && env != NULL) {
 		memset(env, 0, strlen(env));
 		free(env, M_KENV);
 	}

Attachment: signature.asc
Description: OpenPGP digital signature

Reply via email to