From 69dd502a67e421fe48f76ba10e1a259c9969b747 Mon Sep 17 00:00:00 2001 From: Ingo Schwarze Date: Mon, 1 May 2017 20:54:59 +0000 Subject: 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. --- out.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) (limited to 'out.c') diff --git a/out.c b/out.c index aff35583..22cdfbba 100644 --- a/out.c +++ b/out.c @@ -1,7 +1,7 @@ -/* $Id: out.c,v 1.62 2015/10/12 00:08:16 schwarze Exp $ */ +/* $Id: out.c,v 1.63 2017/05/01 20:54:59 schwarze Exp $ */ /* * Copyright (c) 2009, 2010, 2011 Kristaps Dzonsons - * Copyright (c) 2011, 2014, 2015 Ingo Schwarze + * Copyright (c) 2011, 2014, 2015, 2017 Ingo Schwarze * * 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 struct tbl_span *sp, */ 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 -- cgit v1.2.3