2.16. RHBA-2011:1072: new package: tcsh617
A new tcsh617 package, a replacement for the tcsh package that, among other fixes and enhancements, addresses various bugs of the tcsh package, is now available for Red Hat Enterprise Linux 5.
Important
This update was released as errata RHBA-2011:1072 – new package: tcsh617.
Tcsh
is a command language interpreter compatible with the C shell (csh
), which can be used as an interactive login shell, as well as a shell script command processor.
This new tcsh617 package serves as a replacement for the tcsh package, and upgrades
tcsh
to upstream version 6.17, which incorporates a number of bug fixes and enhancements over the previous version (6.14), which was released as a part of Red Hat Enterprise Linux 5.5. The tcsh package has been retained for compatibility with the older version of tcsh
.
The tcsh and tcsh617 packages are mutually-exclusive: both packages cannot be installed simultaneously. Users of
tcsh
who require the bug fixes and enhancements included in this upgraded package are advised to first uninstall the tcsh package and then install this new tcsh617 package. (BZ#676136)
Bug Fixes:
- BZ#676136
- The
tcsh
shell used to callmalloc()
-related functions inside signal handlers. This could causetcsh
to become unresponsive due to calling just-interrupted internalglibc
locking algorithms again. Operations related tomalloc()
were moved from signal handlers to common routines. - BZ#433908
- Previously, the
tcsh(1)
man page stated that the shell would not run a set-user ID script without an-b
argument. This statement was removed from the man page because it is forbidden to run set-user ID scripts in Red Hat Enterprise Linux 5. - BZ#436439
- Prior to this update, the
tcsh(1)
man page inaccurately stated that it is mandatory to use thegroup
option when using thenewgrp
built-in command. The corrected statement now says that usinggroup
is optional. - BZ#436901
- Previously, the
tcsh
shell allowed to name variables in incorrect formats, such as by beginning a variable name with a digit. This issue has been fixed: variable names are now verified according to Unix variable-naming conventions. - BZ#437079, BZ#437080
- The
tcsh(1)
man page inaccurately stated that thehup
andnohup
built-in commands, when used without an argument, can be used only within a shell script. The man page has been corrected: it now states that thehup
andnohup
built-in commands can be used when running the shell non-interactively. - BZ#618723
- When
tcsh
did not exit properly, it could have entered an infinite loop, using 100% of the CPU, and become unresponsive. This was caused by a function interrupting the exit routine and then re-entering the code and thus causing it to loop infinitely. - BZ#638955
- This package fixes the return value of the
status
(or$?
) variable in the case of pipelines and backquoted commands. Theanyerror
variable, which selects behavior, has been added to retain the backward compatibility. - BZ#650363
- When
tcsh
evaluated a backquoted command (using command substitution) which itself contained backquotes, it could have dumped core due to a buffer overflow. With this update, nested command substitutions are now handled correctly, andtcsh
no longer dumps core in this situation. - BZ#676305
- Previously, when the
LANG
environment variable was set toC
, thetcsh
shell could ignore several characters that were following a wide (greater than 8 bits) character while receiving user's input. This package fixes the issue andtcsh
no longer ignores any characters. - BZ#688170
- Previously, when a command was substituted using backquotes, a second, redundant
fork()
system call was performed. This could have caused problems when a child process needed to find the PID of itstcsh
parent. With this new package, only onefork()
is performed. - BZ#688173
- Previously, running
tcsh
in verbose mode caused the shell to append history to its output on exit. This new package fixes the issue andtcsh
now works as expected. - BZ#688175
- On a local machine,
tcsh
set theREMOTEHOST
environment variable to an empty string, even though this variable should only have been set on a remote machine. This error has been fixed andREMOTEHOST
is no longer set on a local machine. - BZ#689381
- Previously, if the
printexitvalue
variable was set,tcsh
returned the exit code number as a part of the command output, rendering the output unusable. This has happened due to a missing job status flag. The proper flag has been set and the command output is now correct. - BZ#689382
- Previously, under certain circumstances, a null pointer may have been incorrectly dereferenced, causing the
tcsh
shell to terminate unexpectedly. With this update, the pointer is now tested for theNULL
value before it is dereferenced, andtcsh
no longer crashes in this circumstance. - BZ#690500
- The
tcsh
shell entered an infinitive loop when standard output was redirected to a child process by a pipe. When the child process was terminated,tcsh
tried to print a message to the already-closed pipe as a high-priority event that could never finish. This has been fixed so in case that such child process terminates, the relevant error event is removed from the event queue before it could have been written to the broken pipe, and the parent process is terminated as well.
All users of the tcsh package who want to upgrade their version of tcsh to 6.17 are advised to uninstall the tcsh package and then install this upgraded tcsh617 package, which provides these bug fixes and enhancements.