From c8756077c3981f77b5cb1c24b98568fd74d4a310 Mon Sep 17 00:00:00 2001 From: Jim Meyering Date: Tue, 11 Jan 2005 16:54:02 +0000 Subject: [PATCH] (main): Check for overflow in tabstop values specified via the obsolete form. E.g., now this command fails: _POSIX2_VERSION=1 ./expand -$(echo '2^64+1'|bc) Before it would act like `_POSIX2_VERSION=1 ./expand -1'. --- src/expand.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/src/expand.c b/src/expand.c index e3584601a3..5ea16c07e8 100644 --- a/src/expand.c +++ b/src/expand.c @@ -1,5 +1,5 @@ /* expand - convert tabs to spaces - Copyright (C) 89, 91, 1995-2004 Free Software Foundation, Inc. + Copyright (C) 89, 91, 1995-2005 Free Software Foundation, Inc. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by @@ -420,7 +420,12 @@ main (int argc, char **argv) tabval = 0; have_tabval = true; } - tabval = tabval * 10 + c - '0'; + { + uintmax_t new_t = tabval * 10 + c - '0'; + if (UINTMAX_MAX / 10 < tabval || new_t < tabval * 10) + error (EXIT_FAILURE, 0, _("tab stop value is too large")); + tabval = new_t; + } obsolete_tablist = true; break; } -- 2.47.3