[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