From 587867d610337f40b191fc7946cdb875cdc7193f Mon Sep 17 00:00:00 2001 From: Fumitoshi UKAI Date: Fri, 15 Nov 2002 16:00:33 +0000 Subject: [w3m-dev 03438] Re: segmentation fault by large complex table. * table.c (check_table_height): check MAXROWCELL * table.h (MAXROWCELL): added From: Hironori SAKAMOTO --- ChangeLog | 8 +++++++- table.c | 4 +++- table.h | 3 ++- 3 files changed, 12 insertions(+), 3 deletions(-) diff --git a/ChangeLog b/ChangeLog index ee9c774..66f744e 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,9 @@ +2002-11-16 Hironori SAKAMOTO + + * [w3m-dev 03438] Re: segmentation fault by large complex table. + * table.c (check_table_height): check MAXROWCELL + * table.h (MAXROWCELL): added + 2002-11-16 Hironori SAKAMOTO * [w3m-dev 03437] Re: Check image size @@ -4779,4 +4785,4 @@ a * [w3m-dev 03276] compile error on EWS4800 * release-0-2-1 * import w3m-0.2.1 -$Id: ChangeLog,v 1.521 2002/11/15 15:58:27 ukai Exp $ +$Id: ChangeLog,v 1.522 2002/11/15 16:00:33 ukai Exp $ diff --git a/table.c b/table.c index cab6ca4..4842b4b 100644 --- a/table.c +++ b/table.c @@ -1,4 +1,4 @@ -/* $Id: table.c,v 1.29 2002/11/05 16:43:10 ukai Exp $ */ +/* $Id: table.c,v 1.30 2002/11/15 16:00:33 ukai Exp $ */ /* * HTML table */ @@ -1518,6 +1518,8 @@ check_table_height(struct table *t) if (cell.row[idx] == j && cell.rowspan[idx] == rowspan) c = idx; } + if (c >= MAXROWCELL) + continue; if (c >= cell.size) { if (cell.size == 0) { cell.size = max(MAXCELL, c + 1); diff --git a/table.h b/table.h index 3d3f393..f206f70 100644 --- a/table.h +++ b/table.h @@ -1,4 +1,4 @@ -/* $Id: table.h,v 1.6 2002/11/05 15:45:53 ukai Exp $ */ +/* $Id: table.h,v 1.7 2002/11/15 16:00:34 ukai Exp $ */ #if (defined(MESCHACH) && !defined(MATRIX)) #define MATRIX #endif /* (defined(MESCHACH) && !defined(MATRIX)) */ @@ -34,6 +34,7 @@ typedef unsigned short table_attr; #define TBL_IN_COL 4 #define MAXCELL 20 +#define MAXROWCELL 1000 struct table_cell { short col[MAXCELL]; short colspan[MAXCELL]; -- cgit v1.2.3