[PATCH] var: Restore double NUL on unset variables
Herbert Xu <[email protected]> Sat, 13 Jun 2026 12:50:53 +0800
| Newsgroups | org.kernel.vger.dash |
|---|---|
| Message-ID | <[email protected]> |
This reverts commit 6d8a11f801b41b629d0ad3c71fc5298354ae99ef which
incorrectly removed the second NUL character for unset variables.
Without this NUL character the unset variables could become garbage
when used in dash internally (e.g., ps1val()).
Fixes: 6d8a11f801b4 ("Eliminate first null termination in setvar.")
Signed-off-by: Herbert Xu <[email protected]>
diff --git a/src/var.c b/src/var.c
index eb4075f..6e0671a 100644
--- a/src/var.c
+++ b/src/var.c
@@ -210,9 +210,9 @@ struct var *setvar(const char *name, const char *val, int flags)
vallen = strlen(val);
}
INTOFF;
- p = mempcpy(nameeq = ckmalloc(namelen + vallen + 2), name, namelen);
+ p = mempcpy(nameeq = ckmalloc(namelen + vallen + 2), name, namelen + 1);
if (val) {
- *p++ = '=';
+ p[-1] = '=';
p = mempcpy(p, val, vallen);
}
*p = '\0';
--
Email: Herbert Xu <[email protected]>
Home Page: http://gondor.apana.org.au/~herbert/
PGP Key: http://gondor.apana.org.au/~herbert/pubkey.txt