[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Bash 2.05 test -t N mishandles large N values on 64-bit hosts
From: |
Paul Eggert |
Subject: |
Bash 2.05 test -t N mishandles large N values on 64-bit hosts |
Date: |
Mon, 30 Apr 2001 06:46:30 -0700 (PDT) |
From: eggert
To: bug-bash@gnu.org
Subject: [50 character or so descriptive subject here (for reference)]
Configuration Information [Automatically generated, do not change]:
Machine: sparc
OS: solaris2.7
Compiler: cc -xarch=v9
Compilation CFLAGS: -DPROGRAM='bash' -DCONF_HOSTTYPE='sparc'
-DCONF_OSTYPE='solaris2.7' -DCONF_MACHTYPE='sparc-sun-solaris2.7'
-DCONF_VENDOR='sun' -DSHELL -DHAVE_CONFIG_H -D_LARGEFILE_SOURCE
-D_FILE_OFFSET_BITS=64 -D_LARGEFILE64_SOURCE -I. -I.. -I../include -I../lib
-I/tmp/prefix/include -g
uname output: SunOS sic.twinsun.com 5.7 Generic_106541-15 sun4u sparc
SUNW,UltraSPARC-IIi-Engine
Machine Type: sparc-sun-solaris2.7
Bash Version: 2.05
Patch Level: 0
Release Status: release
Description:
Bash 2.05's "test -t" builtin mishandles large arguments on hosts
where 'long' is wider than 'int'.
Repeat-By:
$ test -t 4294967296 && echo bug
bug
4294967296 is not a valid terminal file descriptor, but Bash
internally converts it to 'int', which drops the top bit and
becomes 0, and since 0 is a terminal file descriptor the test
improperly succeeds.
Fix:
2001-04-30 Paul Eggert <eggert@twinsun.com>
* test.c (unary_test): Fail if argument to -t does not fit in 'int'.
===================================================================
RCS file: test.c,v
retrieving revision 2.5.0.2
retrieving revision 2.5.0.3
diff -pu -r2.5.0.2 -r2.5.0.3
--- test.c 2001/04/13 08:15:26 2.5.0.2
+++ test.c 2001/04/30 13:42:15 2.5.0.3
@@ -679,7 +679,7 @@ unary_test (op, arg)
case 't': /* File fd is a terminal? */
if (legal_number (arg, &r) == 0)
return (FALSE);
- return (isatty ((int)r));
+ return (r == (int) r && isatty ((int) r));
case 'n': /* True if arg has some length. */
return (arg[0] != '\0');
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- Bash 2.05 test -t N mishandles large N values on 64-bit hosts,
Paul Eggert <=