Patch Name: PHCO_8785 Patch Description: s700_800 10.20 POSIX shell cumulative patch Creation Date: 96/10/01 Post Date: 96/10/10 Repost: 01/10/01 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 (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.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_8785 Symptoms: 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 PHCO_8578: shell dumps core on 'sh -c "a | b"' shell dumps core when here-doc is part of command substitution 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. Defect Description: 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. PHCO_8578: shell dumps core on 'sh -c "a | b"' shell dumps core when here-doc is part of command substitution 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. SR: 5003331256 5003333450 5003327981 1653172619 1653135228 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: 78.16.1.9 $ PATCH_10_20MR: /opt/langtools/lib/crt0.o builtin.o e cho.o macro.o msg.o cmd.o print.o service.o tilde.o xec.o main.o name.o adjust.o args.o arith.o assign.o assnum.o cannon.o chkid.o c onvert.o ctype.o defs.o edit.o emacs.o error .o expand.o fault.o findnod.o gettree.o grow aray.o gsort.o history.o hpux_rel.o io.o job s.o linknod.o namscan.o optget.o rjust.o sta k.o strdata.o streval.o string.o strmatch.o test.o unassign.o utos.o valup.o vi.o word.o 96/09/30 ic12_r10dav_gs libc.a_ID@@/main/r10dav/libc_dav/bvd_ dav/1 /ux/libc/libs/libc/archive_pa1/libc.a_ID May 1 1996 11:43:41 /usr/bin/sh: Version M-11/16/88f $Revision: 78.16.1.9 $ PATCH_10_20MR: /opt/langtools/lib/crt0.o builtin.o e cho.o macro.o msg.o cmd.o print.o service.o tilde.o xec.o main.o name.o adjust.o args.o arith.o assign.o assnum.o cannon.o chkid.o c onvert.o ctype.o defs.o edit.o emacs.o error .o expand.o fault.o findnod.o gettree.o grow aray.o gsort.o history.o hpux_rel.o io.o job s.o linknod.o namscan.o optget.o rjust.o sta k.o strdata.o streval.o string.o strmatch.o test.o unassign.o utos.o valup.o vi.o word.o 96/10/01 ic12_r10dav_gs libc.a_ID@@/main/r10dav/libc_dav/bvd_ dav/1 /ux/libc/libs/libc/archive_pa1/libc.a_ID May 1 1996 11:43:41 /sbin/sh: Version M-11/16/88f $Revision: 78.16.1.9 $ ic12_r10dav_gs libc.a_ID@@/main/r10dav/libc_dav/bvd_ dav/1 /ux/libc/libs/libc/archive_pa1/libc.a_ID May 1 1996 11:43:41 PATCH_10_20MR: /opt/langtools/lib/crt0.o builtin.o e cho.o macro.o msg.o cmd.o print.o service.o tilde.o xec.o main_C.o name_C.o adjust.o arg s.o arith.o assign.o assnum.o cannon.o chkid .o convert.o ctype.o defs.o edit.o emacs.o e rror.o expand.o fault.o findnod.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 strmatc h.o test.o unassign.o utos.o valup.o vi.o wo rd.o 96/10/01 /usr/share/man/man1.Z/sh-posix.1: None cksum(1) Output: 1521661560 5680 /usr/lib/nls/msg/C/psh.cat 2991985611 438272 /usr/bin/rsh 1733201744 438272 /usr/bin/sh 3483451043 360448 /sbin/sh 175901197 44865 /usr/share/man/man1.Z/sh-posix.1 Patch Conflicts: None Patch Dependencies: None Hardware Dependencies: None Other Dependencies: None Supersedes: PHCO_8578 Equivalent Patches: PHCO_8782: s700: 10.00 s800: 10.00 PHCO_8783: s700: 10.01 s800: 10.01 PHCO_8784: s700: 10.10 s800: 10.10 Patch Package Size: 1320 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_8785 5a. For a standalone system, run swinstall to install the patch: swinstall -x autoreboot=true -x match_target=true \ -s /tmp/PHCO_8785.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_8785.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_8785. 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_8785.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_8785.depot of=/dev/rmt/0m bs=2k Special Installation Instructions: None