summaryrefslogtreecommitdiffstats
path: root/bin/sh/histedit.c
diff options
context:
space:
mode:
authorobrien <obrien@FreeBSD.org>2010-10-13 23:29:09 +0000
committerobrien <obrien@FreeBSD.org>2010-10-13 23:29:09 +0000
commit04029327665ca3c97ae07cae698d5df760f2b68e (patch)
tree21a2e1390b3cbd0e8029830cf4195a75dba0d1e7 /bin/sh/histedit.c
parent256615c9b37c8059eef0e130fbf813607a5396a8 (diff)
downloadFreeBSD-src-04029327665ca3c97ae07cae698d5df760f2b68e.zip
FreeBSD-src-04029327665ca3c97ae07cae698d5df760f2b68e.tar.gz
Do not assume in growstackstr() that a "precious" character will be
immediately written into the stack after the call. Instead let the caller manage the "space left". Previously, growstackstr()'s assumption causes problems with STACKSTRNUL() where we want to be able to turn a stack into a C string, and later pretend the NUL is not there. This fixes a bug in STACKSTRNUL() (that grew the stack) where: 1. STADJUST() called after a STACKSTRNUL() results in an improper adjust. This can be seen in ${var%pattern} and ${var%%pattern} evaluation. 2. Memory leak in STPUTC() called after a STACKSTRNUL(). Reviewed by: jilles
Diffstat (limited to 'bin/sh/histedit.c')
-rw-r--r--bin/sh/histedit.c2
1 files changed, 1 insertions, 1 deletions
diff --git a/bin/sh/histedit.c b/bin/sh/histedit.c
index 7773ad8..dab69f1 100644
--- a/bin/sh/histedit.c
+++ b/bin/sh/histedit.c
@@ -418,7 +418,7 @@ fc_replace(const char *s, char *p, char *r)
} else
STPUTC(*s++, dest);
}
- STACKSTRNUL(dest);
+ STPUTC('\0', dest);
dest = grabstackstr(dest);
return (dest);
OpenPOWER on IntegriCloud