Patch Name: PHCO_13661 Patch Description: s700_800 10.20 POSIX shell cumulative patch Creation Date: 98/01/09 Post Date: 98/01/16 Hardware Platforms - OS Releases: s700: 10.20 s800: 10.20 Products: N/A Filesets: OS-Core.UX-CORE OS-Core.CORE-ENG-A-MAN Automatic Reboot?: No Status: General Superseded Critical: No Path Name: /hp-ux_patches/s700_800/10.X/PHCO_13661 Symptoms: PHCO_13661: Problem with set -e in ksh: When set -e is on, ksh does not exit on encountering error while expanding the word list in a for statement. This happens even in a case statement and a pipe list. Scripts like the following do not exit on error. set -e for i in `sort a_non_existant_file` do echo Hello $i done echo "return code is " $? " -> Should not display this." PHCO_13359: 1) Posix Shell leaves /tmp/shxxx files after it's execution. PHCO_10718: 1) When sh-posix sees history file (using old internal magic cookies) of pre-10.10 release, it simply unlinks (discards) that history file. 2) The test command fails even when supplementary group permission is present. 3) If shell scripts having execute permission set and does not have read permission, when executed, it starts spawning new copies of the script until the process table fills. PHCO_10066: When sh-posix is executing a process in the foreground and the terminal is resized, then after the completion of foreground process, the LINES and COLUMNS environment variables are not updated. PHCO_9925: Certain shell scripts does not work correctly when executed by posix shell when LANG set to multibyte character set. Adding some comments or empty lines sometimes solve the problem. PHCO_9227: 1) While using in-line command editing, characters would sometimes appear that had not been typed by the user, most commonly ^B. Also, in editing long history lines, especially near the end of the lines, garbage characters would appear and the line couldn't be edited properly. 2) Posix shell when invoked with -c or called by the system() library call did not read commands from $ENV file. 3) When Posix shell scripts were run with sh -c or system() calls, environment variables were being set or changed incorrectly. E.g. sh -c "VAR=x a.out; echo \$VAR" should echo a blank, but instead echoes "x" because VAR was changed in the parent's environment. 4) In Posix shell scripts run with sh -c or system() calls and including embedded "here" documents, temporary files (/tmp/sh?????.?) were not removed upon completion. E.g. sh -c "cat <<= hello =" left a file (/tmp/sh?????.?). PHCO_8785: 1) A trap set within a function has no effect after the function returns. For example, trap 'echo exiting' EXIT f() { trap 'echo alternate' EXIT } f will produce output: alternate exiting Correct output for a POSIX compliant shell is: alternate 2) exit called from within a sourced file ( . file ) from within a function exits the sourced file, but not the shell. For example, if file t1 contains: f() { . ./t2 } f echo should not get here and file t2 contains exit Output is "should not get here", but this script should produce no output. 3) Some builtin commands cause the shell to exit when the command contains a syntax error. For example, ( fc -e ; echo code = $? ; exit 0 ) ; echo $? should output: sh: fc: Specify a parameter with this command. code = 1 0 but instead produces: sh: fc: Specify a parameter with this command. 1 4) When a here-document is used on the left side of a pipeline that is put into the background, the shell sometimes fails to open temporary files. For example, cat < Should not display this." PHCO_13359: 1) posix-sh leaves /tmp/shxxx file after it's execution. These temprorary files are created by posix-sh while processing here-docs. But when here-docs are define in nested loops , sh was not able to keep track of the temporary files. PHCO_10718: 1) Since the internal magic cookies (H_UNDO & H_CMDNO) used in history file were valid multibyte characters, the cookies were changed to and hence aviod ambiguity when a history file is read in multibyte locales, the old history files were simply discarded. 2) The code segment that checks the supplementary group permissions for the test command was not included for compilation. And hence the test command failed even when supplementary group permission was present. 3) If shell scripts having execute permission set and do not have read permission, when executed, start spawning new copies of the script without considering the value returned by open(O_RDONLY). PHCO_10066: Since SIGWINCH is posted only to foreground process group, the resize won't be notified to the sh-posix. So, sh-posix before displaying next prompt has to check for any change in the terminal information with respect to previous height and width information and if any change is found, the LINES and COLUMNS variables are updated. PHCO_9925: When it works with multibyte characters, it incorrectly reads characters from the shell script file when multibyte characters lies in the buffer boundary. This results in, shell arbitrarily reporting errors, when parsing. PHCO_9227: 1) While using in-line command editing, untyped characters would sometimes appear, most often ^B. These occurred most typically when very long command lines had been created. Also, in editing long history lines, especially near the end of the lines, garbage characters would appear and the line couldn't be edited properly. 2) Posix shell when invoked with -c or called by the system() library call did not read commands from $ENV file. The $ENV file is executed at the beginning of each shell invocation. This was not being done for "-c" or system() usage. 3) When using sh -c "command" or the system() library call, any shell variables assignment made as a prefix to a command would remain in the environment for subsequent commands. 4) When using sh -c "command" or the system() library call with a here-doc, temporary files (/tmp/sh?????.?) were not being removed from /tmp. PHCO_8785: 1) A trap set within a function has no effect after the function returns. In a POSIX compliant shell, a trap is in effect until explicitly changed by another trap command. Entering or returning from a function should have no effect on trap actions. The shell was incorrectly saving the trap actions on entry to a function and restoring them to the caller's values upon returning. 2) exit called from within a sourced file ( . file ) from within a function exits the sourced file, but not the shell. Since a sourced file is executed in the current environment, an exit should cause the shell to terminate. Instead, the exit acts like a return in the function. 3) Some builtin commands cause the shell to exit when the command contains a syntax error. Only special builtin commands (those marked with daggers on the manpage, e.g. trap) should cause the shell to exit. Regular builtin commands (e.g., cd and fc) should display an error and return a non-zero exit code, but the shell script should continue with the command immediately following. 4) When a here-document is used on the left side of a pipeline that is put into the background, the shell sometimes fails to open temporary files. A race condition exists that sometimes causes the shell to delete its temporary files before it has read them. PHCO_8578: 1) shell dumps core on 'sh -c "a | b"' 2) shell dumps core when here-doc is part of command subststition 3) posix shell cd -P and pwd -P can fail when current directory path includes symbolic links where the link starts with ../ 4) pwd -P can return a path that does not exist. SR: 1653240390 1653238170 5003341651 5003338087 5003331280 5003335273 1653182162 5003331256 5003333450 5003327981 1653172619 1653135228 1653177865 1653149930 5003315135 5003338046 5003340166 1653206532 5003343038 Patch Files: /usr/lib/nls/msg/C/psh.cat /usr/bin/rsh /usr/bin/sh /sbin/sh /usr/share/man/man1.Z/sh-posix.1 what(1) Output: /usr/lib/nls/msg/C/psh.cat: None /usr/bin/rsh: /usr/bin/rsh: Version M-11/16/88f $Revision: 78.16.1.26 $ PATCH_10_20: builtin.o echo.o macro.o msg.o cmd.o pr int.o service.o tilde.o xec.o main.o name.o adjust.o args.o arith.o assign.o assnum.o ca nnon.o chkid.o convert.o ctype.o defs.o edit .o emacs.o error.o expand.o fault.o findnod. o gettree.o growaray.o gsort.o history.o hpu x_rel.o io.o jobs.o linknod.o namscan.o optg et.o rjust.o stak.o strdata.o streval.o stri ng.o strmatch.o test.o unassign.o utos.o val up.o vi.o word.o 97/12/22 Internal_Unsupported_Version libc.a_ID@@/main/r10dav /libc_dav/libc_dav_cpe/7 /ux/core/libs/libc/archive_pa1/libc.a_ID Jan 20 1997 14:03:28: /usr/bin/sh: /usr/bin/sh: Version M-11/16/88f $Revision: 78.16.1.26 $ PATCH_10_20: builtin.o echo.o macro.o msg.o cmd.o pr int.o service.o tilde.o xec.o main.o name.o adjust.o args.o arith.o assign.o assnum.o ca nnon.o chkid.o convert.o ctype.o defs.o edit .o emacs.o error.o expand.o fault.o findnod. o gettree.o growaray.o gsort.o history.o hpu x_rel.o io.o jobs.o linknod.o namscan.o optg et.o rjust.o stak.o strdata.o streval.o stri ng.o strmatch.o test.o unassign.o utos.o val up.o vi.o word.o 97/12/22 Internal_Unsupported_Version libc.a_ID@@/main/r10dav /libc_dav/libc_dav_cpe/7 /ux/core/libs/libc/archive_pa1/libc.a_ID Jan 20 1997 14:03:28: /sbin/sh: /sbin/sh: Version M-11/16/88f $Revision: 78.16.1.26 $ Internal_Unsupported_Version libc.a_ID@@/main/r10dav /libc_dav/libc_dav_cpe/7 /ux/core/libs/libc/archive_pa1/libc.a_ID Jan 20 1997 14:03:28 PATCH_10_20: builtin.o echo.o macro.o msg.o cmd.o pr int.o service.o tilde.o xec.o main_C.o name_ C.o adjust.o args.o arith.o assign.o assnum. o cannon.o chkid.o convert.o ctype.o defs.o edit.o emacs.o error.o expand.o fault.o find nod.o gettree.o growaray.o gsort.o history.o hpux_rel.o io.o jobs.o linknod.o namscan.o optget.o rjust.o stak.o strdata.o streval.o string.o strmatch.o test.o unassign.o utos.o valup.o vi.o word.o 97/12/22: /usr/share/man/man1.Z/sh-posix.1: None cksum(1) Output: 1521661560 5680 /usr/lib/nls/msg/C/psh.cat 1109531043 462848 /usr/bin/rsh 1109531043 462848 /usr/bin/sh 3886292414 376832 /sbin/sh 2210990140 110242 /usr/share/man/man1.Z/sh-posix.1 Patch Conflicts: None Patch Dependencies: s700: 10.00: PHCO_10730 PHCO_10731 s700: 10.01: PHCO_10728 PHCO_10729 s700: 10.10: PHCO_10720 PHCO_10721 s700: 10.20: PHCO_10719 s800: 10.00: PHCO_10730 PHCO_10731 s800: 10.01: PHCO_10728 PHCO_10729 s800: 10.10: PHCO_10720 PHCO_10721 s800: 10.20: PHCO_10719 Hardware Dependencies: None Other Dependencies: None Supersedes: PHCO_8578 PHCO_8785 PHCO_9227 PHCO_9925 PHCO_10066 PHCO_10718 PHCO_13359 Equivalent Patches: None Patch Package Size: 1000 KBytes Installation Instructions: Please review all instructions and the Hewlett-Packard SupportLine User Guide or your Hewlett-Packard support terms and conditions for precautions, scope of license, restrictions, and, limitation of liability and warranties, before installing this patch. ------------------------------------------------------------ 1. Back up your system before installing a patch. 2. Login as root. 3. Copy the patch to the /tmp directory. 4. Move to the /tmp directory and unshar the patch: cd /tmp sh PHCO_13661 5a. For a standalone system, run swinstall to install the patch: swinstall -x autoreboot=true -x match_target=true \ -s /tmp/PHCO_13661.depot 5b. For a homogeneous NFS Diskless cluster run swcluster on the server to install the patch on the server and the clients: swcluster -i -b This will invoke swcluster in the interactive mode and force all clients to be shut down. WARNING: All cluster clients must be shut down prior to the patch installation. Installing the patch while the clients are booted is unsupported and can lead to serious problems. The swcluster command will invoke an swinstall session in which you must specify: alternate root path - default is /export/shared_root/OS_700 source depot path - /tmp/PHCO_13661.depot To complete the installation, select the patch by choosing "Actions -> Match What Target Has" and then "Actions -> Install" from the Menubar. 5c. For a heterogeneous NFS Diskless cluster: - run swinstall on the server as in step 5a to install the patch on the cluster server. - run swcluster on the server as in step 5b to install the patch on the cluster clients. By default swinstall will archive the original software in /var/adm/sw/patch/PHCO_13661. If you do not wish to retain a copy of the original software, you can create an empty file named /var/adm/sw/patch/PATCH_NOSAVE. Warning: If this file exists when a patch is installed, the patch cannot be deinstalled. Please be careful when using this feature. It is recommended that you move the PHCO_13661.text file to /var/adm/sw/patch for future reference. To put this patch on a magnetic tape and install from the tape drive, use the command: dd if=/tmp/PHCO_13661.depot of=/dev/rmt/0m bs=2k Special Installation Instructions: None