Follow up r352244: kenv: tighten up assertions

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.
This commit is contained in:
kevans 2019-09-12 14:34:46 +00:00
parent a93af05fb9
commit ae79efc996

View File

@ -250,7 +250,15 @@ init_static_kenv(char *buf, size_t len)
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"));
/*