Skip site navigation (1)Skip section navigation (2)
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>