As I like to forget: static kenv var formatting is actually such that an
empty environment would be double null bytes. We should make sure that a
non-zero buffer has at least enough for this, though most of the current
usage is with a 4k buffer.
char *eval;
KASSERT(!dynamic_kenv, ("kenv: dynamic_kenv already initialized"));
- KASSERT(len == 0 || *buf == '\0',
+ /*
+ * Suitably sized means it must be able to hold at least one empty
+ * variable, otherwise things go belly up if a kern_getenv call is
+ * made without a prior call to kern_setenv as we have a malformed
+ * environment.
+ */
+ KASSERT(len == 0 || len >= 2,
+ ("kenv: static env must be initialized or suitably sized"));
+ KASSERT(len == 0 || (*buf == '\0' && *(buf + 1) == '\0'),
("kenv: sized buffer must be initially empty"));
/*