[Bug 206326] mandoc -r294113's parse assertion fd > 0 is failing: main's STDIN_FILENO use does not meet that criteria
bugzilla-noreply at freebsd.org
bugzilla-noreply at freebsd.org
Sun Jan 17 05:50:46 UTC 2016
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=206326
Bug ID: 206326
Summary: mandoc -r294113's parse assertion fd > 0 is failing:
main's STDIN_FILENO use does not meet that criteria
Product: Base System
Version: 11.0-CURRENT
Hardware: Any
OS: Any
Status: New
Severity: Affects Many People
Priority: ---
Component: bin
Assignee: freebsd-bugs at FreeBSD.org
Reporter: markmi at dsl-only.net
mandoc is crashing via an assert as of any build based on
contrib/madocml/main.c -r294113. The 2nd assert below is failing:
static void
parse(struct curparse *curp, int fd, const char *file)
{
enum mandoclevel rctmp;
struct roff_man *man;
/* Begin by parsing the file itself. */
assert(file);
assert(fd > 0);
. . .
This is because:
int
main(int argc, char *argv[])
{
. . .
if (argc < 1) {
if (use_pager)
tag_files = tag_init();
parse(&curp, STDIN_FILENO, "<stdin>");
}
but STDIN_FILENO is zero:
# grep STDIN_FILENO /usr/include/*
/usr/include/roken-common.h:#ifndef STDIN_FILENO
/usr/include/roken-common.h:#define STDIN_FILENO 0
/usr/include/unistd.h:#define STDIN_FILENO 0 /* standard input file
descriptor */
If main's parse call with STDIN_FILENO is to be valid then the assert needs to
be more like:
assert(fd >= 0);
(or an equivalent). The prior main.c revision (-r280025) used fd >= -1 for some
reason. That would not fail the assertion for STDIN_FILENO but would allow -1
without failing the assertion as well. (I've no clue why -1 was allowed back
then.)
--
You are receiving this mail because:
You are the assignee for the bug.
More information about the freebsd-bugs
mailing list