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); }
signature.asc
Description: OpenPGP digital signature