Re: [CFT][patch] mandoc: don't segfault on empty tbl(1) continuation blocks

From: Ingo Schwarze <schwarze_at_usta.de>
Date: Thu, 18 Jul 2019 17:00:18 +0200
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 == NULL?  If so, where and
how exactly?

As far as i can see, cpp can indeed easily be NULL anywhere in 
tbl_hrule(), but it seems to me that for each access, != 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_at_ via bapt_at_ (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
_at__at_ -0,0 +1,19 _at__at_
+.\" $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_at_FreeBSD.org
+Eygene Ryabinkin
+.ME
--- /dev/null
+++ regress/tbl/data/block_empty.out_ascii
_at__at_ -0,0 +1,22 _at__at_
+TBL-DATA-BLOCK_EMPTY(1)     General Commands Manual    TBL-DATA-BLOCK_EMPTY(1)
+
+
+
+NNAAMMEE
+       tbl-data-block_empty - empty text block
+
+DDEESSCCRRIIPPTTIIOONN
+       normal text
+
+       +------+------+
+       |A     | test |
+       +------+------+
+       |table |      |
+       +------+------+
+
+AAUUTTHHOORRSS
+       Eygene Ryabinkin <rea_at_FreeBSD.org>
+
+
+
+OpenBSD                          July 17, 2019         TBL-DATA-BLOCK_EMPTY(1)
Index: Makefile
===================================================================
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 -r1.5
--- regress/tbl/data/Makefile
+++ regress/tbl/data/Makefile
_at__at_ -1,6 +1,7 _at__at_
-# $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 $
 
-REGRESS_TARGETS  = blankline block_unclosed block_width block_wrap empty insert
+REGRESS_TARGETS	 = blankline block_empty block_unclosed block_width
+REGRESS_TARGETS	+= block_wrap empty insert
 LINT_TARGETS	 = block_unclosed empty insert
 
 # groff-1.22.3 defect:
Received on Thu Jul 18 2019 - 13:00:24 UTC

This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:41:21 UTC