mirror of
https://github.com/openbsd/src.git
synced 2025-01-10 06:47:55 -08:00
When the last line of the input is empty and the previous line reduced
the line input buffer to a length of one byte, do not write one byte past the end of the line input buffer. Minimal code to show the bug: printf ".ds X\n.X\n\n" | MALLOC_OPTIONS=C mandoc Bug found by bentley@ in the sysutils/rancid par(1) manual page.
This commit is contained in:
parent
9beccd0fdb
commit
18b6272148
@ -1,4 +1,4 @@
|
||||
/* $OpenBSD: read.c,v 1.182 2019/01/11 17:03:43 schwarze Exp $ */
|
||||
/* $OpenBSD: read.c,v 1.183 2019/03/19 16:25:38 schwarze Exp $ */
|
||||
/*
|
||||
* Copyright (c) 2008, 2009, 2010, 2011 Kristaps Dzonsons <kristaps@bsd.lv>
|
||||
* Copyright (c) 2010-2019 Ingo Schwarze <schwarze@openbsd.org>
|
||||
@ -253,6 +253,8 @@ mparse_buf_r(struct mparse *curp, struct buf blk, size_t i, int start)
|
||||
/* XXX Ugly hack to mark the end of the input. */
|
||||
|
||||
if (i == blk.sz || blk.buf[i] == '\0') {
|
||||
if (pos + 2 > ln.sz)
|
||||
resize_buf(&ln, 256);
|
||||
ln.buf[pos++] = '\n';
|
||||
ln.buf[pos] = '\0';
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user