Bug 206326 - mandoc -r294113's parse assertion fd > 0 is failing: main's STDIN_FILENO use does not meet that criteria
Summary: mandoc -r294113's parse assertion fd > 0 is failing: main's STDIN_FILENO use...
Status: Closed Overcome By Events
Alias: None
Product: Base System
Classification: Unclassified
Component: bin (show other bugs)
Version: CURRENT
Hardware: Any Any
: --- Affects Many People
Assignee: Baptiste Daroussin
URL: https://svnweb.freebsd.org/base?view=...
Keywords:
Depends on:
Blocks:
 
Reported: 2016-01-17 05:50 UTC by Mark Millard
Modified: 2016-05-07 11:34 UTC (History)
0 users

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Mark Millard 2016-01-17 05:50:45 UTC
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.)
Comment 1 Mark Linimon freebsd_committer freebsd_triage 2016-01-31 12:45:53 UTC
Over to committer of 294113.
Comment 2 Baptiste Daroussin freebsd_committer freebsd_triage 2016-05-07 11:34:12 UTC
This has been fixed in the meantime, thanks for reporting and sorry for the delay in the reply