Date: Thu, 12 Sep 2019 14:34:47 +0000 (UTC) From: Kyle Evans <kevans@FreeBSD.org> To: src-committers@freebsd.org, svn-src-all@freebsd.org, svn-src-head@freebsd.org Subject: svn commit: r352245 - head/sys/kern Message-ID: <201909121434.x8CEYlip063537@repo.freebsd.org>
next in thread | raw e-mail | index | archive | help
Author: kevans Date: Thu Sep 12 14:34:46 2019 New Revision: 352245 URL: https://svnweb.freebsd.org/changeset/base/352245 Log: 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. Modified: head/sys/kern/kern_environment.c Modified: head/sys/kern/kern_environment.c ============================================================================== --- head/sys/kern/kern_environment.c Thu Sep 12 13:51:43 2019 (r352244) +++ head/sys/kern/kern_environment.c Thu Sep 12 14:34:46 2019 (r352245) @@ -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")); /*
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201909121434.x8CEYlip063537>