Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 18 Jul 2019 17:00:18 +0200
From:      Ingo Schwarze <schwarze@usta.de>
To:        Baptiste Daroussin <bapt@FreeBSD.org>, Eygene Ryabinkin <rea@freebsd.org>
Cc:        freebsd-current@FreeBSD.org, tech@mandoc.bsd.lv
Subject:   Re: [CFT][patch] mandoc: don't segfault on empty tbl(1) continuation blocks
Message-ID:  <20190718150018.GB67545@athene.usta.de>
In-Reply-To: <20190717111655.eyq673itr76fj224@ivaldir.net>
References:  <20190716193124.yrrntrtah22aky5n@phoenix.codelabs.ru> <20190717071201.beem6et6dybhby7m@ivaldir.net> <20190717103942.fkunwe3utxvmdc5n@void.codelabs.ru> <20190717111655.eyq673itr76fj224@ivaldir.net>

next in thread | previous in thread | raw e-mail | index | archive | help
Hi Baptiste, hi Eygene,

Baptiste Daroussin wrote on Wed, Jul 17, 2019 at 01:16:56PM +0200:
> On Wed, Jul 17, 2019 at 01:39:42PM +0300, Eygene Ryabinkin wrote:

>> but I believe that 'cpp' still can be NULL and will try to see
>> if it is triggerable.

I'm not sure what you mean here.

Do you think that in tbl_hrule(), there is a possibility that *cpp
might still be accessed even though cpp =3D=3D NULL?  If so, where and
how exactly?

As far as i can see, cpp can indeed easily be NULL anywhere in=20
tbl_hrule(), but it seems to me that for each access, !=3D NULL
is checked immediately before.

If you still see a potential problem somewhere, please do speak up.
The table formatting logic is indeed complicated, so it's not
inconceivable that i still missed an edge case.

> As for the test case, the best would be that this test ends up
> incorporated in the upstream testsuite

Done, see the commit below.

Yours,
  Ingo


Log Message:
-----------
new test for an empty text block; from rea@ via bapt@ (FreeBSD)

Modified Files:
--------------
    mandoc/regress/tbl/data:
        Makefile

Added Files:
-----------
    mandoc/regress/tbl/data:
        block_empty.in
        block_empty.out_ascii

Revision Data
-------------
--- /dev/null
+++ regress/tbl/data/block_empty.in
@@ -0,0 +1,19 @@
+.\" $OpenBSD: block_empty.in,v 1.1 2019/07/18 14:38:47 schwarze Exp $
+.TH TBL-DATA-BLOCK_EMPTY 1 "July 17, 2019"
+.SH NAME
+tbl-data-block_empty \- empty text block
+.SH DESCRIPTION
+normal text
+.TS
+|l|l|.
+_
+A	test
+_
+table	T{
+T}
+_
+.TE
+.SH AUTHORS
+.MT rea@FreeBSD.org
+Eygene Ryabinkin
+.ME
--- /dev/null
+++ regress/tbl/data/block_empty.out_ascii
@@ -0,0 +1,22 @@
+TBL-DATA-BLOCK_EMPTY(1)     General Commands Manual    TBL-DATA-BLOCK_EMPT=
Y(1)
+
+
+
+N=08NA=08AM=08ME=08E
+       tbl-data-block_empty - empty text block
+
+D=08DE=08ES=08SC=08CR=08RI=08IP=08PT=08TI=08IO=08ON=08N
+       normal text
+
+       +------+------+
+       |A     | test |
+       +------+------+
+       |table |      |
+       +------+------+
+
+A=08AU=08UT=08TH=08HO=08OR=08RS=08S
+       Eygene Ryabinkin <rea@FreeBSD.org>
+
+
+
+OpenBSD                          July 17, 2019         TBL-DATA-BLOCK_EMPT=
Y(1)
Index: Makefile
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D
RCS file: /home/cvs/mandoc/mandoc/regress/tbl/data/Makefile,v
retrieving revision 1.4
retrieving revision 1.5
diff -Lregress/tbl/data/Makefile -Lregress/tbl/data/Makefile -u -p -r1.4 -r=
1.5
--- regress/tbl/data/Makefile
+++ regress/tbl/data/Makefile
@@ -1,6 +1,7 @@
-# $OpenBSD: Makefile,v 1.4 2017/07/04 20:59:17 schwarze Exp $
+# $OpenBSD: Makefile,v 1.5 2019/07/18 14:38:47 schwarze Exp $
=20
-REGRESS_TARGETS  =3D blankline block_unclosed block_width block_wrap empty=
 insert
+REGRESS_TARGETS	 =3D blankline block_empty block_unclosed block_width
+REGRESS_TARGETS	+=3D block_wrap empty insert
 LINT_TARGETS	 =3D block_unclosed empty insert
=20
 # groff-1.22.3 defect:



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20190718150018.GB67545>