Patch Name: PHCO_10067 Patch Description: s700_800 10.10 POSIX shell cumulative patch Creation Date: 97/02/07 Post Date: 97/02/12 Repost: 01/10/25 The patch documentation was modified to remove references to a here-document related defect that is not fully addressed. The defect described in Service Request 1653182162 (JAGaa53550/DSDe430660) is not fully addressed in the patch so references to this defect fix were removed from the patch documentation. Hardware Platforms - OS Releases: s700: 10.10 s800: 10.10 Products: N/A Filesets: OS-Core.UX-CORE OS-Core.CORE-ENG-A-MAN Automatic Reboot?: No Status: General Release Critical: No Path Name: /hp-ux_patches/s700_800/10.X/PHCO_10067 Symptoms: PHCO_10067: 1) 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. 2) 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_9226: 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_8784: 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 PHCO_8577: shell dumps core on 'sh -c "a | b"' shell dumps core when here-doc is part of command subststition posix shell cd -P and pwd -P can fail when current directory path includes symbolic links where the link starts with ../ pwd -P can return a path that does not exist. PHCO_7860: port fixes from 10.20 for VSC4.1.5 read 18. PHCO_7499: Fix postremove script problem in PHCO_7330 PHCO_7330: Fix for segmentation error after running ServiceGuard PHCO_6820: assertion read 18 should pass vsc4 tests PHCO_6693: b="@(a|b)";[[ a = $ab ]] && echo match; does not work. Defect Description: PHCO_10067: 1) 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. 2) 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_9226: 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_8784: 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. PHCO_8577: shell dumps core on 'sh -c "a | b"' shell dumps core when here-doc is part of command subststition posix shell cd -P and pwd -P can fail when current directory path includes symbolic links where the link starts with ../ pwd -P can return a path that does not exist. PHCO_7860: port fixes from 10.20 for VSC4.1.5 read 18. PHCO_7499: Fix postremove script problem in PHCO_7330 PHCO_7330: Segmentation error after running SG PHCO_6820: assertion read 18 should pass the vsc4 tests PHCO_6693: posix sh pattern match does not work. SR: 5003341651 5003338087 5003331280 5003335273 5003331256 5003333450 5003327981 1653172619 1653135228 4701328849 5000714691 4701316042 5003287284 1653177865 1653149930 5003315135 5003338046 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: Version M-11/16/88f $Revision: 76.16.1.30 $ PATCH_10_10: 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/02/07 PATCH/10_10 PHCO_9208 $Revision: 76.162.1.14.1.22 $ /usr/bin/sh: Version M-11/16/88f $Revision: 76.16.1.30 $ PATCH_10_10: 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/02/07 PATCH/10_10 PHCO_9208 $Revision: 76.162.1.14.1.22 $ /sbin/sh: Version M-11/16/88f $Revision: 76.16.1.30 $ PATCH/10_10 PHCO_9208 $Revision: 76.162.1.14.1.22 $ PATCH_10_10: 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/02/07 /usr/share/man/man1.Z/sh-posix.1: None cksum(1) Output: 1521661560 5680 /usr/lib/nls/msg/C/psh.cat 3760636813 462848 /usr/bin/rsh 3760636813 462848 /usr/bin/sh 55538842 376832 /sbin/sh 1480669307 44868 /usr/share/man/man1.Z/sh-posix.1 Patch Conflicts: None Patch Dependencies: None Hardware Dependencies: None Other Dependencies: None Supersedes: PHCO_6693 PHCO_6820 PHCO_7330 PHCO_7499 PHCO_7860 PHCO_8577 PHCO_8784 PHCO_9226 Equivalent Patches: PHCO_10066: s700: 10.20 s800: 10.20 Patch Package Size: 930 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_10067 5a. For a standalone system, run swinstall to install the patch: swinstall -x autoreboot=true -x match_target=true \ -s /tmp/PHCO_10067.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_10067.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_10067. 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_10067.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_10067.depot of=/dev/rmt/0m bs=2k Special Installation Instructions: None