Date: Sun, 17 Jan 2016 05:50:45 +0000 From: bugzilla-noreply@freebsd.org To: freebsd-bugs@FreeBSD.org Subject: [Bug 206326] mandoc -r294113's parse assertion fd > 0 is failing: main's STDIN_FILENO use does not meet that criteria Message-ID: <bug-206326-8@https.bugs.freebsd.org/bugzilla/>
next in thread | raw e-mail | index | archive | help
https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=3D206326 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@FreeBSD.org Reporter: markmi@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 =3D 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 f= ile descriptor */ If main's parse call with STDIN_FILENO is to be valid then the assert needs= to be more like: assert(fd >=3D 0); (or an equivalent). The prior main.c revision (-r280025) used fd >=3D -1 fo= r 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.) --=20 You are receiving this mail because: You are the assignee for the bug.=
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?bug-206326-8>