source@mandoc.bsd.lv
 help / color / mirror / Atom feed
* mdocml: When trying to expand some columns in a table where the sum of
@ 2017-05-01 20:55 schwarze
  0 siblings, 0 replies; only message in thread
From: schwarze @ 2017-05-01 20:55 UTC (permalink / raw)
  To: source

Log Message:
-----------
When trying to expand some columns in a table where the sum of the
widths of the remaining columns is already wider than the line
length, underflowing size_t and dying from ENOMEM is the wrong plan.
Instead, simply refrain from expanding anything in such a situation,
avoiding a crash that tb@ found with afl.

Modified Files:
--------------
    mdocml:
        out.c
    mdocml/regress/tbl/mod:
        Makefile

Added Files:
-----------
    mdocml/regress/tbl/mod:
        expand-toowide.in
        expand-toowide.out_ascii

Revision Data
-------------
Index: out.c
===================================================================
RCS file: /home/cvs/mdocml/mdocml/out.c,v
retrieving revision 1.62
retrieving revision 1.63
diff -Lout.c -Lout.c -u -p -r1.62 -r1.63
--- out.c
+++ out.c
@@ -1,7 +1,7 @@
 /*	$Id$ */
 /*
  * Copyright (c) 2009, 2010, 2011 Kristaps Dzonsons <kristaps@bsd.lv>
- * Copyright (c) 2011, 2014, 2015 Ingo Schwarze <schwarze@openbsd.org>
+ * Copyright (c) 2011, 2014, 2015, 2017 Ingo Schwarze <schwarze@openbsd.org>
  *
  * Permission to use, copy, modify, and distribute this software for any
  * purpose with or without fee is hereby granted, provided that the above
@@ -197,9 +197,12 @@ tblcalc(struct rofftbl *tbl, const struc
 	 */
 
 	if (nxcol && totalwidth) {
-		xwidth = totalwidth - xwidth - 3*maxcol -
+		xwidth += 3*maxcol +
 		    (opts->opts & (TBL_OPT_BOX | TBL_OPT_DBOX) ?
 		     2 : !!opts->lvert + !!opts->rvert);
+		if (xwidth >= totalwidth)
+			return;
+		xwidth = totalwidth - xwidth;
 
 		/*
 		 * Emulate a bug in GNU tbl width calculation that
--- /dev/null
+++ regress/tbl/mod/expand-toowide.in
@@ -0,0 +1,15 @@
+.TH TBL-MOD-EXPAND-TOOWIDE 1 "May 1, 2017" OpenBSD
+.SH NAME
+tbl-mod-expand-toowide \- try to expand columns in a table
+that is already too wide
+.SH DESCRIPTION
+.ll 20n
+In this section, the line length is limited to 20 characters.
+.TS
+tab(:);
+lx l lx.
+x:1234567890:x
+.TE
+.ll 78n
+.PP
+Now we are back to the default terminal width.
Index: Makefile
===================================================================
RCS file: /home/cvs/mdocml/mdocml/regress/tbl/mod/Makefile,v
retrieving revision 1.1
retrieving revision 1.2
diff -Lregress/tbl/mod/Makefile -Lregress/tbl/mod/Makefile -u -p -r1.1 -r1.2
--- regress/tbl/mod/Makefile
+++ regress/tbl/mod/Makefile
@@ -1,6 +1,6 @@
 # $OpenBSD: Makefile,v 1.2 2015/02/10 11:02:19 schwarze Exp $
 
-REGRESS_TARGETS	 = badfont expand font misalign
+REGRESS_TARGETS	 = badfont expand expand-toowide font misalign
 LINT_TARGETS	 = badfont font
 
 # groff-1.22.3 defects:
--- /dev/null
+++ regress/tbl/mod/expand-toowide.out_ascii
@@ -0,0 +1,23 @@
+TBL-MOD-EXPAND-TOOWIDE(1)   General Commands Manual  TBL-MOD-EXPAND-TOOWIDE(1)
+
+
+
+N\bNA\bAM\bME\bE
+       tbl-mod-expand-toowide - try to expand columns in a table that is
+       already too wide
+
+D\bDE\bES\bSC\bCR\bRI\bIP\bPT\bTI\bIO\bON\bN
+       In this
+       section, the
+       line length
+       is limited to
+       20
+       characters.
+
+       x   1234567890   x
+
+       Now we are back to the default terminal width.
+
+
+
+OpenBSD                           May 1, 2017        TBL-MOD-EXPAND-TOOWIDE(1)
--
 To unsubscribe send an email to source+unsubscribe@mdocml.bsd.lv

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2017-05-01 20:55 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2017-05-01 20:55 mdocml: When trying to expand some columns in a table where the sum of schwarze

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).