Patch Name: PHCO_8784 Patch Description: s700_800 10.10 POSIX shell cumulative patch Creation Date: 96/10/02 Post Date: 96/10/10 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_8784 Symptoms: 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_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: 5003331256 5003333450 5003327981 1653172619 1653135228 4701328849 5000714691 4701316042 5003287284 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.22 $ PATCH_10_10MR: /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/02 $Revision: 76.162.1.5 $ /usr/bin/sh: Version M-11/16/88f $Revision: 76.16.1.22 $ PATCH_10_10MR: /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/02 $Revision: 76.162.1.5 $ /sbin/sh: Version M-11/16/88f $Revision: 76.16.1.22 $ $Revision: 76.162.1.5 $ PATCH_10_10MR: /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/02 /usr/share/man/man1.Z/sh-posix.1: None cksum(1) Output: 1521661560 5680 /usr/lib/nls/msg/C/psh.cat 876405272 438272 /usr/bin/rsh 876405272 438272 /usr/bin/sh 2722397580 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_6693 PHCO_6820 PHCO_7330 PHCO_7499 PHCO_7860 PHCO_8577 Equivalent Patches: PHCO_8782: s700: 10.00 s800: 10.00 PHCO_8783: s700: 10.01 s800: 10.01 PHCO_8785: s700: 10.20 s800: 10.20 Patch Package Size: 890 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_8784 5a. For a standalone system, run swinstall to install the patch: swinstall -x autoreboot=true -x match_target=true \ -s /tmp/PHCO_8784.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_8784.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_8784. 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_8784.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_8784.depot of=/dev/rmt/0m bs=2k Special Installation Instructions: None