diff options
author | 2018-05-25 23:29:36 +0000 | |
---|---|---|
committer | 2018-06-01 00:36:01 +0200 | |
commit | 39366733c3fe943363566756e2e152c45a1b3cb2 (patch) | |
tree | 228b0735896af90ca78151c9a69aa3efd12c8cae /patches/source | |
parent | d31c50870d0bee042ce660e445c9294a59a3a65b (diff) | |
download | current-39366733c3fe943363566756e2e152c45a1b3cb2.tar.gz current-39366733c3fe943363566756e2e152c45a1b3cb2.tar.xz |
Fri May 25 23:29:36 UTC 201814.2
patches/packages/glibc-zoneinfo-2018e-noarch-2_slack14.2.txz: Rebuilt.
Handle removal of US/Pacific-New timezone. If we see that the machine is
using this, it will be automatically switched to US/Pacific.
Diffstat (limited to 'patches/source')
718 files changed, 75764 insertions, 0 deletions
diff --git a/patches/source/NetworkManager/55NetworkManager b/patches/source/NetworkManager/55NetworkManager new file mode 100644 index 00000000..d7b3ee6a --- /dev/null +++ b/patches/source/NetworkManager/55NetworkManager @@ -0,0 +1,39 @@ +#!/bin/sh +# If we are running NetworkManager, tell it we are going to sleep. + +. "${PM_FUNCTIONS}" + +suspend_nm() +{ + # Tell NetworkManager to shut down networking + printf "Having NetworkManager put all interaces to sleep..." + dbus_send --system --print-reply \ + --dest=org.freedesktop.NetworkManager \ + /org/freedesktop/NetworkManager \ + org.freedesktop.NetworkManager.Sleep \ + boolean:true && \ + echo Done. || echo Failed. +} + +resume_nm() +{ + # Wake up NetworkManager and make it do a new connection + printf "Having NetworkManager wake interfaces back up..." + dbus_send --system --print-reply \ + --dest=org.freedesktop.NetworkManager \ + /org/freedesktop/NetworkManager \ + org.freedesktop.NetworkManager.Sleep \ + boolean:false && \ + echo Done. || echo Failed. +} + +case "$1" in + hibernate|suspend) + suspend_nm + ;; + thaw|resume) + resume_nm + ;; + *) exit $NA + ;; +esac diff --git a/patches/source/NetworkManager/NetworkManager.SlackBuild b/patches/source/NetworkManager/NetworkManager.SlackBuild new file mode 100755 index 00000000..ae5dc7ca --- /dev/null +++ b/patches/source/NetworkManager/NetworkManager.SlackBuild @@ -0,0 +1,181 @@ +#!/bin/sh + +# Copyright 2010, 2011, 2014, 2016 Robby Workman, Northport, Alabama, USA +# Copyright 2013, 2014, 2015, 2016 Patrick J. Volkerding, Sebeka, MN, USA +# All rights reserved. +# +# Redistribution and use of this script, with or without modification, is +# permitted provided that the following conditions are met: +# +# 1. Redistributions of this script must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# +# THIS SOFTWARE IS PROVIDED BY THE AUTHOR "AS IS" AND ANY EXPRESS OR IMPLIED +# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO +# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; +# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR +# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF +# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +# Modified 2011, 2012 by Eric Hameleers, Eindhoven, NL + +PKGNAM=NetworkManager +VERSION=${VERSION:-$(echo $PKGNAM-*.tar.?z* | rev | cut -f 3- -d . | cut -f 1 -d - | rev)} +BUILD=${BUILD:-1_slack14.2} + +# Automatically determine the architecture we're building on: +MARCH=$( uname -m ) +if [ -z "$ARCH" ]; then + case "$MARCH" in + i?86) export ARCH=i586 ;; + armv7hl) export ARCH=$MARCH ;; + arm*) export ARCH=arm ;; + # Unless $ARCH is already set, use uname -m for all other archs: + *) export ARCH=$MARCH ;; + esac +fi + +NUMJOBS=${NUMJOBS:-" -j7 "} + +CWD=$(pwd) +TMP=${TMP:-/tmp} +PKG=$TMP/package-$PKGNAM +OUTPUT=${OUTPUT:-/tmp} + +if [ "$ARCH" = "i586" ]; then + SLKCFLAGS="-O2 -march=i586 -mtune=i686" + LIBDIRSUFFIX="" +elif [ "$ARCH" = "i686" ]; then + SLKCFLAGS="-O2 -march=i686 -mtune=i686" + LIBDIRSUFFIX="" +elif [ "$ARCH" = "x86_64" ]; then + SLKCFLAGS="-O2 -fPIC" + LIBDIRSUFFIX="64" +elif [ "$ARCH" = "armv7hl" ]; then + SLKCFLAGS="-O2 -march=armv7-a -mfpu=vfpv3-d16" + LIBDIRSUFFIX="" +else + SLKCFLAGS="-O2" + LIBDIRSUFFIX="" +fi + +case "$ARCH" in + arm*) TARGET=$ARCH-slackware-linux-gnueabi ;; + *) TARGET=$ARCH-slackware-linux ;; +esac + +rm -rf $PKG +mkdir -p $TMP $PKG $OUTPUT +cd $TMP +rm -rf $PKGNAM-$VERSION +tar xvf $CWD/$PKGNAM-$VERSION.tar.?z* || exit 1 +cd $PKGNAM-$VERSION || exit 1 +chown -R root:root . +find . \ + \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \ + -exec chmod 755 {} \; -o \ + \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \ + -exec chmod 644 {} \; + +# Find the version number for pppd, used to specify the plugin directory: +PPPD=$(echo /usr/lib${LIBDIRSUFFIX}/pppd/?.?.? | rev | cut -f 1 -d / | rev) + +# Apply bugfix patches from upstream git: +for dfile in $CWD/patches/* ; do + zcat $dfile | patch -p1 --verbose || exit 1 +done + +# For git-patched builds +autoreconf -vif +automake +./autogen.sh + +CFLAGS="$SLKCFLAGS" \ +CXXFLAGS="$SLKCFLAGS" \ +./configure \ + --prefix=/usr \ + --libdir=/usr/lib${LIBDIRSUFFIX} \ + --sysconfdir=/etc \ + --localstatedir=/var \ + --mandir=/usr/man \ + --docdir=/usr/doc/$PKGNAM-$VERSION \ + --with-udev-dir=/lib/udev \ + --with-pppd-plugin-dir=/usr/lib${LIBDIRSUFFIX}/pppd/$PPPD \ + --with-crypto=nss \ + --enable-more-warnings=no \ + --without-resolvconf \ + --with-dhcpcd=/sbin/dhcpcd \ + --with-dhclient=yes \ + --with-modem-manager-1=yes \ + --with-nmtui=yes \ + --disable-vala \ + --disable-json-validation \ + --with-session-tracking=consolekit \ + --with-suspend-resume=consolekit \ + --with-hostname-persist=slackware \ + --build=$TARGET || exit 1 + +make $NUMJOBS || exit 1 +make install DESTDIR=$PKG || exit 1 + +find $PKG | xargs file | grep -e "executable" -e "shared object" | grep ELF \ + | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null || true + +# Fix hardlinked manpages: +( cd $PKG/usr/man/man1 + ln -sf nmtui.1 nmtui-connect.1 + ln -sf nmtui.1 nmtui-edit.1 + ln -sf nmtui.1 nmtui-hostname.1 +) + +find $PKG/usr/man -type f -exec gzip -9 {} \; +for i in $( find $PKG/usr/man -type l ) ; do ln -s $( readlink $i ).gz $i.gz ; rm $i ; done + +# In case NetworkManager tries to install something here: +rm -f $PKG/etc/rc.d/rc.networkmanager + +# Don't clobber existing rc.networkmanager +# Don't run NetworkManager by default just because it got installed. +# Instead, the init script will have to be made executable first. +# This should avoid nasty surprises on potentially remotely located machines. +mkdir -p $PKG/etc/rc.d +cat $CWD/rc.networkmanager > $PKG/etc/rc.d/rc.networkmanager.new +chmod 0644 $PKG/etc/rc.d/rc.networkmanager.new + +# Add the pm-utils hook back in +# xfce4-power-manager needs to be built *without* NM support +mkdir -p $PKG/usr/lib${LIBDIRSUFFIX}/pm-utils/sleep.d/ +cat $CWD/55NetworkManager > $PKG/usr/lib${LIBDIRSUFFIX}/pm-utils/sleep.d/55NetworkManager +chmod 0755 $PKG/usr/lib${LIBDIRSUFFIX}/pm-utils/sleep.d/55NetworkManager + +# Add default (plain) config file to enable keyfile plugin +cat $CWD/NetworkManager.conf > $PKG/etc/NetworkManager/NetworkManager.conf.new + +# Set dhcp client to "dhcpcd" and rc-manager to "file" by default +mkdir -p $PKG/etc/NetworkManager/conf.d +cat $CWD/conf.d/00-dhcp-client.conf > $PKG/etc/NetworkManager/conf.d/00-dhcp-client.conf.new +cat $CWD/conf.d/00-rc-manager.conf > $PKG/etc/NetworkManager/conf.d/00-rc-manager.conf.new + +mkdir -p $PKG/usr/doc/$PKGNAM-$VERSION +cp -a \ + AUTHORS CONTRIBUTING COPYING ChangeLog INSTALL NEWS README TODO \ + $PKG/usr/doc/$PKGNAM-$VERSION + +# If there's a ChangeLog, installing at least part of the recent history +# is useful, but don't let it get totally out of control: +if [ -r ChangeLog ]; then + cat ChangeLog | head -n 1000 > $PKG/usr/doc/$PKGNAM-$VERSION/ChangeLog + touch -r ChangeLog $PKG/usr/doc/$PKGNAM-$VERSION/ChangeLog +fi + +mkdir -p $PKG/install +cat $CWD/slack-desc > $PKG/install/slack-desc +zcat $CWD/doinst.sh.gz > $PKG/install/doinst.sh + +cd $PKG +/sbin/makepkg --prepend -l y -c n $OUTPUT/$PKGNAM-$VERSION-$ARCH-$BUILD.txz + diff --git a/patches/source/NetworkManager/NetworkManager.conf b/patches/source/NetworkManager/NetworkManager.conf new file mode 100644 index 00000000..eb8f6ae1 --- /dev/null +++ b/patches/source/NetworkManager/NetworkManager.conf @@ -0,0 +1,7 @@ +# /etc/NetworkManager/NetworkManager.conf +# +# See additional config files (such as for DHCP settings) in ./conf.d + +[main] +plugins=keyfile + diff --git a/patches/source/NetworkManager/conf.d/00-dhcp-client.conf b/patches/source/NetworkManager/conf.d/00-dhcp-client.conf new file mode 100644 index 00000000..7b52815f --- /dev/null +++ b/patches/source/NetworkManager/conf.d/00-dhcp-client.conf @@ -0,0 +1,8 @@ +[main] +# Choose a DHCP client below. Upstream recommends dhclient, but results may vary. +# dhcpcd is the DHCP client usually used by Slackware: +dhcp=dhcpcd +# dhclient is the ISC reference DHCP client, part of the dhcp package: +#dhcp=dhclient +# This is a simple DHCP client that is built into NetworkManager: +#dhcp=internal diff --git a/patches/source/NetworkManager/conf.d/00-rc-manager.conf b/patches/source/NetworkManager/conf.d/00-rc-manager.conf new file mode 100644 index 00000000..c848c003 --- /dev/null +++ b/patches/source/NetworkManager/conf.d/00-rc-manager.conf @@ -0,0 +1,2 @@ +[main] +rc-manager=file diff --git a/patches/source/NetworkManager/doinst.sh b/patches/source/NetworkManager/doinst.sh new file mode 100644 index 00000000..6c88b8cf --- /dev/null +++ b/patches/source/NetworkManager/doinst.sh @@ -0,0 +1,42 @@ + +config() { + NEW="$1" + OLD="$(dirname $NEW)/$(basename $NEW .new)" + # If there's no config file by that name, mv it over: + if [ ! -r $OLD ]; then + mv $NEW $OLD + elif [ "$(cat $OLD | md5sum)" = "$(cat $NEW | md5sum)" ]; then + # toss the redundant copy + rm $NEW + fi + # Otherwise, we leave the .new copy for the admin to consider... +} + +preserve_perms() { + NEW="$1" + OLD="$(dirname ${NEW})/$(basename ${NEW} .new)" + if [ -e ${OLD} ]; then + cp -a ${OLD} ${NEW}.incoming + cat ${NEW} > ${NEW}.incoming + mv ${NEW}.incoming ${NEW} + fi + mv ${NEW} ${OLD} +} + +if [ -e etc/HOSTNAME ]; then + sed -i "s,yourhostname,$(cat etc/HOSTNAME | cut -f1 -d .)," \ + etc/NetworkManager/NetworkManager.conf.new +fi + +# Preserve permissions, but move this into place. Otherwise the net +# connection could be lost at a remote location. +preserve_perms etc/rc.d/rc.networkmanager.new +config etc/NetworkManager/NetworkManager.conf.new +config etc/NetworkManager/conf.d/00-rc-manager.conf.new +config etc/NetworkManager/conf.d/00-dhcp-client.conf.new + +# If the .pid file is found in the old location, move it to the new one: +if [ -r var/run/NetworkManager.pid ]; then + mv var/run/NetworkManager.pid var/run/NetworkManager/NetworkManager.pid +fi + diff --git a/patches/source/NetworkManager/rc.networkmanager b/patches/source/NetworkManager/rc.networkmanager new file mode 100644 index 00000000..b6b311ed --- /dev/null +++ b/patches/source/NetworkManager/rc.networkmanager @@ -0,0 +1,113 @@ +#!/bin/sh +# +# NetworkManager: NetworkManager daemon +# +# description: This is a daemon for automatically switching network \ +# connections to the best available connection. \ +# +# processname: NetworkManager +# pidfile: /var/run/NetworkManager/NetworkManager.pid +# + +prefix=/usr +exec_prefix=/usr +sbindir=${exec_prefix}/sbin + +NETWORKMANAGER_BIN=${sbindir}/NetworkManager + +# Sanity checks. +[ -x $NETWORKMANAGER_BIN ] || exit 0 + +PIDFILE=/var/run/NetworkManager/NetworkManager.pid + +nm_start() +{ + if [ "`pgrep dbus-daemon`" = "" ]; then + echo "D-BUS must be running to start NetworkManager" + return + fi + + # Just in case the pidfile is still there, we may need to nuke it. + if [ -e "$PIDFILE" ]; then + rm -f $PIDFILE + fi + + echo "Starting NetworkManager daemon: $NETWORKMANAGER_BIN" + XDG_CACHE_HOME=/root/.cache $NETWORKMANAGER_BIN +} + +nm_status() +{ + local pidlist=`cat $PIDFILE 2>/dev/null` + if [ -z "$pidlist" ]; then + return 1 + fi + local command=`ps -p $pidlist -o comm=` + if [ "$command" != 'NetworkManager' ]; then + return 1 + fi +} + +nm_stop() +{ + echo -en "Stopping NetworkManager: " + # Shut down any DHCP connections, otherwise the processes will be orphaned + # and the connections will not come up when NetworkManager restarts. + if ps ax | grep /sbin/dhcpcd | grep -q libexec/nm-dhcp ; then + ps ax | grep /sbin/dhcpcd | grep libexec/nm-dhcp | while read line ; do + kill -HUP $(echo $line | cut -b 1-5) + done + fi + if ps ax | grep /sbin/dhclient | grep -q /var/lib/NetworkManager ; then + ps ax | grep /sbin/dhclient | grep /var/lib/NetworkManager | while read line ; do + kill -HUP $(echo $line | cut -b 1-5) + done + fi + local pidlist=`cat $PIDFILE 2>/dev/null` + if [ ! -z "$pidlist" ]; then + kill $pidlist &>/dev/null + sleep 3 + rm -f $PIDFILE &>/dev/null + fi + # If wpa_supplicant is running here, it needs to be shut down as well. + # Since you're asking for NetworkManager to shut down, we have to assume + # that wpa_supplicant was started by it. + if [ -r /var/run/wpa_supplicant.pid ]; then + kill $(cat /var/run/wpa_supplicant.pid) + elif [ -r /run/wpa_supplicant.pid ]; then + kill $(cat /run/wpa_supplicant.pid) + fi + echo "stopped"; + sleep 3 +} + +nm_restart() +{ + nm_stop + nm_start +} + +case "$1" in +'start') + if ( ! nm_status ); then + nm_start + else + echo "NetworkManager is already running (will not start it twice)." + fi + ;; +'stop') + nm_stop + ;; +'restart') + nm_restart + ;; +'status') + if ( nm_status ); then + echo "NetworkManager is currently running" + else + echo "NetworkManager is not running." + fi + ;; +*) + echo "usage $0 start|stop|status|restart" +esac diff --git a/patches/source/NetworkManager/slack-desc b/patches/source/NetworkManager/slack-desc new file mode 100644 index 00000000..96496048 --- /dev/null +++ b/patches/source/NetworkManager/slack-desc @@ -0,0 +1,19 @@ +# HOW TO EDIT THIS FILE: +# The "handy ruler" below makes it easier to edit a package description. Line +# up the first '|' above the ':' following the base package name, and the '|' +# on the right side marks the last column you can put a character in. You must +# make exactly 11 lines for the formatting to be correct. It's also +# customary to leave one space after the ':'. + + |-----handy-ruler------------------------------------------------------| +NetworkManager: NetworkManager (Networking that Just Works) +NetworkManager: +NetworkManager: The point of NetworkManager is to make networking configuration and +NetworkManager: setup as painless and automatic as possible. NetworkManager sets IP +NetworkManager: addresses, default routes, associating with wireless access points +NetworkManager: or wired LANs, and other network configuration settings in a simple, +NetworkManager: automated fashion (manual overrides are still possible). +NetworkManager: +NetworkManager: Home page: http://projects.gnome.org/NetworkManager/ +NetworkManager: +NetworkManager: diff --git a/patches/source/bash/bash-4.3-patches/bash43-001 b/patches/source/bash/bash-4.3-patches/bash43-001 new file mode 100644 index 00000000..ea1c6b26 --- /dev/null +++ b/patches/source/bash/bash-4.3-patches/bash43-001 @@ -0,0 +1,58 @@ + BASH PATCH REPORT + ================= + +Bash-Release: 4.3 +Patch-ID: bash43-001 + +Bug-Reported-by: NBaH <nbah@sfr.fr> +Bug-Reference-ID: <ler0b5$iu9$1@speranza.aioe.org> +Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2014-02/msg00092.html + +Bug-Description: + +A missing check for a valid option prevented `test -R' from working. There +is another problem that causes bash to look up the wrong variable name when +processing the argument to `test -R'. + +Patch (apply with `patch -p0'): + +*** ../bash-4.3/test.c 2014-02-04 16:52:58.000000000 -0500 +--- test.c 2014-02-28 21:22:44.000000000 -0500 +*************** +*** 647,652 **** + + case 'R': +! v = find_variable (arg); +! return (v && invisible_p (v) == 0 && var_isset (v) && nameref_p (v) ? TRUE : FALSE); + } + +--- 647,652 ---- + + case 'R': +! v = find_variable_noref (arg); +! return ((v && invisible_p (v) == 0 && var_isset (v) && nameref_p (v)) ? TRUE : FALSE); + } + +*************** +*** 724,727 **** +--- 724,728 ---- + case 'u': case 'v': case 'w': case 'x': case 'z': + case 'G': case 'L': case 'O': case 'S': case 'N': ++ case 'R': + return (1); + } +*** ../bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500 +--- patchlevel.h 2014-03-20 20:01:28.000000000 -0400 +*************** +*** 26,30 **** + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 0 + + #endif /* _PATCHLEVEL_H_ */ +--- 26,30 ---- + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 1 + + #endif /* _PATCHLEVEL_H_ */ diff --git a/patches/source/bash/bash-4.3-patches/bash43-002 b/patches/source/bash/bash-4.3-patches/bash43-002 new file mode 100644 index 00000000..735b7b81 --- /dev/null +++ b/patches/source/bash/bash-4.3-patches/bash43-002 @@ -0,0 +1,62 @@ + BASH PATCH REPORT + ================= + +Bash-Release: 4.3 +Patch-ID: bash43-002 + +Bug-Reported-by: Moe Tunes <moetunes42@gmail.com> +Bug-Reference-ID: <53103F49.3070100@gmail.com> +Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2014-02/msg00086.html + +Bug-Description: + +A change to save state while running the DEBUG trap caused pipelines to hang +on systems which need process group synchronization while building pipelines. + +Patch (apply with `patch -p0'): + +*** ../bash-4.3/trap.c 2014-02-05 10:03:21.000000000 -0500 +--- trap.c 2014-02-28 09:51:43.000000000 -0500 +*************** +*** 921,925 **** + + #if defined (JOB_CONTROL) +! save_pipeline (1); /* XXX only provides one save level */ + #endif + +--- 921,926 ---- + + #if defined (JOB_CONTROL) +! if (sig != DEBUG_TRAP) /* run_debug_trap does this */ +! save_pipeline (1); /* XXX only provides one save level */ + #endif + +*************** +*** 941,945 **** + + #if defined (JOB_CONTROL) +! restore_pipeline (1); + #endif + +--- 942,947 ---- + + #if defined (JOB_CONTROL) +! if (sig != DEBUG_TRAP) /* run_debug_trap does this */ +! restore_pipeline (1); + #endif + +*** ../bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500 +--- patchlevel.h 2014-03-20 20:01:28.000000000 -0400 +*************** +*** 26,30 **** + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 1 + + #endif /* _PATCHLEVEL_H_ */ +--- 26,30 ---- + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 2 + + #endif /* _PATCHLEVEL_H_ */ diff --git a/patches/source/bash/bash-4.3-patches/bash43-003 b/patches/source/bash/bash-4.3-patches/bash43-003 new file mode 100644 index 00000000..0f32f410 --- /dev/null +++ b/patches/source/bash/bash-4.3-patches/bash43-003 @@ -0,0 +1,48 @@ + BASH PATCH REPORT + ================= + +Bash-Release: 4.3 +Patch-ID: bash43-003 + +Bug-Reported-by: Anatol Pomozov <anatol.pomozov@gmail.com> +Bug-Reference-ID: <CAOMFOmXy3mT2So5GQ5F-smCVArQuAeBwZ2QKzgCtMeXJoDeYOQ@mail.gmail.com> +Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-readline/2014-03/msg00010.html + +Bug-Description: + +When in callback mode, some readline commands can cause readline to seg +fault by passing invalid contexts to callback functions. + +Patch (apply with `patch -p0'): + +*** ../bash-4.3/lib/readline/readline.c 2013-10-28 14:58:06.000000000 -0400 +--- lib/readline/readline.c 2014-03-10 14:15:02.000000000 -0400 +*************** +*** 745,749 **** + + RL_CHECK_SIGNALS (); +! if (r == 0) /* success! */ + { + _rl_keyseq_chain_dispose (); +--- 745,750 ---- + + RL_CHECK_SIGNALS (); +! /* We only treat values < 0 specially to simulate recursion. */ +! if (r >= 0 || (r == -1 && (cxt->flags & KSEQ_SUBSEQ) == 0)) /* success! or failure! */ + { + _rl_keyseq_chain_dispose (); +*** ../bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500 +--- patchlevel.h 2014-03-20 20:01:28.000000000 -0400 +*************** +*** 26,30 **** + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 2 + + #endif /* _PATCHLEVEL_H_ */ +--- 26,30 ---- + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 3 + + #endif /* _PATCHLEVEL_H_ */ diff --git a/patches/source/bash/bash-4.3-patches/bash43-004 b/patches/source/bash/bash-4.3-patches/bash43-004 new file mode 100644 index 00000000..010f04a2 --- /dev/null +++ b/patches/source/bash/bash-4.3-patches/bash43-004 @@ -0,0 +1,47 @@ + BASH PATCH REPORT + ================= + +Bash-Release: 4.3 +Patch-ID: bash43-004 + +Bug-Reported-by: Daan van Rossum <daan@flash.uchicago.edu> +Bug-Reference-ID: <20140307072523.GA14250@flash.uchicago.edu> +Bug-Reference-URL: + +Bug-Description: + +The `.' command in vi mode cannot undo multi-key commands beginning with +`c', `d', and `y' (command plus motion specifier). + +Patch (apply with `patch -p0'): + +*** ../bash-4.3/lib/readline/readline.c 2013-10-28 14:58:06.000000000 -0400 +--- lib/readline/readline.c 2014-03-07 15:20:33.000000000 -0500 +*************** +*** 965,969 **** + if (rl_editing_mode == vi_mode && _rl_keymap == vi_movement_keymap && + key != ANYOTHERKEY && +! rl_key_sequence_length == 1 && /* XXX */ + _rl_vi_textmod_command (key)) + _rl_vi_set_last (key, rl_numeric_arg, rl_arg_sign); +--- 965,969 ---- + if (rl_editing_mode == vi_mode && _rl_keymap == vi_movement_keymap && + key != ANYOTHERKEY && +! _rl_dispatching_keymap == vi_movement_keymap && + _rl_vi_textmod_command (key)) + _rl_vi_set_last (key, rl_numeric_arg, rl_arg_sign); +*** ../bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500 +--- patchlevel.h 2014-03-20 20:01:28.000000000 -0400 +*************** +*** 26,30 **** + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 3 + + #endif /* _PATCHLEVEL_H_ */ +--- 26,30 ---- + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 4 + + #endif /* _PATCHLEVEL_H_ */ diff --git a/patches/source/bash/bash-4.3-patches/bash43-005 b/patches/source/bash/bash-4.3-patches/bash43-005 new file mode 100644 index 00000000..bcd40697 --- /dev/null +++ b/patches/source/bash/bash-4.3-patches/bash43-005 @@ -0,0 +1,63 @@ + BASH PATCH REPORT + ================= + +Bash-Release: 4.3 +Patch-ID: bash43-005 + +Bug-Reported-by: David Sines <dave.gma@googlemail.com> +Bug-Reference-ID: <CAO3BAa_CK_Rgkhdfzs+NJ4KFYdB9qW3pvXQK0xLCi6GMmDU8bw@mail.gmail.com> +Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2014-03/msg00037.html + +Bug-Description: + +When in Posix mode, bash did not correctly interpret the ANSI-C-style +$'...' quoting mechanism when performing pattern substitution word +expansions within double quotes. + +Patch (apply with `patch -p0'): + +*** ../bash-4.3/parse.y 2014-02-11 09:42:10.000000000 -0500 +--- parse.y 2014-03-07 20:57:15.000000000 -0500 +*************** +*** 3399,3403 **** + unescaped double-quotes or single-quotes, if any, shall occur." */ + /* This was changed in Austin Group Interp 221 */ +! if MBTEST(posixly_correct && shell_compatibility_level > 41 && dolbrace_state != DOLBRACE_QUOTE && (flags & P_DQUOTE) && (flags & P_DOLBRACE) && ch == '\'') + continue; + +--- 3399,3403 ---- + unescaped double-quotes or single-quotes, if any, shall occur." */ + /* This was changed in Austin Group Interp 221 */ +! if MBTEST(posixly_correct && shell_compatibility_level > 41 && dolbrace_state != DOLBRACE_QUOTE && dolbrace_state != DOLBRACE_QUOTE2 && (flags & P_DQUOTE) && (flags & P_DOLBRACE) && ch == '\'') + continue; + +*** ../bash-4.3/y.tab.c 2014-02-11 10:57:47.000000000 -0500 +--- y.tab.c 2014-03-28 10:41:15.000000000 -0400 +*************** +*** 5711,5715 **** + unescaped double-quotes or single-quotes, if any, shall occur." */ + /* This was changed in Austin Group Interp 221 */ +! if MBTEST(posixly_correct && shell_compatibility_level > 41 && dolbrace_state != DOLBRACE_QUOTE && (flags & P_DQUOTE) && (flags & P_DOLBRACE) && ch == '\'') + continue; + +--- 5711,5715 ---- + unescaped double-quotes or single-quotes, if any, shall occur." */ + /* This was changed in Austin Group Interp 221 */ +! if MBTEST(posixly_correct && shell_compatibility_level > 41 && dolbrace_state != DOLBRACE_QUOTE && dolbrace_state != DOLBRACE_QUOTE2 && (flags & P_DQUOTE) && (flags & P_DOLBRACE) && ch == '\'') + continue; + +*** ../bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500 +--- patchlevel.h 2014-03-20 20:01:28.000000000 -0400 +*************** +*** 26,30 **** + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 4 + + #endif /* _PATCHLEVEL_H_ */ +--- 26,30 ---- + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 5 + + #endif /* _PATCHLEVEL_H_ */ diff --git a/patches/source/bash/bash-4.3-patches/bash43-006 b/patches/source/bash/bash-4.3-patches/bash43-006 new file mode 100644 index 00000000..24ff057a --- /dev/null +++ b/patches/source/bash/bash-4.3-patches/bash43-006 @@ -0,0 +1,48 @@ + BASH PATCH REPORT + ================= + +Bash-Release: 4.3 +Patch-ID: bash43-006 + +Bug-Reported-by: Eduardo A . Bustamante Lopez <dualbus@gmail.com> +Bug-Reference-ID: <20140228170013.GA16015@dualbus.me> +Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2014-02/msg00091.html + +Bug-Description: + +A shell that started with job control active but was not interactive left +the terminal in the wrong process group when exiting, causing its parent +shell to get a stop signal when it attempted to read from the terminal. + +Patch (apply with `patch -p0'): + +*** ../bash-4.3/jobs.c 2014-01-10 09:05:34.000000000 -0500 +--- jobs.c 2014-03-02 18:05:09.000000000 -0500 +*************** +*** 4375,4379 **** + end_job_control () + { +! if (interactive_shell) /* XXX - should it be interactive? */ + { + terminate_stopped_jobs (); +--- 4375,4379 ---- + end_job_control () + { +! if (interactive_shell || job_control) /* XXX - should it be just job_control? */ + { + terminate_stopped_jobs (); +*** ../bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500 +--- patchlevel.h 2014-03-20 20:01:28.000000000 -0400 +*************** +*** 26,30 **** + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 5 + + #endif /* _PATCHLEVEL_H_ */ +--- 26,30 ---- + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 6 + + #endif /* _PATCHLEVEL_H_ */ diff --git a/patches/source/bash/bash-4.3-patches/bash43-007 b/patches/source/bash/bash-4.3-patches/bash43-007 new file mode 100644 index 00000000..0d62c9ec --- /dev/null +++ b/patches/source/bash/bash-4.3-patches/bash43-007 @@ -0,0 +1,50 @@ + BASH PATCH REPORT + ================= + +Bash-Release: 4.3 +Patch-ID: bash43-007 + +Bug-Reported-by: geir.hauge@gmail.com +Bug-Reference-ID: <20140318093650.B181C1C5B0B@gina.itea.ntnu.no> +Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2014-03/msg00095.html + +Bug-Description: + +Using compound assignments for associative arrays like + +assoc=( [x]= [y]=bar ) + +left the value corresponding to the key `x' NULL. This caused subsequent +lookups to interpret it as unset. + +Patch (apply with `patch -p0'): + +*** ../bash-4.3/arrayfunc.c 2013-08-02 16:19:59.000000000 -0400 +--- arrayfunc.c 2014-03-18 11:08:15.000000000 -0400 +*************** +*** 598,601 **** +--- 598,606 ---- + { + val = expand_assignment_string_to_string (val, 0); ++ if (val == 0) ++ { ++ val = (char *)xmalloc (1); ++ val[0] = '\0'; /* like do_assignment_internal */ ++ } + free_val = 1; + } +*** ../bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500 +--- patchlevel.h 2014-03-20 20:01:28.000000000 -0400 +*************** +*** 26,30 **** + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 6 + + #endif /* _PATCHLEVEL_H_ */ +--- 26,30 ---- + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 7 + + #endif /* _PATCHLEVEL_H_ */ diff --git a/patches/source/bash/bash-4.3-patches/bash43-008 b/patches/source/bash/bash-4.3-patches/bash43-008 new file mode 100644 index 00000000..0ae7c952 --- /dev/null +++ b/patches/source/bash/bash-4.3-patches/bash43-008 @@ -0,0 +1,188 @@ + BASH PATCH REPORT + ================= + +Bash-Release: 4.3 +Patch-ID: bash43-008 + +Bug-Reported-by: Stephane Chazelas <stephane.chazelas@gmail.com> +Bug-Reference-ID: <20140318135901.GB22158@chaz.gmail.com> +Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2014-03/msg00098.html + +Bug-Description: + +Some extended glob patterns incorrectly matched filenames with a leading +dot, regardless of the setting of the `dotglob' option. + +Patch (apply with `patch -p0'): + +*** ../bash-4.3/lib/glob/gmisc.c 2013-10-28 14:45:25.000000000 -0400 +--- lib/glob/gmisc.c 2014-03-19 09:16:08.000000000 -0400 +*************** +*** 211,214 **** +--- 211,215 ---- + case '!': + case '@': ++ case '?': + return (pat[1] == LPAREN); + default: +*** ../bash-4.3/lib/glob/glob.c 2014-01-31 21:43:51.000000000 -0500 +--- lib/glob/glob.c 2014-03-20 09:01:26.000000000 -0400 +*************** +*** 180,202 **** + int flags; + { +! char *pp, *pe, *t; +! int n, r; + + pp = pat + 2; +! pe = pp + strlen (pp) - 1; /*(*/ +! if (*pe != ')') +! return 0; +! if ((t = strchr (pp, '|')) == 0) /* easy case first */ + { + *pe = '\0'; + r = skipname (pp, dname, flags); /*(*/ + *pe = ')'; + return r; + } + while (t = glob_patscan (pp, pe, '|')) + { + n = t[-1]; + t[-1] = '\0'; + r = skipname (pp, dname, flags); + t[-1] = n; + if (r == 0) /* if any pattern says not skip, we don't skip */ +--- 180,215 ---- + int flags; + { +! char *pp, *pe, *t, *se; +! int n, r, negate; + ++ negate = *pat == '!'; + pp = pat + 2; +! se = pp + strlen (pp) - 1; /* end of string */ +! pe = glob_patscan (pp, se, 0); /* end of extglob pattern (( */ +! /* we should check for invalid extglob pattern here */ +! /* if pe != se we have more of the pattern at the end of the extglob +! pattern. Check the easy case first ( */ +! if (pe == se && *pe == ')' && (t = strchr (pp, '|')) == 0) + { + *pe = '\0'; ++ #if defined (HANDLE_MULTIBYTE) ++ r = mbskipname (pp, dname, flags); ++ #else + r = skipname (pp, dname, flags); /*(*/ ++ #endif + *pe = ')'; + return r; + } ++ ++ /* check every subpattern */ + while (t = glob_patscan (pp, pe, '|')) + { + n = t[-1]; + t[-1] = '\0'; ++ #if defined (HANDLE_MULTIBYTE) ++ r = mbskipname (pp, dname, flags); ++ #else + r = skipname (pp, dname, flags); ++ #endif + t[-1] = n; + if (r == 0) /* if any pattern says not skip, we don't skip */ +*************** +*** 205,219 **** + } /*(*/ + +! if (pp == pe) /* glob_patscan might find end of pattern */ + return r; + +! *pe = '\0'; +! # if defined (HANDLE_MULTIBYTE) +! r = mbskipname (pp, dname, flags); /*(*/ +! # else +! r = skipname (pp, dname, flags); /*(*/ +! # endif +! *pe = ')'; +! return r; + } + #endif +--- 218,227 ---- + } /*(*/ + +! /* glob_patscan might find end of pattern */ +! if (pp == se) + return r; + +! /* but if it doesn't then we didn't match a leading dot */ +! return 0; + } + #endif +*************** +*** 278,289 **** + { + #if EXTENDED_GLOB +! wchar_t *pp, *pe, *t, n; +! int r; + + pp = pat + 2; +! pe = pp + wcslen (pp) - 1; /*(*/ +! if (*pe != L')') +! return 0; +! if ((t = wcschr (pp, L'|')) == 0) + { + *pe = L'\0'; +--- 286,298 ---- + { + #if EXTENDED_GLOB +! wchar_t *pp, *pe, *t, n, *se; +! int r, negate; + ++ negate = *pat == L'!'; + pp = pat + 2; +! se = pp + wcslen (pp) - 1; /*(*/ +! pe = glob_patscan_wc (pp, se, 0); +! +! if (pe == se && *pe == ')' && (t = wcschr (pp, L'|')) == 0) + { + *pe = L'\0'; +*************** +*** 292,295 **** +--- 301,306 ---- + return r; + } ++ ++ /* check every subpattern */ + while (t = glob_patscan_wc (pp, pe, '|')) + { +*************** +*** 306,313 **** + return r; + +! *pe = L'\0'; +! r = wchkname (pp, dname); /*(*/ +! *pe = L')'; +! return r; + #else + return (wchkname (pat, dname)); +--- 317,322 ---- + return r; + +! /* but if it doesn't then we didn't match a leading dot */ +! return 0; + #else + return (wchkname (pat, dname)); +*** ../bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500 +--- patchlevel.h 2014-03-20 20:01:28.000000000 -0400 +*************** +*** 26,30 **** + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 7 + + #endif /* _PATCHLEVEL_H_ */ +--- 26,30 ---- + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 8 + + #endif /* _PATCHLEVEL_H_ */ diff --git a/patches/source/bash/bash-4.3-patches/bash43-009 b/patches/source/bash/bash-4.3-patches/bash43-009 new file mode 100644 index 00000000..015835cd --- /dev/null +++ b/patches/source/bash/bash-4.3-patches/bash43-009 @@ -0,0 +1,64 @@ + BASH PATCH REPORT + ================= + +Bash-Release: 4.3 +Patch-ID: bash43-009 + +Bug-Reported-by: Matthias Klose <doko@debian.org> +Bug-Reference-ID: <53346FC8.6090005@debian.org> +Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2014-03/msg00171.html + +Bug-Description: + +There is a problem with unsigned sign extension when attempting to reallocate +the input line when it is fewer than 3 characters long and there has been a +history expansion. The sign extension causes the shell to not reallocate the +line, which results in a segmentation fault when it writes past the end. + +Patch (apply with `patch -p0'): + +*** ../bash-4.3-patched/parse.y 2014-02-11 09:42:10.000000000 -0500 +--- parse.y 2014-03-27 16:33:29.000000000 -0400 +*************** +*** 2425,2429 **** + if (shell_input_line_terminator != EOF) + { +! if (shell_input_line_size < SIZE_MAX && shell_input_line_len > shell_input_line_size - 3) + shell_input_line = (char *)xrealloc (shell_input_line, + 1 + (shell_input_line_size += 2)); +--- 2425,2429 ---- + if (shell_input_line_terminator != EOF) + { +! if (shell_input_line_size < SIZE_MAX-3 && (shell_input_line_len+3 > shell_input_line_size)) + shell_input_line = (char *)xrealloc (shell_input_line, + 1 + (shell_input_line_size += 2)); +*** ../bash-4.3-patched/y.tab.c 2014-03-28 11:17:06.000000000 -0400 +--- y.tab.c 2014-04-07 11:48:31.000000000 -0400 +*************** +*** 4737,4741 **** + if (shell_input_line_terminator != EOF) + { +! if (shell_input_line_size < SIZE_MAX && shell_input_line_len > shell_input_line_size - 3) + shell_input_line = (char *)xrealloc (shell_input_line, + 1 + (shell_input_line_size += 2)); +--- 4737,4741 ---- + if (shell_input_line_terminator != EOF) + { +! if (shell_input_line_size < SIZE_MAX-3 && (shell_input_line_len+3 > shell_input_line_size)) + shell_input_line = (char *)xrealloc (shell_input_line, + 1 + (shell_input_line_size += 2)); +*** ../bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500 +--- patchlevel.h 2014-03-20 20:01:28.000000000 -0400 +*************** +*** 26,30 **** + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 8 + + #endif /* _PATCHLEVEL_H_ */ +--- 26,30 ---- + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 9 + + #endif /* _PATCHLEVEL_H_ */ diff --git a/patches/source/bash/bash-4.3-patches/bash43-010 b/patches/source/bash/bash-4.3-patches/bash43-010 new file mode 100644 index 00000000..835a96ea --- /dev/null +++ b/patches/source/bash/bash-4.3-patches/bash43-010 @@ -0,0 +1,157 @@ + BASH PATCH REPORT + ================= + +Bash-Release: 4.3 +Patch-ID: bash43-010 + +Bug-Reported-by: Albert Shih <Albert.Shih@obspm.fr> +Bug-Reference-ID: Wed, 5 Mar 2014 23:01:40 +0100 +Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2014-03/msg00028.html + +Bug-Description: + +Patch (apply with `patch -p0'): + +This patch changes the behavior of programmable completion to compensate +for two assumptions made by the bash-completion package. Bash-4.3 changed +to dequote the argument to programmable completion only under certain +circumstances, to make the behavior of compgen more consistent when run +from the command line -- closer to the behavior when run by a shell function +run as part of programmable completion. Bash-completion can pass quoted +arguments to compgen when the original word to be completed was not quoted, +expecting programmable completion to dequote the word before attempting +completion. + +This patch fixes two cases: + +1. An empty string that bash-completion passes to compgen as a quoted null + string (''). + +2. An unquoted word that bash-completion quotes using single quotes or + backslashes before passing it to compgen. + +In these cases, since readline did not detect a quote character in the original +word to be completed, bash-4.3 + +*** ../bash-4.3/externs.h 2014-01-02 14:58:20.000000000 -0500 +--- externs.h 2014-03-13 14:42:57.000000000 -0400 +*************** +*** 325,328 **** +--- 325,329 ---- + extern char *sh_backslash_quote_for_double_quotes __P((char *)); + extern int sh_contains_shell_metas __P((char *)); ++ extern int sh_contains_quotes __P((char *)); + + /* declarations for functions defined in lib/sh/spell.c */ +*** ../bash-4.3/lib/sh/shquote.c 2013-03-31 21:53:32.000000000 -0400 +--- lib/sh/shquote.c 2014-03-13 14:42:57.000000000 -0400 +*************** +*** 312,313 **** +--- 312,327 ---- + return (0); + } ++ ++ int ++ sh_contains_quotes (string) ++ char *string; ++ { ++ char *s; ++ ++ for (s = string; s && *s; s++) ++ { ++ if (*s == '\'' || *s == '"' || *s == '\\') ++ return 1; ++ } ++ return 0; ++ } +*** ../bash-4.3/pcomplete.c 2013-08-26 15:23:45.000000000 -0400 +--- pcomplete.c 2014-03-25 17:23:23.000000000 -0400 +*************** +*** 184,187 **** +--- 184,188 ---- + COMPSPEC *pcomp_curcs; + const char *pcomp_curcmd; ++ const char *pcomp_curtxt; + + #ifdef DEBUG +*************** +*** 754,757 **** +--- 755,784 ---- + dfn = (*rl_filename_dequoting_function) ((char *)text, rl_completion_quote_character); + } ++ /* Intended to solve a mismatched assumption by bash-completion. If ++ the text to be completed is empty, but bash-completion turns it into ++ a quoted string ('') assuming that this code will dequote it before ++ calling readline, do the dequoting. */ ++ else if (iscompgen && iscompleting && ++ pcomp_curtxt && *pcomp_curtxt == 0 && ++ text && (*text == '\'' || *text == '"') && text[1] == text[0] && text[2] == 0 && ++ rl_filename_dequoting_function) ++ dfn = (*rl_filename_dequoting_function) ((char *)text, rl_completion_quote_character); ++ /* Another mismatched assumption by bash-completion. If compgen is being ++ run as part of bash-completion, and the argument to compgen is not ++ the same as the word originally passed to the programmable completion ++ code, dequote the argument if it has quote characters. It's an ++ attempt to detect when bash-completion is quoting its filename ++ argument before calling compgen. */ ++ /* We could check whether gen_shell_function_matches is in the call ++ stack by checking whether the gen-shell-function-matches tag is in ++ the unwind-protect stack, but there's no function to do that yet. ++ We could simply check whether we're executing in a function by ++ checking variable_context, and may end up doing that. */ ++ else if (iscompgen && iscompleting && rl_filename_dequoting_function && ++ pcomp_curtxt && text && ++ STREQ (pcomp_curtxt, text) == 0 && ++ variable_context && ++ sh_contains_quotes (text)) /* guess */ ++ dfn = (*rl_filename_dequoting_function) ((char *)text, rl_completion_quote_character); + else + dfn = savestring (text); +*************** +*** 1523,1527 **** + { + COMPSPEC *cs, *oldcs; +! const char *oldcmd; + STRINGLIST *ret; + +--- 1550,1554 ---- + { + COMPSPEC *cs, *oldcs; +! const char *oldcmd, *oldtxt; + STRINGLIST *ret; + +*************** +*** 1546,1552 **** +--- 1573,1581 ---- + oldcs = pcomp_curcs; + oldcmd = pcomp_curcmd; ++ oldtxt = pcomp_curtxt; + + pcomp_curcs = cs; + pcomp_curcmd = cmd; ++ pcomp_curtxt = word; + + ret = gen_compspec_completions (cs, cmd, word, start, end, foundp); +*************** +*** 1554,1557 **** +--- 1583,1587 ---- + pcomp_curcs = oldcs; + pcomp_curcmd = oldcmd; ++ pcomp_curtxt = oldtxt; + + /* We need to conditionally handle setting *retryp here */ +*** ../bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500 +--- patchlevel.h 2014-03-20 20:01:28.000000000 -0400 +*************** +*** 26,30 **** + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 9 + + #endif /* _PATCHLEVEL_H_ */ +--- 26,30 ---- + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 10 + + #endif /* _PATCHLEVEL_H_ */ diff --git a/patches/source/bash/bash-4.3-patches/bash43-011 b/patches/source/bash/bash-4.3-patches/bash43-011 new file mode 100644 index 00000000..cdc1572e --- /dev/null +++ b/patches/source/bash/bash-4.3-patches/bash43-011 @@ -0,0 +1,49 @@ + BASH PATCH REPORT + ================= + +Bash-Release: 4.3 +Patch-ID: bash43-011 + +Bug-Reported-by: Egmont Koblinger <egmont@gmail.com> +Bug-Reference-ID: <CAGWcZk+bU5Jo1M+tutGvL-250UBE9DXjpeJVofYJSFcqFEVfMg@mail.gmail.com> +Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2014-03/msg00153.html + +Bug-Description: + +The signal handling changes to bash and readline (to avoid running any code +in a signal handler context) cause the cursor to be placed on the wrong +line of a multi-line command after a ^C interrupts editing. + +Patch (apply with `patch -p0'): + +*** ../bash-4.3-patched/lib/readline/display.c 2013-12-27 13:10:56.000000000 -0500 +--- lib/readline/display.c 2014-03-27 11:52:45.000000000 -0400 +*************** +*** 2678,2682 **** + if (_rl_echoing_p) + { +! _rl_move_vert (_rl_vis_botlin); + _rl_vis_botlin = 0; + fflush (rl_outstream); +--- 2678,2683 ---- + if (_rl_echoing_p) + { +! if (_rl_vis_botlin > 0) /* minor optimization plus bug fix */ +! _rl_move_vert (_rl_vis_botlin); + _rl_vis_botlin = 0; + fflush (rl_outstream); +*** ../bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500 +--- patchlevel.h 2014-03-20 20:01:28.000000000 -0400 +*************** +*** 26,30 **** + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 10 + + #endif /* _PATCHLEVEL_H_ */ +--- 26,30 ---- + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 11 + + #endif /* _PATCHLEVEL_H_ */ diff --git a/patches/source/bash/bash-4.3-patches/bash43-012 b/patches/source/bash/bash-4.3-patches/bash43-012 new file mode 100644 index 00000000..176fa15b --- /dev/null +++ b/patches/source/bash/bash-4.3-patches/bash43-012 @@ -0,0 +1,43 @@ + BASH PATCH REPORT + ================= + +Bash-Release: 4.3 +Patch-ID: bash43-012 + +Bug-Reported-by: Eduardo A. Bustamante López<dualbus@gmail.com> +Bug-Reference-ID: <5346B54C.4070205@case.edu> +Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2014-04/msg00051.html + +Bug-Description: + +When a SIGCHLD trap runs a command containing a shell builtin while +a script is running `wait' to wait for all running children to complete, +the SIGCHLD trap will not be run once for each child that terminates. + +Patch (apply with `patch -p0'): + +*** ../bash-4.3-patched/jobs.c 2014-03-28 10:54:19.000000000 -0400 +--- jobs.c 2014-04-15 08:47:03.000000000 -0400 +*************** +*** 3598,3601 **** +--- 3598,3602 ---- + unwind_protect_pointer (the_pipeline); + unwind_protect_pointer (subst_assign_varlist); ++ unwind_protect_pointer (this_shell_builtin); + + /* We have to add the commands this way because they will be run +*** ../bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500 +--- patchlevel.h 2014-03-20 20:01:28.000000000 -0400 +*************** +*** 26,30 **** + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 11 + + #endif /* _PATCHLEVEL_H_ */ +--- 26,30 ---- + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 12 + + #endif /* _PATCHLEVEL_H_ */ diff --git a/patches/source/bash/bash-4.3-patches/bash43-013 b/patches/source/bash/bash-4.3-patches/bash43-013 new file mode 100644 index 00000000..8f4006b4 --- /dev/null +++ b/patches/source/bash/bash-4.3-patches/bash43-013 @@ -0,0 +1,66 @@ + BASH PATCH REPORT + ================= + +Bash-Release: 4.3 +Patch-ID: bash43-013 + +Bug-Reported-by: <Trond.Endrestol@ximalas.info> +Bug-Reference-ID: <alpine.BSF.2.03.1404192114310.1973@enterprise.ximalas.info> +Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2014-04/msg00069.html + +Bug-Description: + +Using reverse-i-search when horizontal scrolling is enabled does not redisplay +the entire line containing the successful search results. + +Patch (apply with `patch -p0'): +*** ../bash-4.3-patched/lib/readline/display.c 2014-04-08 18:19:36.000000000 -0400 +--- lib/readline/display.c 2014-04-20 18:32:52.000000000 -0400 +*************** +*** 1638,1642 **** + the spot of first difference is before the end of the invisible chars, + lendiff needs to be adjusted. */ +! if (current_line == 0 && !_rl_horizontal_scroll_mode && + current_invis_chars != visible_wrap_offset) + { +--- 1638,1642 ---- + the spot of first difference is before the end of the invisible chars, + lendiff needs to be adjusted. */ +! if (current_line == 0 && /* !_rl_horizontal_scroll_mode && */ + current_invis_chars != visible_wrap_offset) + { +*************** +*** 1826,1831 **** + _rl_last_c_pos += bytes_to_insert; + + if (_rl_horizontal_scroll_mode && ((oe-old) > (ne-new))) +! goto clear_rest_of_line; + } + } +--- 1826,1836 ---- + _rl_last_c_pos += bytes_to_insert; + ++ /* XXX - we only want to do this if we are at the end of the line ++ so we move there with _rl_move_cursor_relative */ + if (_rl_horizontal_scroll_mode && ((oe-old) > (ne-new))) +! { +! _rl_move_cursor_relative (ne-new, new); +! goto clear_rest_of_line; +! } + } + } +*** ../bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500 +--- patchlevel.h 2014-03-20 20:01:28.000000000 -0400 +*************** +*** 26,30 **** + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 12 + + #endif /* _PATCHLEVEL_H_ */ +--- 26,30 ---- + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 13 + + #endif /* _PATCHLEVEL_H_ */ diff --git a/patches/source/bash/bash-4.3-patches/bash43-014 b/patches/source/bash/bash-4.3-patches/bash43-014 new file mode 100644 index 00000000..f8371967 --- /dev/null +++ b/patches/source/bash/bash-4.3-patches/bash43-014 @@ -0,0 +1,102 @@ + BASH PATCH REPORT + ================= + +Bash-Release: 4.3 +Patch-ID: bash43-014 + +Bug-Reported-by: Greg Wooledge <wooledg@eeg.ccf.org> +Bug-Reference-ID: <20140418202123.GB7660@eeg.ccf.org> +Bug-Reference-URL: http://lists.gnu.org/archive/html/help-bash/2014-04/msg00004.html + +Bug-Description: + +Under certain circumstances, $@ is expanded incorrectly in contexts where +word splitting is not performed. + +Patch (apply with `patch -p0'): +*** ../bash-4.3-patched/subst.c 2014-01-23 16:26:37.000000000 -0500 +--- subst.c 2014-04-19 15:41:26.000000000 -0400 +*************** +*** 3249,3254 **** +--- 3249,3256 ---- + return ((char *)NULL); + ++ expand_no_split_dollar_star = 1; + w->flags |= W_NOSPLIT2; + l = call_expand_word_internal (w, 0, 0, (int *)0, (int *)0); ++ expand_no_split_dollar_star = 0; + if (l) + { +*************** +*** 7848,7851 **** +--- 7850,7857 ---- + according to POSIX.2, this expands to a list of the positional + parameters no matter what IFS is set to. */ ++ /* XXX - what to do when in a context where word splitting is not ++ performed? Even when IFS is not the default, posix seems to imply ++ that we behave like unquoted $* ? Maybe we should use PF_NOSPLIT2 ++ here. */ + temp = string_list_dollar_at (list, (pflags & PF_ASSIGNRHS) ? (quoted|Q_DOUBLE_QUOTES) : quoted); + +*************** +*** 8817,8820 **** +--- 8823,8827 ---- + { + char *ifs_chars; ++ char *tstring; + + ifs_chars = (quoted_dollar_at || has_dollar_at) ? ifs_value : (char *)NULL; +*************** +*** 8831,8834 **** +--- 8838,8865 ---- + if (split_on_spaces) + list = list_string (istring, " ", 1); /* XXX quoted == 1? */ ++ /* If we have $@ (has_dollar_at != 0) and we are in a context where we ++ don't want to split the result (W_NOSPLIT2), and we are not quoted, ++ we have already separated the arguments with the first character of ++ $IFS. In this case, we want to return a list with a single word ++ with the separator possibly replaced with a space (it's what other ++ shells seem to do). ++ quoted_dollar_at is internal to this function and is set if we are ++ passed an argument that is unquoted (quoted == 0) but we encounter a ++ double-quoted $@ while expanding it. */ ++ else if (has_dollar_at && quoted_dollar_at == 0 && ifs_chars && quoted == 0 && (word->flags & W_NOSPLIT2)) ++ { ++ /* Only split and rejoin if we have to */ ++ if (*ifs_chars && *ifs_chars != ' ') ++ { ++ list = list_string (istring, *ifs_chars ? ifs_chars : " ", 1); ++ tstring = string_list (list); ++ } ++ else ++ tstring = istring; ++ tword = make_bare_word (tstring); ++ if (tstring != istring) ++ free (tstring); ++ goto set_word_flags; ++ } + else if (has_dollar_at && ifs_chars) + list = list_string (istring, *ifs_chars ? ifs_chars : " ", 1); +*************** +*** 8836,8839 **** +--- 8867,8871 ---- + { + tword = make_bare_word (istring); ++ set_word_flags: + if ((quoted & (Q_DOUBLE_QUOTES|Q_HERE_DOCUMENT)) || (quoted_state == WHOLLY_QUOTED)) + tword->flags |= W_QUOTED; +*** ../bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500 +--- patchlevel.h 2014-03-20 20:01:28.000000000 -0400 +*************** +*** 26,30 **** + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 13 + + #endif /* _PATCHLEVEL_H_ */ +--- 26,30 ---- + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 14 + + #endif /* _PATCHLEVEL_H_ */ diff --git a/patches/source/bash/bash-4.3-patches/bash43-015 b/patches/source/bash/bash-4.3-patches/bash43-015 new file mode 100644 index 00000000..9c4e5ea4 --- /dev/null +++ b/patches/source/bash/bash-4.3-patches/bash43-015 @@ -0,0 +1,58 @@ + BASH PATCH REPORT + ================= + +Bash-Release: 4.3 +Patch-ID: bash43-015 + +Bug-Reported-by: Clark Wang <dearvoid@gmail.com> +Bug-Reference-ID: <CADv8-og2TOSoabXeNVXVGaXN3tEMHnYVq1rwOLe5meaRPSGRig@mail.gmail.com> +Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2014-04/msg00095.html + +Bug-Description: + +When completing directory names, the directory name is dequoted twice. +This causes problems for directories with single and double quotes in +their names. + +Patch (apply with `patch -p0'): +*** ../bash-4.3-patched/bashline.c 2014-02-09 19:56:58.000000000 -0500 +--- bashline.c 2014-04-25 14:57:52.000000000 -0400 +*************** +*** 4168,4174 **** + + qc = rl_dispatching ? rl_completion_quote_character : 0; +! dfn = bash_dequote_filename ((char *)text, qc); + m1 = rl_completion_matches (dfn, rl_filename_completion_function); +! free (dfn); + + if (m1 == 0 || m1[0] == 0) +--- 4209,4222 ---- + + qc = rl_dispatching ? rl_completion_quote_character : 0; +! /* If rl_completion_found_quote != 0, rl_completion_matches will call the +! filename dequoting function, causing the directory name to be dequoted +! twice. */ +! if (rl_dispatching && rl_completion_found_quote == 0) +! dfn = bash_dequote_filename ((char *)text, qc); +! else +! dfn = (char *)text; + m1 = rl_completion_matches (dfn, rl_filename_completion_function); +! if (dfn != text) +! free (dfn); + + if (m1 == 0 || m1[0] == 0) +*** ../bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500 +--- patchlevel.h 2014-03-20 20:01:28.000000000 -0400 +*************** +*** 26,30 **** + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 14 + + #endif /* _PATCHLEVEL_H_ */ +--- 26,30 ---- + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 15 + + #endif /* _PATCHLEVEL_H_ */ diff --git a/patches/source/bash/bash-4.3-patches/bash43-016 b/patches/source/bash/bash-4.3-patches/bash43-016 new file mode 100644 index 00000000..882d5939 --- /dev/null +++ b/patches/source/bash/bash-4.3-patches/bash43-016 @@ -0,0 +1,132 @@ + BASH PATCH REPORT + ================= + +Bash-Release: 4.3 +Patch-ID: bash43-016 + +Bug-Reported-by: Pierre Gaston <pierre.gaston@gmail.com> +Bug-Reference-ID: <CAPSX3sTCD61k1VQLJ5r-LWzEt+e7Xc-fxXmwn2u8EA5gJJej8Q@mail.gmail.com> +Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2014-04/msg00100.html + +Bug-Description: + +An extended glob pattern containing a slash (`/') causes the globbing code +to misinterpret it as a directory separator. + +Patch (apply with `patch -p0'): +*** ../bash-4.3-patched/lib/glob/glob.c 2014-03-28 10:54:23.000000000 -0400 +--- lib/glob/glob.c 2014-05-02 10:24:28.000000000 -0400 +*************** +*** 124,127 **** +--- 124,129 ---- + extern wchar_t *glob_patscan_wc __P((wchar_t *, wchar_t *, int)); + ++ extern char *glob_dirscan __P((char *, int)); ++ + /* Compile `glob_loop.c' for single-byte characters. */ + #define CHAR unsigned char +*************** +*** 188,191 **** +--- 190,196 ---- + pe = glob_patscan (pp, se, 0); /* end of extglob pattern (( */ + /* we should check for invalid extglob pattern here */ ++ if (pe == 0) ++ return 0; ++ + /* if pe != se we have more of the pattern at the end of the extglob + pattern. Check the easy case first ( */ +*************** +*** 1016,1020 **** + char **result; + unsigned int result_size; +! char *directory_name, *filename, *dname; + unsigned int directory_len; + int free_dirname; /* flag */ +--- 1021,1025 ---- + char **result; + unsigned int result_size; +! char *directory_name, *filename, *dname, *fn; + unsigned int directory_len; + int free_dirname; /* flag */ +*************** +*** 1032,1035 **** +--- 1037,1052 ---- + /* Find the filename. */ + filename = strrchr (pathname, '/'); ++ #if defined (EXTENDED_GLOB) ++ if (filename && extended_glob) ++ { ++ fn = glob_dirscan (pathname, '/'); ++ #if DEBUG_MATCHING ++ if (fn != filename) ++ fprintf (stderr, "glob_filename: glob_dirscan: fn (%s) != filename (%s)\n", fn ? fn : "(null)", filename); ++ #endif ++ filename = fn; ++ } ++ #endif ++ + if (filename == NULL) + { +*** ../bash-4.3-patched/lib/glob/gmisc.c 2014-03-28 10:54:23.000000000 -0400 +--- lib/glob/gmisc.c 2014-05-02 09:35:57.000000000 -0400 +*************** +*** 43,46 **** +--- 43,48 ---- + #define WRPAREN L')' + ++ extern char *glob_patscan __P((char *, char *, int)); ++ + /* Return 1 of the first character of WSTRING could match the first + character of pattern WPAT. Wide character version. */ +*************** +*** 376,377 **** +--- 378,410 ---- + return matlen; + } ++ ++ /* Skip characters in PAT and return the final occurrence of DIRSEP. This ++ is only called when extended_glob is set, so we have to skip over extglob ++ patterns x(...) */ ++ char * ++ glob_dirscan (pat, dirsep) ++ char *pat; ++ int dirsep; ++ { ++ char *p, *d, *pe, *se; ++ ++ d = pe = se = 0; ++ for (p = pat; p && *p; p++) ++ { ++ if (extglob_pattern_p (p)) ++ { ++ if (se == 0) ++ se = p + strlen (p) - 1; ++ pe = glob_patscan (p + 2, se, 0); ++ if (pe == 0) ++ continue; ++ else if (*pe == 0) ++ break; ++ p = pe - 1; /* will do increment above */ ++ continue; ++ } ++ if (*p == dirsep) ++ d = p; ++ } ++ return d; ++ } + +*** ../bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500 +--- patchlevel.h 2014-03-20 20:01:28.000000000 -0400 +*************** +*** 26,30 **** + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 15 + + #endif /* _PATCHLEVEL_H_ */ +--- 26,30 ---- + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 16 + + #endif /* _PATCHLEVEL_H_ */ diff --git a/patches/source/bash/bash-4.3-patches/bash43-017 b/patches/source/bash/bash-4.3-patches/bash43-017 new file mode 100644 index 00000000..4016fb93 --- /dev/null +++ b/patches/source/bash/bash-4.3-patches/bash43-017 @@ -0,0 +1,51 @@ + BASH PATCH REPORT + ================= + +Bash-Release: 4.3 +Patch-ID: bash43-017 + +Bug-Reported-by: Dan Douglas <ormaaj@gmail.com> +Bug-Reference-ID: <7781746.RhfoTROLxF@smorgbox> +Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2014-05/msg00026.html + +Bug-Description: + +The code that creates local variables should not clear the `invisible' +attribute when returning an existing local variable. Let the code that +actually assigns a value clear it. + +Patch (apply with `patch -p0'): +*** ../bash-4.3-patched/variables.c 2014-02-14 11:55:12.000000000 -0500 +--- variables.c 2014-05-07 10:53:57.000000000 -0400 +*************** +*** 2198,2205 **** + old_var = find_variable (name); + if (old_var && local_p (old_var) && old_var->context == variable_context) +! { +! VUNSETATTR (old_var, att_invisible); /* XXX */ +! return (old_var); +! } + + was_tmpvar = old_var && tempvar_p (old_var); +--- 2260,2264 ---- + old_var = find_variable (name); + if (old_var && local_p (old_var) && old_var->context == variable_context) +! return (old_var); + + was_tmpvar = old_var && tempvar_p (old_var); + +*** ../bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500 +--- patchlevel.h 2014-03-20 20:01:28.000000000 -0400 +*************** +*** 26,30 **** + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 16 + + #endif /* _PATCHLEVEL_H_ */ +--- 26,30 ---- + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 17 + + #endif /* _PATCHLEVEL_H_ */ diff --git a/patches/source/bash/bash-4.3-patches/bash43-018 b/patches/source/bash/bash-4.3-patches/bash43-018 new file mode 100644 index 00000000..39499f66 --- /dev/null +++ b/patches/source/bash/bash-4.3-patches/bash43-018 @@ -0,0 +1,44 @@ + BASH PATCH REPORT + ================= + +Bash-Release: 4.3 +Patch-ID: bash43-018 + +Bug-Reported-by: Geir Hauge <geir.hauge@gmail.com> +Bug-Reference-ID: <CAO-BiTLOvfPXDypg61jcBausADrxUKJejakV2WTWP26cW0=rgA@mail.gmail.com> +Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2014-05/msg00040.html + +Bug-Description: + +When assigning an array variable using the compound assignment syntax, +but using `declare' with the rhs of the compound assignment quoted, the +shell did not mark the variable as visible after successfully performing +the assignment. + +Patch (apply with `patch -p0'): +*** ../bash-4.3-patched/arrayfunc.c 2014-03-28 10:54:21.000000000 -0400 +--- arrayfunc.c 2014-05-12 11:19:00.000000000 -0400 +*************** +*** 180,183 **** +--- 180,184 ---- + FREE (newval); + ++ VUNSETATTR (entry, att_invisible); /* no longer invisible */ + return (entry); + } + +*** ../bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500 +--- patchlevel.h 2014-03-20 20:01:28.000000000 -0400 +*************** +*** 26,30 **** + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 17 + + #endif /* _PATCHLEVEL_H_ */ +--- 26,30 ---- + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 18 + + #endif /* _PATCHLEVEL_H_ */ diff --git a/patches/source/bash/bash-4.3-patches/bash43-019 b/patches/source/bash/bash-4.3-patches/bash43-019 new file mode 100644 index 00000000..a93714be --- /dev/null +++ b/patches/source/bash/bash-4.3-patches/bash43-019 @@ -0,0 +1,84 @@ + BASH PATCH REPORT + ================= + +Bash-Release: 4.3 +Patch-ID: bash43-019 + +Bug-Reported-by: John Lenton +Bug-Reference-ID: +Bug-Reference-URL: https://bugs.launchpad.net/ubuntu/+source/bash/+bug/1317476 + +Bug-Description: + +The -t timeout option to `read' does not work when the -e option is used. + +Patch (apply with `patch -p0'): + +*** ../bash-4.3-patched/lib/readline/input.c 2014-01-10 15:07:08.000000000 -0500 +--- lib/readline/input.c 2014-05-22 18:40:59.000000000 -0400 +*************** +*** 535,540 **** +--- 538,551 ---- + else if (_rl_caught_signal == SIGHUP || _rl_caught_signal == SIGTERM) + return (RL_ISSTATE (RL_STATE_READCMD) ? READERR : EOF); ++ /* keyboard-generated signals of interest */ + else if (_rl_caught_signal == SIGINT || _rl_caught_signal == SIGQUIT) + RL_CHECK_SIGNALS (); ++ /* non-keyboard-generated signals of interest */ ++ else if (_rl_caught_signal == SIGALRM ++ #if defined (SIGVTALRM) ++ || _rl_caught_signal == SIGVTALRM ++ #endif ++ ) ++ RL_CHECK_SIGNALS (); + + if (rl_signal_event_hook) +*** ../bash-4.3-patched/builtins/read.def 2013-09-02 11:54:00.000000000 -0400 +--- builtins/read.def 2014-05-08 11:43:35.000000000 -0400 +*************** +*** 443,447 **** + #if defined (READLINE) + if (edit) +! add_unwind_protect (reset_attempted_completion_function, (char *)NULL); + #endif + falarm (tmsec, tmusec); +--- 443,450 ---- + #if defined (READLINE) + if (edit) +! { +! add_unwind_protect (reset_attempted_completion_function, (char *)NULL); +! add_unwind_protect (bashline_reset_event_hook, (char *)NULL); +! } + #endif + falarm (tmsec, tmusec); +*************** +*** 1022,1025 **** +--- 1025,1029 ---- + old_attempted_completion_function = rl_attempted_completion_function; + rl_attempted_completion_function = (rl_completion_func_t *)NULL; ++ bashline_set_event_hook (); + if (itext) + { +*************** +*** 1033,1036 **** +--- 1037,1041 ---- + rl_attempted_completion_function = old_attempted_completion_function; + old_attempted_completion_function = (rl_completion_func_t *)NULL; ++ bashline_reset_event_hook (); + + if (ret == 0) +*** ../bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500 +--- patchlevel.h 2014-03-20 20:01:28.000000000 -0400 +*************** +*** 26,30 **** + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 18 + + #endif /* _PATCHLEVEL_H_ */ +--- 26,30 ---- + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 19 + + #endif /* _PATCHLEVEL_H_ */ diff --git a/patches/source/bash/bash-4.3-patches/bash43-020 b/patches/source/bash/bash-4.3-patches/bash43-020 new file mode 100644 index 00000000..5f533ef8 --- /dev/null +++ b/patches/source/bash/bash-4.3-patches/bash43-020 @@ -0,0 +1,110 @@ + BASH PATCH REPORT + ================= + +Bash-Release: 4.3 +Patch-ID: bash43-020 + +Bug-Reported-by: Jared Yanovich <slovichon@gmail.com> +Bug-Reference-ID: <20140417073654.GB26875@nightderanger.psc.edu> +Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2014-04/msg00065.html + +Bug-Description: + +When PS2 contains a command substitution, here-documents entered in an +interactive shell can sometimes cause a segmentation fault. + +Patch (apply with `patch -p0'): + +*** ../bash-4.3-patched/shell.h 2012-12-25 21:11:01.000000000 -0500 +--- shell.h 2014-06-03 09:24:28.000000000 -0400 +*************** +*** 169,173 **** + int expand_aliases; + int echo_input_at_read; +! + } sh_parser_state_t; + +--- 169,174 ---- + int expand_aliases; + int echo_input_at_read; +! int need_here_doc; +! + } sh_parser_state_t; + +*** ../bash-4.3-patched/parse.y 2014-05-14 09:16:40.000000000 -0400 +--- parse.y 2014-04-30 09:27:59.000000000 -0400 +*************** +*** 2643,2647 **** + + r = 0; +! while (need_here_doc) + { + parser_state |= PST_HEREDOC; +--- 2643,2647 ---- + + r = 0; +! while (need_here_doc > 0) + { + parser_state |= PST_HEREDOC; +*************** +*** 6076,6079 **** +--- 6076,6080 ---- + ps->expand_aliases = expand_aliases; + ps->echo_input_at_read = echo_input_at_read; ++ ps->need_here_doc = need_here_doc; + + ps->token = token; +*************** +*** 6124,6127 **** +--- 6125,6129 ---- + expand_aliases = ps->expand_aliases; + echo_input_at_read = ps->echo_input_at_read; ++ need_here_doc = ps->need_here_doc; + + FREE (token); +*** ../bash-4.3-patched/y.tab.c 2014-04-07 11:56:12.000000000 -0400 +--- y.tab.c 2014-07-30 09:55:57.000000000 -0400 +*************** +*** 4955,4959 **** + + r = 0; +! while (need_here_doc) + { + parser_state |= PST_HEREDOC; +--- 5151,5155 ---- + + r = 0; +! while (need_here_doc > 0) + { + parser_state |= PST_HEREDOC; +*************** +*** 8388,8391 **** +--- 8584,8588 ---- + ps->expand_aliases = expand_aliases; + ps->echo_input_at_read = echo_input_at_read; ++ ps->need_here_doc = need_here_doc; + + ps->token = token; +*************** +*** 8436,8439 **** +--- 8633,8637 ---- + expand_aliases = ps->expand_aliases; + echo_input_at_read = ps->echo_input_at_read; ++ need_here_doc = ps->need_here_doc; + + FREE (token); +*** ../bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500 +--- patchlevel.h 2014-03-20 20:01:28.000000000 -0400 +*************** +*** 26,30 **** + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 19 + + #endif /* _PATCHLEVEL_H_ */ +--- 26,30 ---- + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 20 + + #endif /* _PATCHLEVEL_H_ */ diff --git a/patches/source/bash/bash-4.3-patches/bash43-021 b/patches/source/bash/bash-4.3-patches/bash43-021 new file mode 100644 index 00000000..fd1c945e --- /dev/null +++ b/patches/source/bash/bash-4.3-patches/bash43-021 @@ -0,0 +1,52 @@ + BASH PATCH REPORT + ================= + +Bash-Release: 4.3 +Patch-ID: bash43-021 + +Bug-Reported-by: Jared Yanovich <slovichon@gmail.com> +Bug-Reference-ID: <20140625225019.GJ17044@nightderanger.psc.edu> +Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2014-06/msg00070.html + +Bug-Description: + +When the readline `revert-all-at-newline' option is set, pressing newline +when the current line is one retrieved from history results in a double free +and a segmentation fault. + +Patch (apply with `patch -p0'): + +*** ../bash-4.3-patched/lib/readline/misc.c 2012-09-01 18:03:11.000000000 -0400 +--- lib/readline/misc.c 2014-06-30 13:41:19.000000000 -0400 +*************** +*** 462,465 **** +--- 462,466 ---- + /* Set up rl_line_buffer and other variables from history entry */ + rl_replace_from_history (entry, 0); /* entry->line is now current */ ++ entry->data = 0; /* entry->data is now current undo list */ + /* Undo all changes to this history entry */ + while (rl_undo_list) +*************** +*** 469,473 **** + FREE (entry->line); + entry->line = savestring (rl_line_buffer); +- entry->data = 0; + } + entry = previous_history (); +--- 470,473 ---- + +*** ../bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500 +--- patchlevel.h 2014-03-20 20:01:28.000000000 -0400 +*************** +*** 26,30 **** + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 20 + + #endif /* _PATCHLEVEL_H_ */ +--- 26,30 ---- + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 21 + + #endif /* _PATCHLEVEL_H_ */ diff --git a/patches/source/bash/bash-4.3-patches/bash43-022 b/patches/source/bash/bash-4.3-patches/bash43-022 new file mode 100644 index 00000000..7ce39ec0 --- /dev/null +++ b/patches/source/bash/bash-4.3-patches/bash43-022 @@ -0,0 +1,56 @@ + BASH PATCH REPORT + ================= + +Bash-Release: 4.3 +Patch-ID: bash43-022 + +Bug-Reported-by: scorp.dev.null@gmail.com +Bug-Reference-ID: <E1WxXw8-0007iE-Bi@pcm14> +Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2014-06/msg00061.html + +Bug-Description: + +Using nested pipelines within loops with the `lastpipe' option set can result +in a segmentation fault. + +Patch (apply with `patch -p0'): + +*** ../bash-4.3-patched/execute_cmd.c 2014-01-31 10:54:52.000000000 -0500 +--- execute_cmd.c 2014-06-19 08:05:49.000000000 -0400 +*************** +*** 2410,2414 **** + lstdin = wait_for (lastpid); + #if defined (JOB_CONTROL) +! exec_result = job_exit_status (lastpipe_jid); + #endif + unfreeze_jobs_list (); +--- 2425,2438 ---- + lstdin = wait_for (lastpid); + #if defined (JOB_CONTROL) +! /* If wait_for removes the job from the jobs table, use result of last +! command as pipeline's exit status as usual. The jobs list can get +! frozen and unfrozen at inconvenient times if there are multiple pipelines +! running simultaneously. */ +! if (INVALID_JOB (lastpipe_jid) == 0) +! exec_result = job_exit_status (lastpipe_jid); +! else if (pipefail_opt) +! exec_result = exec_result | lstdin; /* XXX */ +! /* otherwise we use exec_result */ +! + #endif + unfreeze_jobs_list (); +*** ../bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500 +--- patchlevel.h 2014-03-20 20:01:28.000000000 -0400 +*************** +*** 26,30 **** + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 21 + + #endif /* _PATCHLEVEL_H_ */ +--- 26,30 ---- + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 22 + + #endif /* _PATCHLEVEL_H_ */ diff --git a/patches/source/bash/bash-4.3-patches/bash43-023 b/patches/source/bash/bash-4.3-patches/bash43-023 new file mode 100644 index 00000000..d1e4e9d7 --- /dev/null +++ b/patches/source/bash/bash-4.3-patches/bash43-023 @@ -0,0 +1,104 @@ + BASH PATCH REPORT + ================= + +Bash-Release: 4.3 +Patch-ID: bash43-023 + +Bug-Reported-by: Tim Friske <me@timfriske.com> +Bug-Reference-ID: <CAM1RzOcOR9zzC2i+aeES6LtbHNHoOV+0pZEYPrqxv_QAii-RXA@mail.gmail.com> +Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2014-06/msg00056.html + +Bug-Description: + +Bash does not correctly parse process substitution constructs that contain +unbalanced parentheses as part of the contained command. + +Patch (apply with `patch -p0'): + +*** ../bash-4.3-patched/subst.h 2014-01-11 21:02:27.000000000 -0500 +--- subst.h 2014-07-20 17:25:01.000000000 -0400 +*************** +*** 83,87 **** + Start extracting at (SINDEX) as if we had just seen "<(". + Make (SINDEX) get the position just after the matching ")". */ +! extern char *extract_process_subst __P((char *, char *, int *)); + #endif /* PROCESS_SUBSTITUTION */ + +--- 83,87 ---- + Start extracting at (SINDEX) as if we had just seen "<(". + Make (SINDEX) get the position just after the matching ")". */ +! extern char *extract_process_subst __P((char *, char *, int *, int)); + #endif /* PROCESS_SUBSTITUTION */ + +*** ../bash-4.3-patched/subst.c 2014-05-15 08:26:45.000000000 -0400 +--- subst.c 2014-07-20 17:26:44.000000000 -0400 +*************** +*** 1193,1202 **** + Make (SINDEX) get the position of the matching ")". */ /*))*/ + char * +! extract_process_subst (string, starter, sindex) + char *string; + char *starter; + int *sindex; + { + return (extract_delimited_string (string, sindex, starter, "(", ")", SX_COMMAND)); + } + #endif /* PROCESS_SUBSTITUTION */ +--- 1193,1208 ---- + Make (SINDEX) get the position of the matching ")". */ /*))*/ + char * +! extract_process_subst (string, starter, sindex, xflags) + char *string; + char *starter; + int *sindex; ++ int xflags; + { ++ #if 0 + return (extract_delimited_string (string, sindex, starter, "(", ")", SX_COMMAND)); ++ #else ++ xflags |= (no_longjmp_on_fatal_error ? SX_NOLONGJMP : 0); ++ return (xparse_dolparen (string, string+*sindex, sindex, xflags)); ++ #endif + } + #endif /* PROCESS_SUBSTITUTION */ +*************** +*** 1786,1790 **** + if (string[si] == '\0') + CQ_RETURN(si); +! temp = extract_process_subst (string, (c == '<') ? "<(" : ">(", &si); + free (temp); /* no SX_ALLOC here */ + i = si; +--- 1792,1796 ---- + if (string[si] == '\0') + CQ_RETURN(si); +! temp = extract_process_subst (string, (c == '<') ? "<(" : ">(", &si, 0); + free (temp); /* no SX_ALLOC here */ + i = si; +*************** +*** 8250,8254 **** + t_index = sindex + 1; /* skip past both '<' and LPAREN */ + +! temp1 = extract_process_subst (string, (c == '<') ? "<(" : ">(", &t_index); /*))*/ + sindex = t_index; + +--- 8256,8260 ---- + t_index = sindex + 1; /* skip past both '<' and LPAREN */ + +! temp1 = extract_process_subst (string, (c == '<') ? "<(" : ">(", &t_index, 0); /*))*/ + sindex = t_index; + +*** ../bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500 +--- patchlevel.h 2014-03-20 20:01:28.000000000 -0400 +*************** +*** 26,30 **** + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 22 + + #endif /* _PATCHLEVEL_H_ */ +--- 26,30 ---- + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 23 + + #endif /* _PATCHLEVEL_H_ */ diff --git a/patches/source/bash/bash-4.3-patches/bash43-024 b/patches/source/bash/bash-4.3-patches/bash43-024 new file mode 100644 index 00000000..a24b8fbb --- /dev/null +++ b/patches/source/bash/bash-4.3-patches/bash43-024 @@ -0,0 +1,54 @@ + BASH PATCH REPORT + ================= + +Bash-Release: 4.3 +Patch-ID: bash43-024 + +Bug-Reported-by: Corentin Peuvrel <cpeuvrel@pom-monitoring.com> +Bug-Reference-ID: <53CE9E5D.6050203@pom-monitoring.com> +Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2014-07/msg00021.html + +Bug-Description: + +Indirect variable references do not work correctly if the reference +variable expands to an array reference using a subscript other than 0 +(e.g., foo='bar[1]' ; echo ${!foo}). + +Patch (apply with `patch -p0'): + +*** ../bash-4.3-patched/subst.c 2014-06-03 09:32:44.000000000 -0400 +--- subst.c 2014-07-23 09:58:19.000000000 -0400 +*************** +*** 7375,7379 **** + + if (want_indir) +! tdesc = parameter_brace_expand_indir (name + 1, var_is_special, quoted, quoted_dollar_atp, contains_dollar_at); + else + tdesc = parameter_brace_expand_word (name, var_is_special, quoted, PF_IGNUNBOUND|(pflags&(PF_NOSPLIT2|PF_ASSIGNRHS)), &ind); +--- 7445,7455 ---- + + if (want_indir) +! { +! tdesc = parameter_brace_expand_indir (name + 1, var_is_special, quoted, quoted_dollar_atp, contains_dollar_at); +! /* Turn off the W_ARRAYIND flag because there is no way for this function +! to return the index we're supposed to be using. */ +! if (tdesc && tdesc->flags) +! tdesc->flags &= ~W_ARRAYIND; +! } + else + tdesc = parameter_brace_expand_word (name, var_is_special, quoted, PF_IGNUNBOUND|(pflags&(PF_NOSPLIT2|PF_ASSIGNRHS)), &ind); +*** ../bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500 +--- patchlevel.h 2014-03-20 20:01:28.000000000 -0400 +*************** +*** 26,30 **** + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 23 + + #endif /* _PATCHLEVEL_H_ */ +--- 26,30 ---- + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 24 + + #endif /* _PATCHLEVEL_H_ */ diff --git a/patches/source/bash/bash-4.3-patches/bash43-025 b/patches/source/bash/bash-4.3-patches/bash43-025 new file mode 100644 index 00000000..721aca03 --- /dev/null +++ b/patches/source/bash/bash-4.3-patches/bash43-025 @@ -0,0 +1,123 @@ + BASH PATCH REPORT + ================= + +Bash-Release: 4.3 +Patch-ID: bash43-025 + +Bug-Reported-by: Stephane Chazelas <stephane.chazelas@gmail.com> +Bug-Reference-ID: +Bug-Reference-URL: + +Bug-Description: + +Under certain circumstances, bash will execute user code while processing the +environment for exported function definitions. + +Patch (apply with `patch -p0'): + +*** ../bash-4.3-patched/builtins/common.h 2013-07-08 16:54:47.000000000 -0400 +--- builtins/common.h 2014-09-12 14:25:47.000000000 -0400 +*************** +*** 34,37 **** +--- 49,54 ---- + #define SEVAL_PARSEONLY 0x020 + #define SEVAL_NOLONGJMP 0x040 ++ #define SEVAL_FUNCDEF 0x080 /* only allow function definitions */ ++ #define SEVAL_ONECMD 0x100 /* only allow a single command */ + + /* Flags for describe_command, shared between type.def and command.def */ +*** ../bash-4.3-patched/builtins/evalstring.c 2014-02-11 09:42:10.000000000 -0500 +--- builtins/evalstring.c 2014-09-14 14:15:13.000000000 -0400 +*************** +*** 309,312 **** +--- 313,324 ---- + struct fd_bitmap *bitmap; + ++ if ((flags & SEVAL_FUNCDEF) && command->type != cm_function_def) ++ { ++ internal_warning ("%s: ignoring function definition attempt", from_file); ++ should_jump_to_top_level = 0; ++ last_result = last_command_exit_value = EX_BADUSAGE; ++ break; ++ } ++ + bitmap = new_fd_bitmap (FD_BITMAP_SIZE); + begin_unwind_frame ("pe_dispose"); +*************** +*** 369,372 **** +--- 381,387 ---- + dispose_fd_bitmap (bitmap); + discard_unwind_frame ("pe_dispose"); ++ ++ if (flags & SEVAL_ONECMD) ++ break; + } + } +*** ../bash-4.3-patched/variables.c 2014-05-15 08:26:50.000000000 -0400 +--- variables.c 2014-09-14 14:23:35.000000000 -0400 +*************** +*** 359,369 **** + strcpy (temp_string + char_index + 1, string); + +! if (posixly_correct == 0 || legal_identifier (name)) +! parse_and_execute (temp_string, name, SEVAL_NONINT|SEVAL_NOHIST); +! +! /* Ancient backwards compatibility. Old versions of bash exported +! functions like name()=() {...} */ +! if (name[char_index - 1] == ')' && name[char_index - 2] == '(') +! name[char_index - 2] = '\0'; + + if (temp_var = find_function (name)) +--- 364,372 ---- + strcpy (temp_string + char_index + 1, string); + +! /* Don't import function names that are invalid identifiers from the +! environment, though we still allow them to be defined as shell +! variables. */ +! if (legal_identifier (name)) +! parse_and_execute (temp_string, name, SEVAL_NONINT|SEVAL_NOHIST|SEVAL_FUNCDEF|SEVAL_ONECMD); + + if (temp_var = find_function (name)) +*************** +*** 382,389 **** + report_error (_("error importing function definition for `%s'"), name); + } +- +- /* ( */ +- if (name[char_index - 1] == ')' && name[char_index - 2] == '\0') +- name[char_index - 2] = '('; /* ) */ + } + #if defined (ARRAY_VARS) +--- 385,388 ---- +*** ../bash-4.3-patched/subst.c 2014-08-11 11:16:35.000000000 -0400 +--- subst.c 2014-09-12 15:31:04.000000000 -0400 +*************** +*** 8048,8052 **** + goto return0; + } +! else if (var = find_variable_last_nameref (temp1)) + { + temp = nameref_cell (var); +--- 8118,8124 ---- + goto return0; + } +! else if (var && (invisible_p (var) || var_isset (var) == 0)) +! temp = (char *)NULL; +! else if ((var = find_variable_last_nameref (temp1)) && var_isset (var) && invisible_p (var) == 0) + { + temp = nameref_cell (var); +*** ../bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500 +--- patchlevel.h 2014-03-20 20:01:28.000000000 -0400 +*************** +*** 26,30 **** + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 24 + + #endif /* _PATCHLEVEL_H_ */ +--- 26,30 ---- + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 25 + + #endif /* _PATCHLEVEL_H_ */ diff --git a/patches/source/bash/bash-4.3-patches/bash43-026 b/patches/source/bash/bash-4.3-patches/bash43-026 new file mode 100644 index 00000000..d5d5b1dd --- /dev/null +++ b/patches/source/bash/bash-4.3-patches/bash43-026 @@ -0,0 +1,60 @@ + BASH PATCH REPORT + ================= + +Bash-Release: 4.3 +Patch-ID: bash43-026 + +Bug-Reported-by: Tavis Ormandy <taviso@cmpxchg8b.com> +Bug-Reference-ID: +Bug-Reference-URL: http://twitter.com/taviso/statuses/514887394294652929 + +Bug-Description: + +Under certain circumstances, bash can incorrectly save a lookahead character and +return it on a subsequent call, even when reading a new line. + +Patch (apply with `patch -p0'): + +*** ../bash-4.3.25/parse.y 2014-07-30 10:14:31.000000000 -0400 +--- parse.y 2014-09-25 20:20:21.000000000 -0400 +*************** +*** 2954,2957 **** +--- 2954,2959 ---- + word_desc_to_read = (WORD_DESC *)NULL; + ++ eol_ungetc_lookahead = 0; ++ + current_token = '\n'; /* XXX */ + last_read_token = '\n'; +*** ../bash-4.3.25/y.tab.c 2014-07-30 10:14:32.000000000 -0400 +--- y.tab.c 2014-09-25 20:21:48.000000000 -0400 +*************** +*** 5266,5269 **** +--- 5266,5271 ---- + word_desc_to_read = (WORD_DESC *)NULL; + ++ eol_ungetc_lookahead = 0; ++ + current_token = '\n'; /* XXX */ + last_read_token = '\n'; +*************** +*** 8540,8542 **** + } + #endif /* HANDLE_MULTIBYTE */ +- +--- 8542,8543 ---- +*** ../bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500 +--- patchlevel.h 2014-03-20 20:01:28.000000000 -0400 +*************** +*** 26,30 **** + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 25 + + #endif /* _PATCHLEVEL_H_ */ +--- 26,30 ---- + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 26 + + #endif /* _PATCHLEVEL_H_ */ diff --git a/patches/source/bash/bash-4.3-patches/bash43-027 b/patches/source/bash/bash-4.3-patches/bash43-027 new file mode 100644 index 00000000..ef48bd82 --- /dev/null +++ b/patches/source/bash/bash-4.3-patches/bash43-027 @@ -0,0 +1,221 @@ + BASH PATCH REPORT + ================= + +Bash-Release: 4.3 +Patch-ID: bash43-027 + +Bug-Reported-by: Florian Weimer <fweimer@redhat.com> +Bug-Reference-ID: +Bug-Reference-URL: + +Bug-Description: + +This patch changes the encoding bash uses for exported functions to avoid +clashes with shell variables and to avoid depending only on an environment +variable's contents to determine whether or not to interpret it as a shell +function. + +Patch (apply with `patch -p0'): + +*** ../bash-4.3.26/variables.c 2014-09-25 23:02:18.000000000 -0400 +--- variables.c 2014-09-27 20:52:04.000000000 -0400 +*************** +*** 84,87 **** +--- 84,92 ---- + #define ifsname(s) ((s)[0] == 'I' && (s)[1] == 'F' && (s)[2] == 'S' && (s)[3] == '\0') + ++ #define BASHFUNC_PREFIX "BASH_FUNC_" ++ #define BASHFUNC_PREFLEN 10 /* == strlen(BASHFUNC_PREFIX */ ++ #define BASHFUNC_SUFFIX "%%" ++ #define BASHFUNC_SUFFLEN 2 /* == strlen(BASHFUNC_SUFFIX) */ ++ + extern char **environ; + +*************** +*** 280,284 **** + static void dispose_temporary_env __P((sh_free_func_t *)); + +! static inline char *mk_env_string __P((const char *, const char *)); + static char **make_env_array_from_var_list __P((SHELL_VAR **)); + static char **make_var_export_array __P((VAR_CONTEXT *)); +--- 285,289 ---- + static void dispose_temporary_env __P((sh_free_func_t *)); + +! static inline char *mk_env_string __P((const char *, const char *, int)); + static char **make_env_array_from_var_list __P((SHELL_VAR **)); + static char **make_var_export_array __P((VAR_CONTEXT *)); +*************** +*** 350,369 **** + /* If exported function, define it now. Don't import functions from + the environment in privileged mode. */ +! if (privmode == 0 && read_but_dont_execute == 0 && STREQN ("() {", string, 4)) + { + string_length = strlen (string); +! temp_string = (char *)xmalloc (3 + string_length + char_index); + +! strcpy (temp_string, name); +! temp_string[char_index] = ' '; +! strcpy (temp_string + char_index + 1, string); + + /* Don't import function names that are invalid identifiers from the + environment, though we still allow them to be defined as shell + variables. */ +! if (legal_identifier (name)) +! parse_and_execute (temp_string, name, SEVAL_NONINT|SEVAL_NOHIST|SEVAL_FUNCDEF|SEVAL_ONECMD); + +! if (temp_var = find_function (name)) + { + VSETATTR (temp_var, (att_exported|att_imported)); +--- 355,385 ---- + /* If exported function, define it now. Don't import functions from + the environment in privileged mode. */ +! if (privmode == 0 && read_but_dont_execute == 0 && +! STREQN (BASHFUNC_PREFIX, name, BASHFUNC_PREFLEN) && +! STREQ (BASHFUNC_SUFFIX, name + char_index - BASHFUNC_SUFFLEN) && +! STREQN ("() {", string, 4)) + { ++ size_t namelen; ++ char *tname; /* desired imported function name */ ++ ++ namelen = char_index - BASHFUNC_PREFLEN - BASHFUNC_SUFFLEN; ++ ++ tname = name + BASHFUNC_PREFLEN; /* start of func name */ ++ tname[namelen] = '\0'; /* now tname == func name */ ++ + string_length = strlen (string); +! temp_string = (char *)xmalloc (namelen + string_length + 2); + +! memcpy (temp_string, tname, namelen); +! temp_string[namelen] = ' '; +! memcpy (temp_string + namelen + 1, string, string_length + 1); + + /* Don't import function names that are invalid identifiers from the + environment, though we still allow them to be defined as shell + variables. */ +! if (absolute_program (tname) == 0 && (posixly_correct == 0 || legal_identifier (tname))) +! parse_and_execute (temp_string, tname, SEVAL_NONINT|SEVAL_NOHIST|SEVAL_FUNCDEF|SEVAL_ONECMD); + +! if (temp_var = find_function (tname)) + { + VSETATTR (temp_var, (att_exported|att_imported)); +*************** +*** 378,383 **** + } + last_command_exit_value = 1; +! report_error (_("error importing function definition for `%s'"), name); + } + } + #if defined (ARRAY_VARS) +--- 394,402 ---- + } + last_command_exit_value = 1; +! report_error (_("error importing function definition for `%s'"), tname); + } ++ ++ /* Restore original suffix */ ++ tname[namelen] = BASHFUNC_SUFFIX[0]; + } + #if defined (ARRAY_VARS) +*************** +*** 2955,2959 **** + + INVALIDATE_EXPORTSTR (var); +! var->exportstr = mk_env_string (name, value); + + array_needs_making = 1; +--- 2974,2978 ---- + + INVALIDATE_EXPORTSTR (var); +! var->exportstr = mk_env_string (name, value, 0); + + array_needs_making = 1; +*************** +*** 3853,3871 **** + + static inline char * +! mk_env_string (name, value) + const char *name, *value; + { +! int name_len, value_len; +! char *p; + + name_len = strlen (name); + value_len = STRLEN (value); +! p = (char *)xmalloc (2 + name_len + value_len); +! strcpy (p, name); +! p[name_len] = '='; + if (value && *value) +! strcpy (p + name_len + 1, value); + else +! p[name_len + 1] = '\0'; + return (p); + } +--- 3872,3911 ---- + + static inline char * +! mk_env_string (name, value, isfunc) + const char *name, *value; ++ int isfunc; + { +! size_t name_len, value_len; +! char *p, *q; + + name_len = strlen (name); + value_len = STRLEN (value); +! +! /* If we are exporting a shell function, construct the encoded function +! name. */ +! if (isfunc && value) +! { +! p = (char *)xmalloc (BASHFUNC_PREFLEN + name_len + BASHFUNC_SUFFLEN + value_len + 2); +! q = p; +! memcpy (q, BASHFUNC_PREFIX, BASHFUNC_PREFLEN); +! q += BASHFUNC_PREFLEN; +! memcpy (q, name, name_len); +! q += name_len; +! memcpy (q, BASHFUNC_SUFFIX, BASHFUNC_SUFFLEN); +! q += BASHFUNC_SUFFLEN; +! } +! else +! { +! p = (char *)xmalloc (2 + name_len + value_len); +! memcpy (p, name, name_len); +! q = p + name_len; +! } +! +! q[0] = '='; + if (value && *value) +! memcpy (q + 1, value, value_len + 1); + else +! q[1] = '\0'; +! + return (p); + } +*************** +*** 3953,3957 **** + using the cached exportstr... */ + list[list_index] = USE_EXPORTSTR ? savestring (value) +! : mk_env_string (var->name, value); + + if (USE_EXPORTSTR == 0) +--- 3993,3997 ---- + using the cached exportstr... */ + list[list_index] = USE_EXPORTSTR ? savestring (value) +! : mk_env_string (var->name, value, function_p (var)); + + if (USE_EXPORTSTR == 0) +*** ../bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500 +--- patchlevel.h 2014-03-20 20:01:28.000000000 -0400 +*************** +*** 26,30 **** + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 26 + + #endif /* _PATCHLEVEL_H_ */ +--- 26,30 ---- + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 27 + + #endif /* _PATCHLEVEL_H_ */ diff --git a/patches/source/bash/bash-4.3-patches/bash43-028 b/patches/source/bash/bash-4.3-patches/bash43-028 new file mode 100644 index 00000000..7448cf81 --- /dev/null +++ b/patches/source/bash/bash-4.3-patches/bash43-028 @@ -0,0 +1,2265 @@ + BASH PATCH REPORT + ================= + +Bash-Release: 4.3 +Patch-ID: bash43-028 + +Bug-Reported-by: Florian Weimer <fweimer@redhat.com> +Bug-Reference-ID: +Bug-Reference-URL: + +Bug-Description: + +There are two local buffer overflows in parse.y that can cause the shell +to dump core when given many here-documents attached to a single command +or many nested loops. + +Patch (apply with `patch -p0'): + +*** ../bash-4.3-patched/parse.y 2014-09-25 23:02:35.000000000 -0400 +--- parse.y 2014-09-29 16:47:03.000000000 -0400 +*************** +*** 169,172 **** +--- 169,175 ---- + static int reserved_word_acceptable __P((int)); + static int yylex __P((void)); ++ ++ static void push_heredoc __P((REDIRECT *)); ++ static char *mk_alexpansion __P((char *)); + static int alias_expand_token __P((char *)); + static int time_command_acceptable __P((void)); +*************** +*** 266,270 **** + /* Variables to manage the task of reading here documents, because we need to + defer the reading until after a complete command has been collected. */ +! static REDIRECT *redir_stack[10]; + int need_here_doc; + +--- 269,275 ---- + /* Variables to manage the task of reading here documents, because we need to + defer the reading until after a complete command has been collected. */ +! #define HEREDOC_MAX 16 +! +! static REDIRECT *redir_stack[HEREDOC_MAX]; + int need_here_doc; + +*************** +*** 308,312 **** + index is decremented after a case, select, or for command is parsed. */ + #define MAX_CASE_NEST 128 +! static int word_lineno[MAX_CASE_NEST]; + static int word_top = -1; + +--- 313,317 ---- + index is decremented after a case, select, or for command is parsed. */ + #define MAX_CASE_NEST 128 +! static int word_lineno[MAX_CASE_NEST+1]; + static int word_top = -1; + +*************** +*** 521,525 **** + redir.filename = $2; + $$ = make_redirection (source, r_reading_until, redir, 0); +! redir_stack[need_here_doc++] = $$; + } + | NUMBER LESS_LESS WORD +--- 526,530 ---- + redir.filename = $2; + $$ = make_redirection (source, r_reading_until, redir, 0); +! push_heredoc ($$); + } + | NUMBER LESS_LESS WORD +*************** +*** 528,532 **** + redir.filename = $3; + $$ = make_redirection (source, r_reading_until, redir, 0); +! redir_stack[need_here_doc++] = $$; + } + | REDIR_WORD LESS_LESS WORD +--- 533,537 ---- + redir.filename = $3; + $$ = make_redirection (source, r_reading_until, redir, 0); +! push_heredoc ($$); + } + | REDIR_WORD LESS_LESS WORD +*************** +*** 535,539 **** + redir.filename = $3; + $$ = make_redirection (source, r_reading_until, redir, REDIR_VARASSIGN); +! redir_stack[need_here_doc++] = $$; + } + | LESS_LESS_MINUS WORD +--- 540,544 ---- + redir.filename = $3; + $$ = make_redirection (source, r_reading_until, redir, REDIR_VARASSIGN); +! push_heredoc ($$); + } + | LESS_LESS_MINUS WORD +*************** +*** 542,546 **** + redir.filename = $2; + $$ = make_redirection (source, r_deblank_reading_until, redir, 0); +! redir_stack[need_here_doc++] = $$; + } + | NUMBER LESS_LESS_MINUS WORD +--- 547,551 ---- + redir.filename = $2; + $$ = make_redirection (source, r_deblank_reading_until, redir, 0); +! push_heredoc ($$); + } + | NUMBER LESS_LESS_MINUS WORD +*************** +*** 549,553 **** + redir.filename = $3; + $$ = make_redirection (source, r_deblank_reading_until, redir, 0); +! redir_stack[need_here_doc++] = $$; + } + | REDIR_WORD LESS_LESS_MINUS WORD +--- 554,558 ---- + redir.filename = $3; + $$ = make_redirection (source, r_deblank_reading_until, redir, 0); +! push_heredoc ($$); + } + | REDIR_WORD LESS_LESS_MINUS WORD +*************** +*** 556,560 **** + redir.filename = $3; + $$ = make_redirection (source, r_deblank_reading_until, redir, REDIR_VARASSIGN); +! redir_stack[need_here_doc++] = $$; + } + | LESS_LESS_LESS WORD +--- 561,565 ---- + redir.filename = $3; + $$ = make_redirection (source, r_deblank_reading_until, redir, REDIR_VARASSIGN); +! push_heredoc ($$); + } + | LESS_LESS_LESS WORD +*************** +*** 2637,2640 **** +--- 2642,2660 ---- + static int esacs_needed_count; + ++ static void ++ push_heredoc (r) ++ REDIRECT *r; ++ { ++ if (need_here_doc >= HEREDOC_MAX) ++ { ++ last_command_exit_value = EX_BADUSAGE; ++ need_here_doc = 0; ++ report_syntax_error (_("maximum here-document count exceeded")); ++ reset_parser (); ++ exit_shell (last_command_exit_value); ++ } ++ redir_stack[need_here_doc++] = r; ++ } ++ + void + gather_here_documents () +*** ../bash-4.3.27/y.tab.c 2014-10-01 11:38:24.000000000 -0400 +--- y.tab.c 2014-10-01 12:46:11.000000000 -0400 +*************** +*** 169,173 **** + + /* Copy the first part of user declarations. */ +! #line 21 "/usr/homes/chet/src/bash/src/parse.y" + + #include "config.h" +--- 169,173 ---- + + /* Copy the first part of user declarations. */ +! #line 21 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + + #include "config.h" +*************** +*** 320,323 **** +--- 320,326 ---- + static int reserved_word_acceptable __P((int)); + static int yylex __P((void)); ++ ++ static void push_heredoc __P((REDIRECT *)); ++ static char *mk_alexpansion __P((char *)); + static int alias_expand_token __P((char *)); + static int time_command_acceptable __P((void)); +*************** +*** 417,421 **** + /* Variables to manage the task of reading here documents, because we need to + defer the reading until after a complete command has been collected. */ +! static REDIRECT *redir_stack[10]; + int need_here_doc; + +--- 420,426 ---- + /* Variables to manage the task of reading here documents, because we need to + defer the reading until after a complete command has been collected. */ +! #define HEREDOC_MAX 16 +! +! static REDIRECT *redir_stack[HEREDOC_MAX]; + int need_here_doc; + +*************** +*** 459,463 **** + index is decremented after a case, select, or for command is parsed. */ + #define MAX_CASE_NEST 128 +! static int word_lineno[MAX_CASE_NEST]; + static int word_top = -1; + +--- 464,468 ---- + index is decremented after a case, select, or for command is parsed. */ + #define MAX_CASE_NEST 128 +! static int word_lineno[MAX_CASE_NEST+1]; + static int word_top = -1; + +*************** +*** 493,497 **** + #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED + typedef union YYSTYPE +! #line 324 "/usr/homes/chet/src/bash/src/parse.y" + { + WORD_DESC *word; /* the word that we read. */ +--- 498,502 ---- + #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED + typedef union YYSTYPE +! #line 329 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + WORD_DESC *word; /* the word that we read. */ +*************** +*** 504,508 **** + } + /* Line 193 of yacc.c. */ +! #line 507 "y.tab.c" + YYSTYPE; + # define yystype YYSTYPE /* obsolescent; will be withdrawn */ +--- 509,513 ---- + } + /* Line 193 of yacc.c. */ +! #line 512 "y.tab.c" + YYSTYPE; + # define yystype YYSTYPE /* obsolescent; will be withdrawn */ +*************** +*** 517,521 **** + + /* Line 216 of yacc.c. */ +! #line 520 "y.tab.c" + + #ifdef short +--- 522,526 ---- + + /* Line 216 of yacc.c. */ +! #line 525 "y.tab.c" + + #ifdef short +*************** +*** 887,907 **** + static const yytype_uint16 yyrline[] = + { +! 0, 377, 377, 388, 397, 412, 422, 424, 428, 434, +! 440, 446, 452, 458, 464, 470, 476, 482, 488, 494, +! 500, 506, 512, 518, 525, 532, 539, 546, 553, 560, +! 566, 572, 578, 584, 590, 596, 602, 608, 614, 620, +! 626, 632, 638, 644, 650, 656, 662, 668, 674, 680, +! 686, 692, 700, 702, 704, 708, 712, 723, 725, 729, +! 731, 733, 749, 751, 755, 757, 759, 761, 763, 765, +! 767, 769, 771, 773, 775, 779, 784, 789, 794, 799, +! 804, 809, 814, 821, 826, 831, 836, 843, 848, 853, +! 858, 863, 868, 875, 880, 885, 892, 895, 898, 902, +! 904, 935, 942, 947, 964, 969, 986, 993, 995, 997, +! 1002, 1006, 1010, 1014, 1016, 1018, 1022, 1023, 1027, 1029, +! 1031, 1033, 1037, 1039, 1041, 1043, 1045, 1047, 1051, 1053, +! 1062, 1070, 1071, 1077, 1078, 1085, 1089, 1091, 1093, 1100, +! 1102, 1104, 1108, 1109, 1112, 1114, 1116, 1120, 1121, 1130, +! 1143, 1159, 1174, 1176, 1178, 1185, 1188, 1192, 1194, 1200, +! 1206, 1223, 1243, 1245, 1268, 1272, 1274, 1276 + }; + #endif +--- 892,912 ---- + static const yytype_uint16 yyrline[] = + { +! 0, 382, 382, 393, 402, 417, 427, 429, 433, 439, +! 445, 451, 457, 463, 469, 475, 481, 487, 493, 499, +! 505, 511, 517, 523, 530, 537, 544, 551, 558, 565, +! 571, 577, 583, 589, 595, 601, 607, 613, 619, 625, +! 631, 637, 643, 649, 655, 661, 667, 673, 679, 685, +! 691, 697, 705, 707, 709, 713, 717, 728, 730, 734, +! 736, 738, 754, 756, 760, 762, 764, 766, 768, 770, +! 772, 774, 776, 778, 780, 784, 789, 794, 799, 804, +! 809, 814, 819, 826, 831, 836, 841, 848, 853, 858, +! 863, 868, 873, 880, 885, 890, 897, 900, 903, 907, +! 909, 940, 947, 952, 969, 974, 991, 998, 1000, 1002, +! 1007, 1011, 1015, 1019, 1021, 1023, 1027, 1028, 1032, 1034, +! 1036, 1038, 1042, 1044, 1046, 1048, 1050, 1052, 1056, 1058, +! 1067, 1075, 1076, 1082, 1083, 1090, 1094, 1096, 1098, 1105, +! 1107, 1109, 1113, 1114, 1117, 1119, 1121, 1125, 1126, 1135, +! 1148, 1164, 1179, 1181, 1183, 1190, 1193, 1197, 1199, 1205, +! 1211, 1228, 1248, 1250, 1273, 1277, 1279, 1281 + }; + #endif +*************** +*** 2094,2098 **** + { + case 2: +! #line 378 "/usr/homes/chet/src/bash/src/parse.y" + { + /* Case of regular command. Discard the error +--- 2099,2103 ---- + { + case 2: +! #line 383 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + /* Case of regular command. Discard the error +*************** +*** 2108,2112 **** + + case 3: +! #line 389 "/usr/homes/chet/src/bash/src/parse.y" + { + /* Case of regular command, but not a very +--- 2113,2117 ---- + + case 3: +! #line 394 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + /* Case of regular command, but not a very +*************** +*** 2120,2124 **** + + case 4: +! #line 398 "/usr/homes/chet/src/bash/src/parse.y" + { + /* Error during parsing. Return NULL command. */ +--- 2125,2129 ---- + + case 4: +! #line 403 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + /* Error during parsing. Return NULL command. */ +*************** +*** 2138,2142 **** + + case 5: +! #line 413 "/usr/homes/chet/src/bash/src/parse.y" + { + /* Case of EOF seen by itself. Do ignoreeof or +--- 2143,2147 ---- + + case 5: +! #line 418 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + /* Case of EOF seen by itself. Do ignoreeof or +*************** +*** 2149,2163 **** + + case 6: +! #line 423 "/usr/homes/chet/src/bash/src/parse.y" + { (yyval.word_list) = make_word_list ((yyvsp[(1) - (1)].word), (WORD_LIST *)NULL); } + break; + + case 7: +! #line 425 "/usr/homes/chet/src/bash/src/parse.y" + { (yyval.word_list) = make_word_list ((yyvsp[(2) - (2)].word), (yyvsp[(1) - (2)].word_list)); } + break; + + case 8: +! #line 429 "/usr/homes/chet/src/bash/src/parse.y" + { + source.dest = 1; +--- 2154,2168 ---- + + case 6: +! #line 428 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { (yyval.word_list) = make_word_list ((yyvsp[(1) - (1)].word), (WORD_LIST *)NULL); } + break; + + case 7: +! #line 430 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { (yyval.word_list) = make_word_list ((yyvsp[(2) - (2)].word), (yyvsp[(1) - (2)].word_list)); } + break; + + case 8: +! #line 434 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + source.dest = 1; +*************** +*** 2168,2172 **** + + case 9: +! #line 435 "/usr/homes/chet/src/bash/src/parse.y" + { + source.dest = 0; +--- 2173,2177 ---- + + case 9: +! #line 440 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + source.dest = 0; +*************** +*** 2177,2181 **** + + case 10: +! #line 441 "/usr/homes/chet/src/bash/src/parse.y" + { + source.dest = (yyvsp[(1) - (3)].number); +--- 2182,2186 ---- + + case 10: +! #line 446 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + source.dest = (yyvsp[(1) - (3)].number); +*************** +*** 2186,2190 **** + + case 11: +! #line 447 "/usr/homes/chet/src/bash/src/parse.y" + { + source.dest = (yyvsp[(1) - (3)].number); +--- 2191,2195 ---- + + case 11: +! #line 452 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + source.dest = (yyvsp[(1) - (3)].number); +*************** +*** 2195,2199 **** + + case 12: +! #line 453 "/usr/homes/chet/src/bash/src/parse.y" + { + source.filename = (yyvsp[(1) - (3)].word); +--- 2200,2204 ---- + + case 12: +! #line 458 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + source.filename = (yyvsp[(1) - (3)].word); +*************** +*** 2204,2208 **** + + case 13: +! #line 459 "/usr/homes/chet/src/bash/src/parse.y" + { + source.filename = (yyvsp[(1) - (3)].word); +--- 2209,2213 ---- + + case 13: +! #line 464 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + source.filename = (yyvsp[(1) - (3)].word); +*************** +*** 2213,2217 **** + + case 14: +! #line 465 "/usr/homes/chet/src/bash/src/parse.y" + { + source.dest = 1; +--- 2218,2222 ---- + + case 14: +! #line 470 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + source.dest = 1; +*************** +*** 2222,2226 **** + + case 15: +! #line 471 "/usr/homes/chet/src/bash/src/parse.y" + { + source.dest = (yyvsp[(1) - (3)].number); +--- 2227,2231 ---- + + case 15: +! #line 476 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + source.dest = (yyvsp[(1) - (3)].number); +*************** +*** 2231,2235 **** + + case 16: +! #line 477 "/usr/homes/chet/src/bash/src/parse.y" + { + source.filename = (yyvsp[(1) - (3)].word); +--- 2236,2240 ---- + + case 16: +! #line 482 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + source.filename = (yyvsp[(1) - (3)].word); +*************** +*** 2240,2244 **** + + case 17: +! #line 483 "/usr/homes/chet/src/bash/src/parse.y" + { + source.dest = 1; +--- 2245,2249 ---- + + case 17: +! #line 488 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + source.dest = 1; +*************** +*** 2249,2253 **** + + case 18: +! #line 489 "/usr/homes/chet/src/bash/src/parse.y" + { + source.dest = (yyvsp[(1) - (3)].number); +--- 2254,2258 ---- + + case 18: +! #line 494 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + source.dest = (yyvsp[(1) - (3)].number); +*************** +*** 2258,2262 **** + + case 19: +! #line 495 "/usr/homes/chet/src/bash/src/parse.y" + { + source.filename = (yyvsp[(1) - (3)].word); +--- 2263,2267 ---- + + case 19: +! #line 500 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + source.filename = (yyvsp[(1) - (3)].word); +*************** +*** 2267,2271 **** + + case 20: +! #line 501 "/usr/homes/chet/src/bash/src/parse.y" + { + source.dest = 0; +--- 2272,2276 ---- + + case 20: +! #line 506 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + source.dest = 0; +*************** +*** 2276,2280 **** + + case 21: +! #line 507 "/usr/homes/chet/src/bash/src/parse.y" + { + source.dest = (yyvsp[(1) - (3)].number); +--- 2281,2285 ---- + + case 21: +! #line 512 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + source.dest = (yyvsp[(1) - (3)].number); +*************** +*** 2285,2289 **** + + case 22: +! #line 513 "/usr/homes/chet/src/bash/src/parse.y" + { + source.filename = (yyvsp[(1) - (3)].word); +--- 2290,2294 ---- + + case 22: +! #line 518 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + source.filename = (yyvsp[(1) - (3)].word); +*************** +*** 2294,2358 **** + + case 23: +! #line 519 "/usr/homes/chet/src/bash/src/parse.y" + { + source.dest = 0; + redir.filename = (yyvsp[(2) - (2)].word); + (yyval.redirect) = make_redirection (source, r_reading_until, redir, 0); +! redir_stack[need_here_doc++] = (yyval.redirect); + } + break; + + case 24: +! #line 526 "/usr/homes/chet/src/bash/src/parse.y" + { + source.dest = (yyvsp[(1) - (3)].number); + redir.filename = (yyvsp[(3) - (3)].word); + (yyval.redirect) = make_redirection (source, r_reading_until, redir, 0); +! redir_stack[need_here_doc++] = (yyval.redirect); + } + break; + + case 25: +! #line 533 "/usr/homes/chet/src/bash/src/parse.y" + { + source.filename = (yyvsp[(1) - (3)].word); + redir.filename = (yyvsp[(3) - (3)].word); + (yyval.redirect) = make_redirection (source, r_reading_until, redir, REDIR_VARASSIGN); +! redir_stack[need_here_doc++] = (yyval.redirect); + } + break; + + case 26: +! #line 540 "/usr/homes/chet/src/bash/src/parse.y" + { + source.dest = 0; + redir.filename = (yyvsp[(2) - (2)].word); + (yyval.redirect) = make_redirection (source, r_deblank_reading_until, redir, 0); +! redir_stack[need_here_doc++] = (yyval.redirect); + } + break; + + case 27: +! #line 547 "/usr/homes/chet/src/bash/src/parse.y" + { + source.dest = (yyvsp[(1) - (3)].number); + redir.filename = (yyvsp[(3) - (3)].word); + (yyval.redirect) = make_redirection (source, r_deblank_reading_until, redir, 0); +! redir_stack[need_here_doc++] = (yyval.redirect); + } + break; + + case 28: +! #line 554 "/usr/homes/chet/src/bash/src/parse.y" + { + source.filename = (yyvsp[(1) - (3)].word); + redir.filename = (yyvsp[(3) - (3)].word); + (yyval.redirect) = make_redirection (source, r_deblank_reading_until, redir, REDIR_VARASSIGN); +! redir_stack[need_here_doc++] = (yyval.redirect); + } + break; + + case 29: +! #line 561 "/usr/homes/chet/src/bash/src/parse.y" + { + source.dest = 0; +--- 2299,2363 ---- + + case 23: +! #line 524 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + source.dest = 0; + redir.filename = (yyvsp[(2) - (2)].word); + (yyval.redirect) = make_redirection (source, r_reading_until, redir, 0); +! push_heredoc ((yyval.redirect)); + } + break; + + case 24: +! #line 531 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + source.dest = (yyvsp[(1) - (3)].number); + redir.filename = (yyvsp[(3) - (3)].word); + (yyval.redirect) = make_redirection (source, r_reading_until, redir, 0); +! push_heredoc ((yyval.redirect)); + } + break; + + case 25: +! #line 538 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + source.filename = (yyvsp[(1) - (3)].word); + redir.filename = (yyvsp[(3) - (3)].word); + (yyval.redirect) = make_redirection (source, r_reading_until, redir, REDIR_VARASSIGN); +! push_heredoc ((yyval.redirect)); + } + break; + + case 26: +! #line 545 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + source.dest = 0; + redir.filename = (yyvsp[(2) - (2)].word); + (yyval.redirect) = make_redirection (source, r_deblank_reading_until, redir, 0); +! push_heredoc ((yyval.redirect)); + } + break; + + case 27: +! #line 552 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + source.dest = (yyvsp[(1) - (3)].number); + redir.filename = (yyvsp[(3) - (3)].word); + (yyval.redirect) = make_redirection (source, r_deblank_reading_until, redir, 0); +! push_heredoc ((yyval.redirect)); + } + break; + + case 28: +! #line 559 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + source.filename = (yyvsp[(1) - (3)].word); + redir.filename = (yyvsp[(3) - (3)].word); + (yyval.redirect) = make_redirection (source, r_deblank_reading_until, redir, REDIR_VARASSIGN); +! push_heredoc ((yyval.redirect)); + } + break; + + case 29: +! #line 566 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + source.dest = 0; +*************** +*** 2363,2367 **** + + case 30: +! #line 567 "/usr/homes/chet/src/bash/src/parse.y" + { + source.dest = (yyvsp[(1) - (3)].number); +--- 2368,2372 ---- + + case 30: +! #line 572 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + source.dest = (yyvsp[(1) - (3)].number); +*************** +*** 2372,2376 **** + + case 31: +! #line 573 "/usr/homes/chet/src/bash/src/parse.y" + { + source.filename = (yyvsp[(1) - (3)].word); +--- 2377,2381 ---- + + case 31: +! #line 578 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + source.filename = (yyvsp[(1) - (3)].word); +*************** +*** 2381,2385 **** + + case 32: +! #line 579 "/usr/homes/chet/src/bash/src/parse.y" + { + source.dest = 0; +--- 2386,2390 ---- + + case 32: +! #line 584 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + source.dest = 0; +*************** +*** 2390,2394 **** + + case 33: +! #line 585 "/usr/homes/chet/src/bash/src/parse.y" + { + source.dest = (yyvsp[(1) - (3)].number); +--- 2395,2399 ---- + + case 33: +! #line 590 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + source.dest = (yyvsp[(1) - (3)].number); +*************** +*** 2399,2403 **** + + case 34: +! #line 591 "/usr/homes/chet/src/bash/src/parse.y" + { + source.filename = (yyvsp[(1) - (3)].word); +--- 2404,2408 ---- + + case 34: +! #line 596 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + source.filename = (yyvsp[(1) - (3)].word); +*************** +*** 2408,2412 **** + + case 35: +! #line 597 "/usr/homes/chet/src/bash/src/parse.y" + { + source.dest = 1; +--- 2413,2417 ---- + + case 35: +! #line 602 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + source.dest = 1; +*************** +*** 2417,2421 **** + + case 36: +! #line 603 "/usr/homes/chet/src/bash/src/parse.y" + { + source.dest = (yyvsp[(1) - (3)].number); +--- 2422,2426 ---- + + case 36: +! #line 608 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + source.dest = (yyvsp[(1) - (3)].number); +*************** +*** 2426,2430 **** + + case 37: +! #line 609 "/usr/homes/chet/src/bash/src/parse.y" + { + source.filename = (yyvsp[(1) - (3)].word); +--- 2431,2435 ---- + + case 37: +! #line 614 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + source.filename = (yyvsp[(1) - (3)].word); +*************** +*** 2435,2439 **** + + case 38: +! #line 615 "/usr/homes/chet/src/bash/src/parse.y" + { + source.dest = 0; +--- 2440,2444 ---- + + case 38: +! #line 620 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + source.dest = 0; +*************** +*** 2444,2448 **** + + case 39: +! #line 621 "/usr/homes/chet/src/bash/src/parse.y" + { + source.dest = (yyvsp[(1) - (3)].number); +--- 2449,2453 ---- + + case 39: +! #line 626 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + source.dest = (yyvsp[(1) - (3)].number); +*************** +*** 2453,2457 **** + + case 40: +! #line 627 "/usr/homes/chet/src/bash/src/parse.y" + { + source.filename = (yyvsp[(1) - (3)].word); +--- 2458,2462 ---- + + case 40: +! #line 632 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + source.filename = (yyvsp[(1) - (3)].word); +*************** +*** 2462,2466 **** + + case 41: +! #line 633 "/usr/homes/chet/src/bash/src/parse.y" + { + source.dest = 1; +--- 2467,2471 ---- + + case 41: +! #line 638 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + source.dest = 1; +*************** +*** 2471,2475 **** + + case 42: +! #line 639 "/usr/homes/chet/src/bash/src/parse.y" + { + source.dest = (yyvsp[(1) - (3)].number); +--- 2476,2480 ---- + + case 42: +! #line 644 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + source.dest = (yyvsp[(1) - (3)].number); +*************** +*** 2480,2484 **** + + case 43: +! #line 645 "/usr/homes/chet/src/bash/src/parse.y" + { + source.filename = (yyvsp[(1) - (3)].word); +--- 2485,2489 ---- + + case 43: +! #line 650 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + source.filename = (yyvsp[(1) - (3)].word); +*************** +*** 2489,2493 **** + + case 44: +! #line 651 "/usr/homes/chet/src/bash/src/parse.y" + { + source.dest = 1; +--- 2494,2498 ---- + + case 44: +! #line 656 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + source.dest = 1; +*************** +*** 2498,2502 **** + + case 45: +! #line 657 "/usr/homes/chet/src/bash/src/parse.y" + { + source.dest = (yyvsp[(1) - (3)].number); +--- 2503,2507 ---- + + case 45: +! #line 662 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + source.dest = (yyvsp[(1) - (3)].number); +*************** +*** 2507,2511 **** + + case 46: +! #line 663 "/usr/homes/chet/src/bash/src/parse.y" + { + source.filename = (yyvsp[(1) - (3)].word); +--- 2512,2516 ---- + + case 46: +! #line 668 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + source.filename = (yyvsp[(1) - (3)].word); +*************** +*** 2516,2520 **** + + case 47: +! #line 669 "/usr/homes/chet/src/bash/src/parse.y" + { + source.dest = 0; +--- 2521,2525 ---- + + case 47: +! #line 674 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + source.dest = 0; +*************** +*** 2525,2529 **** + + case 48: +! #line 675 "/usr/homes/chet/src/bash/src/parse.y" + { + source.dest = (yyvsp[(1) - (3)].number); +--- 2530,2534 ---- + + case 48: +! #line 680 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + source.dest = (yyvsp[(1) - (3)].number); +*************** +*** 2534,2538 **** + + case 49: +! #line 681 "/usr/homes/chet/src/bash/src/parse.y" + { + source.filename = (yyvsp[(1) - (3)].word); +--- 2539,2543 ---- + + case 49: +! #line 686 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + source.filename = (yyvsp[(1) - (3)].word); +*************** +*** 2543,2547 **** + + case 50: +! #line 687 "/usr/homes/chet/src/bash/src/parse.y" + { + source.dest = 1; +--- 2548,2552 ---- + + case 50: +! #line 692 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + source.dest = 1; +*************** +*** 2552,2556 **** + + case 51: +! #line 693 "/usr/homes/chet/src/bash/src/parse.y" + { + source.dest = 1; +--- 2557,2561 ---- + + case 51: +! #line 698 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + source.dest = 1; +*************** +*** 2561,2580 **** + + case 52: +! #line 701 "/usr/homes/chet/src/bash/src/parse.y" + { (yyval.element).word = (yyvsp[(1) - (1)].word); (yyval.element).redirect = 0; } + break; + + case 53: +! #line 703 "/usr/homes/chet/src/bash/src/parse.y" + { (yyval.element).word = (yyvsp[(1) - (1)].word); (yyval.element).redirect = 0; } + break; + + case 54: +! #line 705 "/usr/homes/chet/src/bash/src/parse.y" + { (yyval.element).redirect = (yyvsp[(1) - (1)].redirect); (yyval.element).word = 0; } + break; + + case 55: +! #line 709 "/usr/homes/chet/src/bash/src/parse.y" + { + (yyval.redirect) = (yyvsp[(1) - (1)].redirect); +--- 2566,2585 ---- + + case 52: +! #line 706 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { (yyval.element).word = (yyvsp[(1) - (1)].word); (yyval.element).redirect = 0; } + break; + + case 53: +! #line 708 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { (yyval.element).word = (yyvsp[(1) - (1)].word); (yyval.element).redirect = 0; } + break; + + case 54: +! #line 710 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { (yyval.element).redirect = (yyvsp[(1) - (1)].redirect); (yyval.element).word = 0; } + break; + + case 55: +! #line 714 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + (yyval.redirect) = (yyvsp[(1) - (1)].redirect); +*************** +*** 2583,2587 **** + + case 56: +! #line 713 "/usr/homes/chet/src/bash/src/parse.y" + { + register REDIRECT *t; +--- 2588,2592 ---- + + case 56: +! #line 718 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + register REDIRECT *t; +*************** +*** 2595,2619 **** + + case 57: +! #line 724 "/usr/homes/chet/src/bash/src/parse.y" + { (yyval.command) = make_simple_command ((yyvsp[(1) - (1)].element), (COMMAND *)NULL); } + break; + + case 58: +! #line 726 "/usr/homes/chet/src/bash/src/parse.y" + { (yyval.command) = make_simple_command ((yyvsp[(2) - (2)].element), (yyvsp[(1) - (2)].command)); } + break; + + case 59: +! #line 730 "/usr/homes/chet/src/bash/src/parse.y" + { (yyval.command) = clean_simple_command ((yyvsp[(1) - (1)].command)); } + break; + + case 60: +! #line 732 "/usr/homes/chet/src/bash/src/parse.y" + { (yyval.command) = (yyvsp[(1) - (1)].command); } + break; + + case 61: +! #line 734 "/usr/homes/chet/src/bash/src/parse.y" + { + COMMAND *tc; +--- 2600,2624 ---- + + case 57: +! #line 729 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { (yyval.command) = make_simple_command ((yyvsp[(1) - (1)].element), (COMMAND *)NULL); } + break; + + case 58: +! #line 731 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { (yyval.command) = make_simple_command ((yyvsp[(2) - (2)].element), (yyvsp[(1) - (2)].command)); } + break; + + case 59: +! #line 735 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { (yyval.command) = clean_simple_command ((yyvsp[(1) - (1)].command)); } + break; + + case 60: +! #line 737 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { (yyval.command) = (yyvsp[(1) - (1)].command); } + break; + + case 61: +! #line 739 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + COMMAND *tc; +*************** +*** 2634,2703 **** + + case 62: +! #line 750 "/usr/homes/chet/src/bash/src/parse.y" + { (yyval.command) = (yyvsp[(1) - (1)].command); } + break; + + case 63: +! #line 752 "/usr/homes/chet/src/bash/src/parse.y" + { (yyval.command) = (yyvsp[(1) - (1)].command); } + break; + + case 64: +! #line 756 "/usr/homes/chet/src/bash/src/parse.y" + { (yyval.command) = (yyvsp[(1) - (1)].command); } + break; + + case 65: +! #line 758 "/usr/homes/chet/src/bash/src/parse.y" + { (yyval.command) = (yyvsp[(1) - (1)].command); } + break; + + case 66: +! #line 760 "/usr/homes/chet/src/bash/src/parse.y" + { (yyval.command) = make_while_command ((yyvsp[(2) - (5)].command), (yyvsp[(4) - (5)].command)); } + break; + + case 67: +! #line 762 "/usr/homes/chet/src/bash/src/parse.y" + { (yyval.command) = make_until_command ((yyvsp[(2) - (5)].command), (yyvsp[(4) - (5)].command)); } + break; + + case 68: +! #line 764 "/usr/homes/chet/src/bash/src/parse.y" + { (yyval.command) = (yyvsp[(1) - (1)].command); } + break; + + case 69: +! #line 766 "/usr/homes/chet/src/bash/src/parse.y" + { (yyval.command) = (yyvsp[(1) - (1)].command); } + break; + + case 70: +! #line 768 "/usr/homes/chet/src/bash/src/parse.y" + { (yyval.command) = (yyvsp[(1) - (1)].command); } + break; + + case 71: +! #line 770 "/usr/homes/chet/src/bash/src/parse.y" + { (yyval.command) = (yyvsp[(1) - (1)].command); } + break; + + case 72: +! #line 772 "/usr/homes/chet/src/bash/src/parse.y" + { (yyval.command) = (yyvsp[(1) - (1)].command); } + break; + + case 73: +! #line 774 "/usr/homes/chet/src/bash/src/parse.y" + { (yyval.command) = (yyvsp[(1) - (1)].command); } + break; + + case 74: +! #line 776 "/usr/homes/chet/src/bash/src/parse.y" + { (yyval.command) = (yyvsp[(1) - (1)].command); } + break; + + case 75: +! #line 780 "/usr/homes/chet/src/bash/src/parse.y" + { + (yyval.command) = make_for_command ((yyvsp[(2) - (6)].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(5) - (6)].command), word_lineno[word_top]); +--- 2639,2708 ---- + + case 62: +! #line 755 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { (yyval.command) = (yyvsp[(1) - (1)].command); } + break; + + case 63: +! #line 757 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { (yyval.command) = (yyvsp[(1) - (1)].command); } + break; + + case 64: +! #line 761 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { (yyval.command) = (yyvsp[(1) - (1)].command); } + break; + + case 65: +! #line 763 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { (yyval.command) = (yyvsp[(1) - (1)].command); } + break; + + case 66: +! #line 765 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { (yyval.command) = make_while_command ((yyvsp[(2) - (5)].command), (yyvsp[(4) - (5)].command)); } + break; + + case 67: +! #line 767 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { (yyval.command) = make_until_command ((yyvsp[(2) - (5)].command), (yyvsp[(4) - (5)].command)); } + break; + + case 68: +! #line 769 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { (yyval.command) = (yyvsp[(1) - (1)].command); } + break; + + case 69: +! #line 771 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { (yyval.command) = (yyvsp[(1) - (1)].command); } + break; + + case 70: +! #line 773 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { (yyval.command) = (yyvsp[(1) - (1)].command); } + break; + + case 71: +! #line 775 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { (yyval.command) = (yyvsp[(1) - (1)].command); } + break; + + case 72: +! #line 777 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { (yyval.command) = (yyvsp[(1) - (1)].command); } + break; + + case 73: +! #line 779 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { (yyval.command) = (yyvsp[(1) - (1)].command); } + break; + + case 74: +! #line 781 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { (yyval.command) = (yyvsp[(1) - (1)].command); } + break; + + case 75: +! #line 785 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + (yyval.command) = make_for_command ((yyvsp[(2) - (6)].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(5) - (6)].command), word_lineno[word_top]); +*************** +*** 2707,2711 **** + + case 76: +! #line 785 "/usr/homes/chet/src/bash/src/parse.y" + { + (yyval.command) = make_for_command ((yyvsp[(2) - (6)].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(5) - (6)].command), word_lineno[word_top]); +--- 2712,2716 ---- + + case 76: +! #line 790 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + (yyval.command) = make_for_command ((yyvsp[(2) - (6)].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(5) - (6)].command), word_lineno[word_top]); +*************** +*** 2715,2719 **** + + case 77: +! #line 790 "/usr/homes/chet/src/bash/src/parse.y" + { + (yyval.command) = make_for_command ((yyvsp[(2) - (7)].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(6) - (7)].command), word_lineno[word_top]); +--- 2720,2724 ---- + + case 77: +! #line 795 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + (yyval.command) = make_for_command ((yyvsp[(2) - (7)].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(6) - (7)].command), word_lineno[word_top]); +*************** +*** 2723,2727 **** + + case 78: +! #line 795 "/usr/homes/chet/src/bash/src/parse.y" + { + (yyval.command) = make_for_command ((yyvsp[(2) - (7)].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(6) - (7)].command), word_lineno[word_top]); +--- 2728,2732 ---- + + case 78: +! #line 800 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + (yyval.command) = make_for_command ((yyvsp[(2) - (7)].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(6) - (7)].command), word_lineno[word_top]); +*************** +*** 2731,2735 **** + + case 79: +! #line 800 "/usr/homes/chet/src/bash/src/parse.y" + { + (yyval.command) = make_for_command ((yyvsp[(2) - (10)].word), REVERSE_LIST ((yyvsp[(5) - (10)].word_list), WORD_LIST *), (yyvsp[(9) - (10)].command), word_lineno[word_top]); +--- 2736,2740 ---- + + case 79: +! #line 805 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + (yyval.command) = make_for_command ((yyvsp[(2) - (10)].word), REVERSE_LIST ((yyvsp[(5) - (10)].word_list), WORD_LIST *), (yyvsp[(9) - (10)].command), word_lineno[word_top]); +*************** +*** 2739,2743 **** + + case 80: +! #line 805 "/usr/homes/chet/src/bash/src/parse.y" + { + (yyval.command) = make_for_command ((yyvsp[(2) - (10)].word), REVERSE_LIST ((yyvsp[(5) - (10)].word_list), WORD_LIST *), (yyvsp[(9) - (10)].command), word_lineno[word_top]); +--- 2744,2748 ---- + + case 80: +! #line 810 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + (yyval.command) = make_for_command ((yyvsp[(2) - (10)].word), REVERSE_LIST ((yyvsp[(5) - (10)].word_list), WORD_LIST *), (yyvsp[(9) - (10)].command), word_lineno[word_top]); +*************** +*** 2747,2751 **** + + case 81: +! #line 810 "/usr/homes/chet/src/bash/src/parse.y" + { + (yyval.command) = make_for_command ((yyvsp[(2) - (9)].word), (WORD_LIST *)NULL, (yyvsp[(8) - (9)].command), word_lineno[word_top]); +--- 2752,2756 ---- + + case 81: +! #line 815 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + (yyval.command) = make_for_command ((yyvsp[(2) - (9)].word), (WORD_LIST *)NULL, (yyvsp[(8) - (9)].command), word_lineno[word_top]); +*************** +*** 2755,2759 **** + + case 82: +! #line 815 "/usr/homes/chet/src/bash/src/parse.y" + { + (yyval.command) = make_for_command ((yyvsp[(2) - (9)].word), (WORD_LIST *)NULL, (yyvsp[(8) - (9)].command), word_lineno[word_top]); +--- 2760,2764 ---- + + case 82: +! #line 820 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + (yyval.command) = make_for_command ((yyvsp[(2) - (9)].word), (WORD_LIST *)NULL, (yyvsp[(8) - (9)].command), word_lineno[word_top]); +*************** +*** 2763,2767 **** + + case 83: +! #line 822 "/usr/homes/chet/src/bash/src/parse.y" + { + (yyval.command) = make_arith_for_command ((yyvsp[(2) - (7)].word_list), (yyvsp[(6) - (7)].command), arith_for_lineno); +--- 2768,2772 ---- + + case 83: +! #line 827 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + (yyval.command) = make_arith_for_command ((yyvsp[(2) - (7)].word_list), (yyvsp[(6) - (7)].command), arith_for_lineno); +*************** +*** 2771,2775 **** + + case 84: +! #line 827 "/usr/homes/chet/src/bash/src/parse.y" + { + (yyval.command) = make_arith_for_command ((yyvsp[(2) - (7)].word_list), (yyvsp[(6) - (7)].command), arith_for_lineno); +--- 2776,2780 ---- + + case 84: +! #line 832 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + (yyval.command) = make_arith_for_command ((yyvsp[(2) - (7)].word_list), (yyvsp[(6) - (7)].command), arith_for_lineno); +*************** +*** 2779,2783 **** + + case 85: +! #line 832 "/usr/homes/chet/src/bash/src/parse.y" + { + (yyval.command) = make_arith_for_command ((yyvsp[(2) - (5)].word_list), (yyvsp[(4) - (5)].command), arith_for_lineno); +--- 2784,2788 ---- + + case 85: +! #line 837 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + (yyval.command) = make_arith_for_command ((yyvsp[(2) - (5)].word_list), (yyvsp[(4) - (5)].command), arith_for_lineno); +*************** +*** 2787,2791 **** + + case 86: +! #line 837 "/usr/homes/chet/src/bash/src/parse.y" + { + (yyval.command) = make_arith_for_command ((yyvsp[(2) - (5)].word_list), (yyvsp[(4) - (5)].command), arith_for_lineno); +--- 2792,2796 ---- + + case 86: +! #line 842 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + (yyval.command) = make_arith_for_command ((yyvsp[(2) - (5)].word_list), (yyvsp[(4) - (5)].command), arith_for_lineno); +*************** +*** 2795,2799 **** + + case 87: +! #line 844 "/usr/homes/chet/src/bash/src/parse.y" + { + (yyval.command) = make_select_command ((yyvsp[(2) - (6)].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(5) - (6)].command), word_lineno[word_top]); +--- 2800,2804 ---- + + case 87: +! #line 849 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + (yyval.command) = make_select_command ((yyvsp[(2) - (6)].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(5) - (6)].command), word_lineno[word_top]); +*************** +*** 2803,2807 **** + + case 88: +! #line 849 "/usr/homes/chet/src/bash/src/parse.y" + { + (yyval.command) = make_select_command ((yyvsp[(2) - (6)].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(5) - (6)].command), word_lineno[word_top]); +--- 2808,2812 ---- + + case 88: +! #line 854 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + (yyval.command) = make_select_command ((yyvsp[(2) - (6)].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(5) - (6)].command), word_lineno[word_top]); +*************** +*** 2811,2815 **** + + case 89: +! #line 854 "/usr/homes/chet/src/bash/src/parse.y" + { + (yyval.command) = make_select_command ((yyvsp[(2) - (7)].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(6) - (7)].command), word_lineno[word_top]); +--- 2816,2820 ---- + + case 89: +! #line 859 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + (yyval.command) = make_select_command ((yyvsp[(2) - (7)].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(6) - (7)].command), word_lineno[word_top]); +*************** +*** 2819,2823 **** + + case 90: +! #line 859 "/usr/homes/chet/src/bash/src/parse.y" + { + (yyval.command) = make_select_command ((yyvsp[(2) - (7)].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(6) - (7)].command), word_lineno[word_top]); +--- 2824,2828 ---- + + case 90: +! #line 864 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + (yyval.command) = make_select_command ((yyvsp[(2) - (7)].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(6) - (7)].command), word_lineno[word_top]); +*************** +*** 2827,2831 **** + + case 91: +! #line 864 "/usr/homes/chet/src/bash/src/parse.y" + { + (yyval.command) = make_select_command ((yyvsp[(2) - (10)].word), REVERSE_LIST ((yyvsp[(5) - (10)].word_list), WORD_LIST *), (yyvsp[(9) - (10)].command), word_lineno[word_top]); +--- 2832,2836 ---- + + case 91: +! #line 869 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + (yyval.command) = make_select_command ((yyvsp[(2) - (10)].word), REVERSE_LIST ((yyvsp[(5) - (10)].word_list), WORD_LIST *), (yyvsp[(9) - (10)].command), word_lineno[word_top]); +*************** +*** 2835,2839 **** + + case 92: +! #line 869 "/usr/homes/chet/src/bash/src/parse.y" + { + (yyval.command) = make_select_command ((yyvsp[(2) - (10)].word), REVERSE_LIST ((yyvsp[(5) - (10)].word_list), WORD_LIST *), (yyvsp[(9) - (10)].command), word_lineno[word_top]); +--- 2840,2844 ---- + + case 92: +! #line 874 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + (yyval.command) = make_select_command ((yyvsp[(2) - (10)].word), REVERSE_LIST ((yyvsp[(5) - (10)].word_list), WORD_LIST *), (yyvsp[(9) - (10)].command), word_lineno[word_top]); +*************** +*** 2843,2847 **** + + case 93: +! #line 876 "/usr/homes/chet/src/bash/src/parse.y" + { + (yyval.command) = make_case_command ((yyvsp[(2) - (6)].word), (PATTERN_LIST *)NULL, word_lineno[word_top]); +--- 2848,2852 ---- + + case 93: +! #line 881 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + (yyval.command) = make_case_command ((yyvsp[(2) - (6)].word), (PATTERN_LIST *)NULL, word_lineno[word_top]); +*************** +*** 2851,2855 **** + + case 94: +! #line 881 "/usr/homes/chet/src/bash/src/parse.y" + { + (yyval.command) = make_case_command ((yyvsp[(2) - (7)].word), (yyvsp[(5) - (7)].pattern), word_lineno[word_top]); +--- 2856,2860 ---- + + case 94: +! #line 886 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + (yyval.command) = make_case_command ((yyvsp[(2) - (7)].word), (yyvsp[(5) - (7)].pattern), word_lineno[word_top]); +*************** +*** 2859,2863 **** + + case 95: +! #line 886 "/usr/homes/chet/src/bash/src/parse.y" + { + (yyval.command) = make_case_command ((yyvsp[(2) - (6)].word), (yyvsp[(5) - (6)].pattern), word_lineno[word_top]); +--- 2864,2868 ---- + + case 95: +! #line 891 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + (yyval.command) = make_case_command ((yyvsp[(2) - (6)].word), (yyvsp[(5) - (6)].pattern), word_lineno[word_top]); +*************** +*** 2867,2891 **** + + case 96: +! #line 893 "/usr/homes/chet/src/bash/src/parse.y" + { (yyval.command) = make_function_def ((yyvsp[(1) - (5)].word), (yyvsp[(5) - (5)].command), function_dstart, function_bstart); } + break; + + case 97: +! #line 896 "/usr/homes/chet/src/bash/src/parse.y" + { (yyval.command) = make_function_def ((yyvsp[(2) - (6)].word), (yyvsp[(6) - (6)].command), function_dstart, function_bstart); } + break; + + case 98: +! #line 899 "/usr/homes/chet/src/bash/src/parse.y" + { (yyval.command) = make_function_def ((yyvsp[(2) - (4)].word), (yyvsp[(4) - (4)].command), function_dstart, function_bstart); } + break; + + case 99: +! #line 903 "/usr/homes/chet/src/bash/src/parse.y" + { (yyval.command) = (yyvsp[(1) - (1)].command); } + break; + + case 100: +! #line 905 "/usr/homes/chet/src/bash/src/parse.y" + { + COMMAND *tc; +--- 2872,2896 ---- + + case 96: +! #line 898 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { (yyval.command) = make_function_def ((yyvsp[(1) - (5)].word), (yyvsp[(5) - (5)].command), function_dstart, function_bstart); } + break; + + case 97: +! #line 901 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { (yyval.command) = make_function_def ((yyvsp[(2) - (6)].word), (yyvsp[(6) - (6)].command), function_dstart, function_bstart); } + break; + + case 98: +! #line 904 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { (yyval.command) = make_function_def ((yyvsp[(2) - (4)].word), (yyvsp[(4) - (4)].command), function_dstart, function_bstart); } + break; + + case 99: +! #line 908 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { (yyval.command) = (yyvsp[(1) - (1)].command); } + break; + + case 100: +! #line 910 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + COMMAND *tc; +*************** +*** 2919,2923 **** + + case 101: +! #line 936 "/usr/homes/chet/src/bash/src/parse.y" + { + (yyval.command) = make_subshell_command ((yyvsp[(2) - (3)].command)); +--- 2924,2928 ---- + + case 101: +! #line 941 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + (yyval.command) = make_subshell_command ((yyvsp[(2) - (3)].command)); +*************** +*** 2927,2931 **** + + case 102: +! #line 943 "/usr/homes/chet/src/bash/src/parse.y" + { + (yyval.command) = make_coproc_command ("COPROC", (yyvsp[(2) - (2)].command)); +--- 2932,2936 ---- + + case 102: +! #line 948 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + (yyval.command) = make_coproc_command ("COPROC", (yyvsp[(2) - (2)].command)); +*************** +*** 2935,2939 **** + + case 103: +! #line 948 "/usr/homes/chet/src/bash/src/parse.y" + { + COMMAND *tc; +--- 2940,2944 ---- + + case 103: +! #line 953 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + COMMAND *tc; +*************** +*** 2955,2959 **** + + case 104: +! #line 965 "/usr/homes/chet/src/bash/src/parse.y" + { + (yyval.command) = make_coproc_command ((yyvsp[(2) - (3)].word)->word, (yyvsp[(3) - (3)].command)); +--- 2960,2964 ---- + + case 104: +! #line 970 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + (yyval.command) = make_coproc_command ((yyvsp[(2) - (3)].word)->word, (yyvsp[(3) - (3)].command)); +*************** +*** 2963,2967 **** + + case 105: +! #line 970 "/usr/homes/chet/src/bash/src/parse.y" + { + COMMAND *tc; +--- 2968,2972 ---- + + case 105: +! #line 975 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + COMMAND *tc; +*************** +*** 2983,2987 **** + + case 106: +! #line 987 "/usr/homes/chet/src/bash/src/parse.y" + { + (yyval.command) = make_coproc_command ("COPROC", clean_simple_command ((yyvsp[(2) - (2)].command))); +--- 2988,2992 ---- + + case 106: +! #line 992 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + (yyval.command) = make_coproc_command ("COPROC", clean_simple_command ((yyvsp[(2) - (2)].command))); +*************** +*** 2991,3105 **** + + case 107: +! #line 994 "/usr/homes/chet/src/bash/src/parse.y" + { (yyval.command) = make_if_command ((yyvsp[(2) - (5)].command), (yyvsp[(4) - (5)].command), (COMMAND *)NULL); } + break; + + case 108: +! #line 996 "/usr/homes/chet/src/bash/src/parse.y" + { (yyval.command) = make_if_command ((yyvsp[(2) - (7)].command), (yyvsp[(4) - (7)].command), (yyvsp[(6) - (7)].command)); } + break; + + case 109: +! #line 998 "/usr/homes/chet/src/bash/src/parse.y" + { (yyval.command) = make_if_command ((yyvsp[(2) - (6)].command), (yyvsp[(4) - (6)].command), (yyvsp[(5) - (6)].command)); } + break; + + case 110: +! #line 1003 "/usr/homes/chet/src/bash/src/parse.y" + { (yyval.command) = make_group_command ((yyvsp[(2) - (3)].command)); } + break; + + case 111: +! #line 1007 "/usr/homes/chet/src/bash/src/parse.y" + { (yyval.command) = make_arith_command ((yyvsp[(1) - (1)].word_list)); } + break; + + case 112: +! #line 1011 "/usr/homes/chet/src/bash/src/parse.y" + { (yyval.command) = (yyvsp[(2) - (3)].command); } + break; + + case 113: +! #line 1015 "/usr/homes/chet/src/bash/src/parse.y" + { (yyval.command) = make_if_command ((yyvsp[(2) - (4)].command), (yyvsp[(4) - (4)].command), (COMMAND *)NULL); } + break; + + case 114: +! #line 1017 "/usr/homes/chet/src/bash/src/parse.y" + { (yyval.command) = make_if_command ((yyvsp[(2) - (6)].command), (yyvsp[(4) - (6)].command), (yyvsp[(6) - (6)].command)); } + break; + + case 115: +! #line 1019 "/usr/homes/chet/src/bash/src/parse.y" + { (yyval.command) = make_if_command ((yyvsp[(2) - (5)].command), (yyvsp[(4) - (5)].command), (yyvsp[(5) - (5)].command)); } + break; + + case 117: +! #line 1024 "/usr/homes/chet/src/bash/src/parse.y" + { (yyvsp[(2) - (2)].pattern)->next = (yyvsp[(1) - (2)].pattern); (yyval.pattern) = (yyvsp[(2) - (2)].pattern); } + break; + + case 118: +! #line 1028 "/usr/homes/chet/src/bash/src/parse.y" + { (yyval.pattern) = make_pattern_list ((yyvsp[(2) - (4)].word_list), (yyvsp[(4) - (4)].command)); } + break; + + case 119: +! #line 1030 "/usr/homes/chet/src/bash/src/parse.y" + { (yyval.pattern) = make_pattern_list ((yyvsp[(2) - (4)].word_list), (COMMAND *)NULL); } + break; + + case 120: +! #line 1032 "/usr/homes/chet/src/bash/src/parse.y" + { (yyval.pattern) = make_pattern_list ((yyvsp[(3) - (5)].word_list), (yyvsp[(5) - (5)].command)); } + break; + + case 121: +! #line 1034 "/usr/homes/chet/src/bash/src/parse.y" + { (yyval.pattern) = make_pattern_list ((yyvsp[(3) - (5)].word_list), (COMMAND *)NULL); } + break; + + case 122: +! #line 1038 "/usr/homes/chet/src/bash/src/parse.y" + { (yyval.pattern) = (yyvsp[(1) - (2)].pattern); } + break; + + case 123: +! #line 1040 "/usr/homes/chet/src/bash/src/parse.y" + { (yyvsp[(2) - (3)].pattern)->next = (yyvsp[(1) - (3)].pattern); (yyval.pattern) = (yyvsp[(2) - (3)].pattern); } + break; + + case 124: +! #line 1042 "/usr/homes/chet/src/bash/src/parse.y" + { (yyvsp[(1) - (2)].pattern)->flags |= CASEPAT_FALLTHROUGH; (yyval.pattern) = (yyvsp[(1) - (2)].pattern); } + break; + + case 125: +! #line 1044 "/usr/homes/chet/src/bash/src/parse.y" + { (yyvsp[(2) - (3)].pattern)->flags |= CASEPAT_FALLTHROUGH; (yyvsp[(2) - (3)].pattern)->next = (yyvsp[(1) - (3)].pattern); (yyval.pattern) = (yyvsp[(2) - (3)].pattern); } + break; + + case 126: +! #line 1046 "/usr/homes/chet/src/bash/src/parse.y" + { (yyvsp[(1) - (2)].pattern)->flags |= CASEPAT_TESTNEXT; (yyval.pattern) = (yyvsp[(1) - (2)].pattern); } + break; + + case 127: +! #line 1048 "/usr/homes/chet/src/bash/src/parse.y" + { (yyvsp[(2) - (3)].pattern)->flags |= CASEPAT_TESTNEXT; (yyvsp[(2) - (3)].pattern)->next = (yyvsp[(1) - (3)].pattern); (yyval.pattern) = (yyvsp[(2) - (3)].pattern); } + break; + + case 128: +! #line 1052 "/usr/homes/chet/src/bash/src/parse.y" + { (yyval.word_list) = make_word_list ((yyvsp[(1) - (1)].word), (WORD_LIST *)NULL); } + break; + + case 129: +! #line 1054 "/usr/homes/chet/src/bash/src/parse.y" + { (yyval.word_list) = make_word_list ((yyvsp[(3) - (3)].word), (yyvsp[(1) - (3)].word_list)); } + break; + + case 130: +! #line 1063 "/usr/homes/chet/src/bash/src/parse.y" + { + (yyval.command) = (yyvsp[(2) - (2)].command); +--- 2996,3110 ---- + + case 107: +! #line 999 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { (yyval.command) = make_if_command ((yyvsp[(2) - (5)].command), (yyvsp[(4) - (5)].command), (COMMAND *)NULL); } + break; + + case 108: +! #line 1001 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { (yyval.command) = make_if_command ((yyvsp[(2) - (7)].command), (yyvsp[(4) - (7)].command), (yyvsp[(6) - (7)].command)); } + break; + + case 109: +! #line 1003 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { (yyval.command) = make_if_command ((yyvsp[(2) - (6)].command), (yyvsp[(4) - (6)].command), (yyvsp[(5) - (6)].command)); } + break; + + case 110: +! #line 1008 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { (yyval.command) = make_group_command ((yyvsp[(2) - (3)].command)); } + break; + + case 111: +! #line 1012 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { (yyval.command) = make_arith_command ((yyvsp[(1) - (1)].word_list)); } + break; + + case 112: +! #line 1016 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { (yyval.command) = (yyvsp[(2) - (3)].command); } + break; + + case 113: +! #line 1020 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { (yyval.command) = make_if_command ((yyvsp[(2) - (4)].command), (yyvsp[(4) - (4)].command), (COMMAND *)NULL); } + break; + + case 114: +! #line 1022 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { (yyval.command) = make_if_command ((yyvsp[(2) - (6)].command), (yyvsp[(4) - (6)].command), (yyvsp[(6) - (6)].command)); } + break; + + case 115: +! #line 1024 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { (yyval.command) = make_if_command ((yyvsp[(2) - (5)].command), (yyvsp[(4) - (5)].command), (yyvsp[(5) - (5)].command)); } + break; + + case 117: +! #line 1029 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { (yyvsp[(2) - (2)].pattern)->next = (yyvsp[(1) - (2)].pattern); (yyval.pattern) = (yyvsp[(2) - (2)].pattern); } + break; + + case 118: +! #line 1033 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { (yyval.pattern) = make_pattern_list ((yyvsp[(2) - (4)].word_list), (yyvsp[(4) - (4)].command)); } + break; + + case 119: +! #line 1035 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { (yyval.pattern) = make_pattern_list ((yyvsp[(2) - (4)].word_list), (COMMAND *)NULL); } + break; + + case 120: +! #line 1037 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { (yyval.pattern) = make_pattern_list ((yyvsp[(3) - (5)].word_list), (yyvsp[(5) - (5)].command)); } + break; + + case 121: +! #line 1039 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { (yyval.pattern) = make_pattern_list ((yyvsp[(3) - (5)].word_list), (COMMAND *)NULL); } + break; + + case 122: +! #line 1043 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { (yyval.pattern) = (yyvsp[(1) - (2)].pattern); } + break; + + case 123: +! #line 1045 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { (yyvsp[(2) - (3)].pattern)->next = (yyvsp[(1) - (3)].pattern); (yyval.pattern) = (yyvsp[(2) - (3)].pattern); } + break; + + case 124: +! #line 1047 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { (yyvsp[(1) - (2)].pattern)->flags |= CASEPAT_FALLTHROUGH; (yyval.pattern) = (yyvsp[(1) - (2)].pattern); } + break; + + case 125: +! #line 1049 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { (yyvsp[(2) - (3)].pattern)->flags |= CASEPAT_FALLTHROUGH; (yyvsp[(2) - (3)].pattern)->next = (yyvsp[(1) - (3)].pattern); (yyval.pattern) = (yyvsp[(2) - (3)].pattern); } + break; + + case 126: +! #line 1051 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { (yyvsp[(1) - (2)].pattern)->flags |= CASEPAT_TESTNEXT; (yyval.pattern) = (yyvsp[(1) - (2)].pattern); } + break; + + case 127: +! #line 1053 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { (yyvsp[(2) - (3)].pattern)->flags |= CASEPAT_TESTNEXT; (yyvsp[(2) - (3)].pattern)->next = (yyvsp[(1) - (3)].pattern); (yyval.pattern) = (yyvsp[(2) - (3)].pattern); } + break; + + case 128: +! #line 1057 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { (yyval.word_list) = make_word_list ((yyvsp[(1) - (1)].word), (WORD_LIST *)NULL); } + break; + + case 129: +! #line 1059 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { (yyval.word_list) = make_word_list ((yyvsp[(3) - (3)].word), (yyvsp[(1) - (3)].word_list)); } + break; + + case 130: +! #line 1068 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + (yyval.command) = (yyvsp[(2) - (2)].command); +*************** +*** 3110,3114 **** + + case 132: +! #line 1072 "/usr/homes/chet/src/bash/src/parse.y" + { + (yyval.command) = (yyvsp[(2) - (2)].command); +--- 3115,3119 ---- + + case 132: +! #line 1077 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + (yyval.command) = (yyvsp[(2) - (2)].command); +*************** +*** 3117,3121 **** + + case 134: +! #line 1079 "/usr/homes/chet/src/bash/src/parse.y" + { + if ((yyvsp[(1) - (3)].command)->type == cm_connection) +--- 3122,3126 ---- + + case 134: +! #line 1084 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + if ((yyvsp[(1) - (3)].command)->type == cm_connection) +*************** +*** 3127,3141 **** + + case 136: +! #line 1090 "/usr/homes/chet/src/bash/src/parse.y" + { (yyval.command) = command_connect ((yyvsp[(1) - (4)].command), (yyvsp[(4) - (4)].command), AND_AND); } + break; + + case 137: +! #line 1092 "/usr/homes/chet/src/bash/src/parse.y" + { (yyval.command) = command_connect ((yyvsp[(1) - (4)].command), (yyvsp[(4) - (4)].command), OR_OR); } + break; + + case 138: +! #line 1094 "/usr/homes/chet/src/bash/src/parse.y" + { + if ((yyvsp[(1) - (4)].command)->type == cm_connection) +--- 3132,3146 ---- + + case 136: +! #line 1095 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { (yyval.command) = command_connect ((yyvsp[(1) - (4)].command), (yyvsp[(4) - (4)].command), AND_AND); } + break; + + case 137: +! #line 1097 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { (yyval.command) = command_connect ((yyvsp[(1) - (4)].command), (yyvsp[(4) - (4)].command), OR_OR); } + break; + + case 138: +! #line 1099 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + if ((yyvsp[(1) - (4)].command)->type == cm_connection) +*************** +*** 3147,3181 **** + + case 139: +! #line 1101 "/usr/homes/chet/src/bash/src/parse.y" + { (yyval.command) = command_connect ((yyvsp[(1) - (4)].command), (yyvsp[(4) - (4)].command), ';'); } + break; + + case 140: +! #line 1103 "/usr/homes/chet/src/bash/src/parse.y" + { (yyval.command) = command_connect ((yyvsp[(1) - (4)].command), (yyvsp[(4) - (4)].command), ';'); } + break; + + case 141: +! #line 1105 "/usr/homes/chet/src/bash/src/parse.y" + { (yyval.command) = (yyvsp[(1) - (1)].command); } + break; + + case 144: +! #line 1113 "/usr/homes/chet/src/bash/src/parse.y" + { (yyval.number) = '\n'; } + break; + + case 145: +! #line 1115 "/usr/homes/chet/src/bash/src/parse.y" + { (yyval.number) = ';'; } + break; + + case 146: +! #line 1117 "/usr/homes/chet/src/bash/src/parse.y" + { (yyval.number) = yacc_EOF; } + break; + + case 149: +! #line 1131 "/usr/homes/chet/src/bash/src/parse.y" + { + (yyval.command) = (yyvsp[(1) - (1)].command); +--- 3152,3186 ---- + + case 139: +! #line 1106 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { (yyval.command) = command_connect ((yyvsp[(1) - (4)].command), (yyvsp[(4) - (4)].command), ';'); } + break; + + case 140: +! #line 1108 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { (yyval.command) = command_connect ((yyvsp[(1) - (4)].command), (yyvsp[(4) - (4)].command), ';'); } + break; + + case 141: +! #line 1110 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { (yyval.command) = (yyvsp[(1) - (1)].command); } + break; + + case 144: +! #line 1118 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { (yyval.number) = '\n'; } + break; + + case 145: +! #line 1120 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { (yyval.number) = ';'; } + break; + + case 146: +! #line 1122 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { (yyval.number) = yacc_EOF; } + break; + + case 149: +! #line 1136 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + (yyval.command) = (yyvsp[(1) - (1)].command); +*************** +*** 3193,3197 **** + + case 150: +! #line 1144 "/usr/homes/chet/src/bash/src/parse.y" + { + if ((yyvsp[(1) - (2)].command)->type == cm_connection) +--- 3198,3202 ---- + + case 150: +! #line 1149 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + if ((yyvsp[(1) - (2)].command)->type == cm_connection) +*************** +*** 3212,3216 **** + + case 151: +! #line 1160 "/usr/homes/chet/src/bash/src/parse.y" + { + (yyval.command) = (yyvsp[(1) - (2)].command); +--- 3217,3221 ---- + + case 151: +! #line 1165 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + (yyval.command) = (yyvsp[(1) - (2)].command); +*************** +*** 3228,3242 **** + + case 152: +! #line 1175 "/usr/homes/chet/src/bash/src/parse.y" + { (yyval.command) = command_connect ((yyvsp[(1) - (4)].command), (yyvsp[(4) - (4)].command), AND_AND); } + break; + + case 153: +! #line 1177 "/usr/homes/chet/src/bash/src/parse.y" + { (yyval.command) = command_connect ((yyvsp[(1) - (4)].command), (yyvsp[(4) - (4)].command), OR_OR); } + break; + + case 154: +! #line 1179 "/usr/homes/chet/src/bash/src/parse.y" + { + if ((yyvsp[(1) - (3)].command)->type == cm_connection) +--- 3233,3247 ---- + + case 152: +! #line 1180 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { (yyval.command) = command_connect ((yyvsp[(1) - (4)].command), (yyvsp[(4) - (4)].command), AND_AND); } + break; + + case 153: +! #line 1182 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { (yyval.command) = command_connect ((yyvsp[(1) - (4)].command), (yyvsp[(4) - (4)].command), OR_OR); } + break; + + case 154: +! #line 1184 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + if ((yyvsp[(1) - (3)].command)->type == cm_connection) +*************** +*** 3248,3267 **** + + case 155: +! #line 1186 "/usr/homes/chet/src/bash/src/parse.y" + { (yyval.command) = command_connect ((yyvsp[(1) - (3)].command), (yyvsp[(3) - (3)].command), ';'); } + break; + + case 156: +! #line 1189 "/usr/homes/chet/src/bash/src/parse.y" + { (yyval.command) = (yyvsp[(1) - (1)].command); } + break; + + case 157: +! #line 1193 "/usr/homes/chet/src/bash/src/parse.y" + { (yyval.command) = (yyvsp[(1) - (1)].command); } + break; + + case 158: +! #line 1195 "/usr/homes/chet/src/bash/src/parse.y" + { + if ((yyvsp[(2) - (2)].command)) +--- 3253,3272 ---- + + case 155: +! #line 1191 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { (yyval.command) = command_connect ((yyvsp[(1) - (3)].command), (yyvsp[(3) - (3)].command), ';'); } + break; + + case 156: +! #line 1194 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { (yyval.command) = (yyvsp[(1) - (1)].command); } + break; + + case 157: +! #line 1198 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { (yyval.command) = (yyvsp[(1) - (1)].command); } + break; + + case 158: +! #line 1200 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + if ((yyvsp[(2) - (2)].command)) +*************** +*** 3272,3276 **** + + case 159: +! #line 1201 "/usr/homes/chet/src/bash/src/parse.y" + { + if ((yyvsp[(2) - (2)].command)) +--- 3277,3281 ---- + + case 159: +! #line 1206 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + if ((yyvsp[(2) - (2)].command)) +*************** +*** 3281,3285 **** + + case 160: +! #line 1207 "/usr/homes/chet/src/bash/src/parse.y" + { + ELEMENT x; +--- 3286,3290 ---- + + case 160: +! #line 1212 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + ELEMENT x; +*************** +*** 3301,3305 **** + + case 161: +! #line 1224 "/usr/homes/chet/src/bash/src/parse.y" + { + ELEMENT x; +--- 3306,3310 ---- + + case 161: +! #line 1229 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + ELEMENT x; +*************** +*** 3322,3331 **** + + case 162: +! #line 1244 "/usr/homes/chet/src/bash/src/parse.y" + { (yyval.command) = command_connect ((yyvsp[(1) - (4)].command), (yyvsp[(4) - (4)].command), '|'); } + break; + + case 163: +! #line 1246 "/usr/homes/chet/src/bash/src/parse.y" + { + /* Make cmd1 |& cmd2 equivalent to cmd1 2>&1 | cmd2 */ +--- 3327,3336 ---- + + case 162: +! #line 1249 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { (yyval.command) = command_connect ((yyvsp[(1) - (4)].command), (yyvsp[(4) - (4)].command), '|'); } + break; + + case 163: +! #line 1251 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + /* Make cmd1 |& cmd2 equivalent to cmd1 2>&1 | cmd2 */ +*************** +*** 3353,3372 **** + + case 164: +! #line 1269 "/usr/homes/chet/src/bash/src/parse.y" + { (yyval.command) = (yyvsp[(1) - (1)].command); } + break; + + case 165: +! #line 1273 "/usr/homes/chet/src/bash/src/parse.y" + { (yyval.number) = CMD_TIME_PIPELINE; } + break; + + case 166: +! #line 1275 "/usr/homes/chet/src/bash/src/parse.y" + { (yyval.number) = CMD_TIME_PIPELINE|CMD_TIME_POSIX; } + break; + + case 167: +! #line 1277 "/usr/homes/chet/src/bash/src/parse.y" + { (yyval.number) = CMD_TIME_PIPELINE|CMD_TIME_POSIX; } + break; +--- 3358,3377 ---- + + case 164: +! #line 1274 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { (yyval.command) = (yyvsp[(1) - (1)].command); } + break; + + case 165: +! #line 1278 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { (yyval.number) = CMD_TIME_PIPELINE; } + break; + + case 166: +! #line 1280 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { (yyval.number) = CMD_TIME_PIPELINE|CMD_TIME_POSIX; } + break; + + case 167: +! #line 1282 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { (yyval.number) = CMD_TIME_PIPELINE|CMD_TIME_POSIX; } + break; +*************** +*** 3374,3378 **** + + /* Line 1267 of yacc.c. */ +! #line 3377 "y.tab.c" + default: break; + } +--- 3379,3383 ---- + + /* Line 1267 of yacc.c. */ +! #line 3382 "y.tab.c" + default: break; + } +*************** +*** 3588,3592 **** + + +! #line 1279 "/usr/homes/chet/src/bash/src/parse.y" + + +--- 3593,3597 ---- + + +! #line 1284 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + + +*************** +*** 4949,4952 **** +--- 4954,4972 ---- + static int esacs_needed_count; + ++ static void ++ push_heredoc (r) ++ REDIRECT *r; ++ { ++ if (need_here_doc >= HEREDOC_MAX) ++ { ++ last_command_exit_value = EX_BADUSAGE; ++ need_here_doc = 0; ++ report_syntax_error (_("maximum here-document count exceeded")); ++ reset_parser (); ++ exit_shell (last_command_exit_value); ++ } ++ redir_stack[need_here_doc++] = r; ++ } ++ + void + gather_here_documents () +*************** +*** 8542,8543 **** +--- 8562,8564 ---- + } + #endif /* HANDLE_MULTIBYTE */ ++ +*** ../bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500 +--- patchlevel.h 2014-03-20 20:01:28.000000000 -0400 +*************** +*** 26,30 **** + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 27 + + #endif /* _PATCHLEVEL_H_ */ +--- 26,30 ---- + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 28 + + #endif /* _PATCHLEVEL_H_ */ diff --git a/patches/source/bash/bash-4.3-patches/bash43-029 b/patches/source/bash/bash-4.3-patches/bash43-029 new file mode 100644 index 00000000..93bd390a --- /dev/null +++ b/patches/source/bash/bash-4.3-patches/bash43-029 @@ -0,0 +1,59 @@ + BASH PATCH REPORT + ================= + +Bash-Release: 4.3 +Patch-ID: bash43-029 + +Bug-Reported-by: Michal Zalewski <lcamtuf@coredump.cx> +Bug-Reference-ID: +Bug-Reference-URL: + +Bug-Description: + +When bash is parsing a function definition that contains a here-document +delimited by end-of-file (or end-of-string), it leaves the closing delimiter +uninitialized. This can result in an invalid memory access when the parsed +function is later copied. + +Patch (apply with `patch -p0'): + +*** ../bash-4.3.28/make_cmd.c 2011-12-16 08:08:01.000000000 -0500 +--- make_cmd.c 2014-10-02 11:24:23.000000000 -0400 +*************** +*** 693,696 **** +--- 693,697 ---- + temp->redirector = source; + temp->redirectee = dest_and_filename; ++ temp->here_doc_eof = 0; + temp->instruction = instruction; + temp->flags = 0; +*** ../bash-4.3.28/copy_cmd.c 2009-09-11 16:28:02.000000000 -0400 +--- copy_cmd.c 2014-10-02 11:24:23.000000000 -0400 +*************** +*** 127,131 **** + case r_reading_until: + case r_deblank_reading_until: +! new_redirect->here_doc_eof = savestring (redirect->here_doc_eof); + /*FALLTHROUGH*/ + case r_reading_string: +--- 127,131 ---- + case r_reading_until: + case r_deblank_reading_until: +! new_redirect->here_doc_eof = redirect->here_doc_eof ? savestring (redirect->here_doc_eof) : 0; + /*FALLTHROUGH*/ + case r_reading_string: +*** ../bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500 +--- patchlevel.h 2014-03-20 20:01:28.000000000 -0400 +*************** +*** 26,30 **** + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 28 + + #endif /* _PATCHLEVEL_H_ */ +--- 26,30 ---- + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 29 + + #endif /* _PATCHLEVEL_H_ */ diff --git a/patches/source/bash/bash-4.3-patches/bash43-030 b/patches/source/bash/bash-4.3-patches/bash43-030 new file mode 100644 index 00000000..78984da2 --- /dev/null +++ b/patches/source/bash/bash-4.3-patches/bash43-030 @@ -0,0 +1,2064 @@ + BASH PATCH REPORT + ================= + +Bash-Release: 4.3 +Patch-ID: bash43-030 + +Bug-Reported-by: Michal Zalewski <lcamtuf@coredump.cx> +Bug-Reference-ID: +Bug-Reference-URL: + +Bug-Description: + +A combination of nested command substitutions and function importing from +the environment can cause bash to execute code appearing in the environment +variable value following the function definition. + +Patch (apply with `patch -p0'): + +*** ../bash-4.3.29/builtins/evalstring.c 2014-10-01 12:57:47.000000000 -0400 +--- builtins/evalstring.c 2014-10-03 11:57:04.000000000 -0400 +*************** +*** 309,318 **** + struct fd_bitmap *bitmap; + +! if ((flags & SEVAL_FUNCDEF) && command->type != cm_function_def) + { +! internal_warning ("%s: ignoring function definition attempt", from_file); +! should_jump_to_top_level = 0; +! last_result = last_command_exit_value = EX_BADUSAGE; +! break; + } + +--- 313,335 ---- + struct fd_bitmap *bitmap; + +! if (flags & SEVAL_FUNCDEF) + { +! char *x; +! +! /* If the command parses to something other than a straight +! function definition, or if we have not consumed the entire +! string, or if the parser has transformed the function +! name (as parsing will if it begins or ends with shell +! whitespace, for example), reject the attempt */ +! if (command->type != cm_function_def || +! ((x = parser_remaining_input ()) && *x) || +! (STREQ (from_file, command->value.Function_def->name->word) == 0)) +! { +! internal_warning (_("%s: ignoring function definition attempt"), from_file); +! should_jump_to_top_level = 0; +! last_result = last_command_exit_value = EX_BADUSAGE; +! reset_parser (); +! break; +! } + } + +*************** +*** 379,383 **** + + if (flags & SEVAL_ONECMD) +! break; + } + } +--- 396,403 ---- + + if (flags & SEVAL_ONECMD) +! { +! reset_parser (); +! break; +! } + } + } +*** ../bash-4.3.29/parse.y 2014-10-01 12:58:43.000000000 -0400 +--- parse.y 2014-10-03 14:48:59.000000000 -0400 +*************** +*** 2539,2542 **** +--- 2539,2552 ---- + } + ++ char * ++ parser_remaining_input () ++ { ++ if (shell_input_line == 0) ++ return 0; ++ if (shell_input_line_index < 0 || shell_input_line_index >= shell_input_line_len) ++ return '\0'; /* XXX */ ++ return (shell_input_line + shell_input_line_index); ++ } ++ + #ifdef INCLUDE_UNUSED + /* Back the input pointer up by one, effectively `ungetting' a character. */ +*************** +*** 4028,4033 **** + /* reset_parser clears shell_input_line and associated variables */ + restore_input_line_state (&ls); +! if (interactive) +! token_to_read = 0; + + /* Need to find how many characters parse_and_execute consumed, update +--- 4053,4058 ---- + /* reset_parser clears shell_input_line and associated variables */ + restore_input_line_state (&ls); +! +! token_to_read = 0; + + /* Need to find how many characters parse_and_execute consumed, update +*** ../bash-4.3.29/shell.h 2014-10-01 12:57:39.000000000 -0400 +--- shell.h 2014-10-03 14:49:12.000000000 -0400 +*************** +*** 181,184 **** +--- 181,186 ---- + + /* Let's try declaring these here. */ ++ extern char *parser_remaining_input __P((void)); ++ + extern sh_parser_state_t *save_parser_state __P((sh_parser_state_t *)); + extern void restore_parser_state __P((sh_parser_state_t *)); +*** ../bash-4.3.28/y.tab.c 2014-10-01 13:09:46.000000000 -0400 +--- y.tab.c 2014-10-04 19:26:22.000000000 -0400 +*************** +*** 169,173 **** + + /* Copy the first part of user declarations. */ +! #line 21 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + + #include "config.h" +--- 169,173 ---- + + /* Copy the first part of user declarations. */ +! #line 21 "/usr/src/local/bash/bash-4.3-patched/parse.y" + + #include "config.h" +*************** +*** 498,502 **** + #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED + typedef union YYSTYPE +! #line 329 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + WORD_DESC *word; /* the word that we read. */ +--- 498,502 ---- + #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED + typedef union YYSTYPE +! #line 329 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + WORD_DESC *word; /* the word that we read. */ +*************** +*** 2099,2103 **** + { + case 2: +! #line 383 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + /* Case of regular command. Discard the error +--- 2099,2103 ---- + { + case 2: +! #line 383 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + /* Case of regular command. Discard the error +*************** +*** 2113,2117 **** + + case 3: +! #line 394 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + /* Case of regular command, but not a very +--- 2113,2117 ---- + + case 3: +! #line 394 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + /* Case of regular command, but not a very +*************** +*** 2125,2129 **** + + case 4: +! #line 403 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + /* Error during parsing. Return NULL command. */ +--- 2125,2129 ---- + + case 4: +! #line 403 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + /* Error during parsing. Return NULL command. */ +*************** +*** 2143,2147 **** + + case 5: +! #line 418 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + /* Case of EOF seen by itself. Do ignoreeof or +--- 2143,2147 ---- + + case 5: +! #line 418 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + /* Case of EOF seen by itself. Do ignoreeof or +*************** +*** 2154,2168 **** + + case 6: +! #line 428 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { (yyval.word_list) = make_word_list ((yyvsp[(1) - (1)].word), (WORD_LIST *)NULL); } + break; + + case 7: +! #line 430 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { (yyval.word_list) = make_word_list ((yyvsp[(2) - (2)].word), (yyvsp[(1) - (2)].word_list)); } + break; + + case 8: +! #line 434 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + source.dest = 1; +--- 2154,2168 ---- + + case 6: +! #line 428 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { (yyval.word_list) = make_word_list ((yyvsp[(1) - (1)].word), (WORD_LIST *)NULL); } + break; + + case 7: +! #line 430 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { (yyval.word_list) = make_word_list ((yyvsp[(2) - (2)].word), (yyvsp[(1) - (2)].word_list)); } + break; + + case 8: +! #line 434 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + source.dest = 1; +*************** +*** 2173,2177 **** + + case 9: +! #line 440 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + source.dest = 0; +--- 2173,2177 ---- + + case 9: +! #line 440 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + source.dest = 0; +*************** +*** 2182,2186 **** + + case 10: +! #line 446 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + source.dest = (yyvsp[(1) - (3)].number); +--- 2182,2186 ---- + + case 10: +! #line 446 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + source.dest = (yyvsp[(1) - (3)].number); +*************** +*** 2191,2195 **** + + case 11: +! #line 452 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + source.dest = (yyvsp[(1) - (3)].number); +--- 2191,2195 ---- + + case 11: +! #line 452 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + source.dest = (yyvsp[(1) - (3)].number); +*************** +*** 2200,2204 **** + + case 12: +! #line 458 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + source.filename = (yyvsp[(1) - (3)].word); +--- 2200,2204 ---- + + case 12: +! #line 458 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + source.filename = (yyvsp[(1) - (3)].word); +*************** +*** 2209,2213 **** + + case 13: +! #line 464 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + source.filename = (yyvsp[(1) - (3)].word); +--- 2209,2213 ---- + + case 13: +! #line 464 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + source.filename = (yyvsp[(1) - (3)].word); +*************** +*** 2218,2222 **** + + case 14: +! #line 470 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + source.dest = 1; +--- 2218,2222 ---- + + case 14: +! #line 470 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + source.dest = 1; +*************** +*** 2227,2231 **** + + case 15: +! #line 476 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + source.dest = (yyvsp[(1) - (3)].number); +--- 2227,2231 ---- + + case 15: +! #line 476 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + source.dest = (yyvsp[(1) - (3)].number); +*************** +*** 2236,2240 **** + + case 16: +! #line 482 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + source.filename = (yyvsp[(1) - (3)].word); +--- 2236,2240 ---- + + case 16: +! #line 482 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + source.filename = (yyvsp[(1) - (3)].word); +*************** +*** 2245,2249 **** + + case 17: +! #line 488 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + source.dest = 1; +--- 2245,2249 ---- + + case 17: +! #line 488 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + source.dest = 1; +*************** +*** 2254,2258 **** + + case 18: +! #line 494 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + source.dest = (yyvsp[(1) - (3)].number); +--- 2254,2258 ---- + + case 18: +! #line 494 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + source.dest = (yyvsp[(1) - (3)].number); +*************** +*** 2263,2267 **** + + case 19: +! #line 500 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + source.filename = (yyvsp[(1) - (3)].word); +--- 2263,2267 ---- + + case 19: +! #line 500 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + source.filename = (yyvsp[(1) - (3)].word); +*************** +*** 2272,2276 **** + + case 20: +! #line 506 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + source.dest = 0; +--- 2272,2276 ---- + + case 20: +! #line 506 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + source.dest = 0; +*************** +*** 2281,2285 **** + + case 21: +! #line 512 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + source.dest = (yyvsp[(1) - (3)].number); +--- 2281,2285 ---- + + case 21: +! #line 512 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + source.dest = (yyvsp[(1) - (3)].number); +*************** +*** 2290,2294 **** + + case 22: +! #line 518 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + source.filename = (yyvsp[(1) - (3)].word); +--- 2290,2294 ---- + + case 22: +! #line 518 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + source.filename = (yyvsp[(1) - (3)].word); +*************** +*** 2299,2303 **** + + case 23: +! #line 524 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + source.dest = 0; +--- 2299,2303 ---- + + case 23: +! #line 524 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + source.dest = 0; +*************** +*** 2309,2313 **** + + case 24: +! #line 531 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + source.dest = (yyvsp[(1) - (3)].number); +--- 2309,2313 ---- + + case 24: +! #line 531 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + source.dest = (yyvsp[(1) - (3)].number); +*************** +*** 2319,2323 **** + + case 25: +! #line 538 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + source.filename = (yyvsp[(1) - (3)].word); +--- 2319,2323 ---- + + case 25: +! #line 538 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + source.filename = (yyvsp[(1) - (3)].word); +*************** +*** 2329,2333 **** + + case 26: +! #line 545 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + source.dest = 0; +--- 2329,2333 ---- + + case 26: +! #line 545 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + source.dest = 0; +*************** +*** 2339,2343 **** + + case 27: +! #line 552 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + source.dest = (yyvsp[(1) - (3)].number); +--- 2339,2343 ---- + + case 27: +! #line 552 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + source.dest = (yyvsp[(1) - (3)].number); +*************** +*** 2349,2353 **** + + case 28: +! #line 559 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + source.filename = (yyvsp[(1) - (3)].word); +--- 2349,2353 ---- + + case 28: +! #line 559 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + source.filename = (yyvsp[(1) - (3)].word); +*************** +*** 2359,2363 **** + + case 29: +! #line 566 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + source.dest = 0; +--- 2359,2363 ---- + + case 29: +! #line 566 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + source.dest = 0; +*************** +*** 2368,2372 **** + + case 30: +! #line 572 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + source.dest = (yyvsp[(1) - (3)].number); +--- 2368,2372 ---- + + case 30: +! #line 572 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + source.dest = (yyvsp[(1) - (3)].number); +*************** +*** 2377,2381 **** + + case 31: +! #line 578 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + source.filename = (yyvsp[(1) - (3)].word); +--- 2377,2381 ---- + + case 31: +! #line 578 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + source.filename = (yyvsp[(1) - (3)].word); +*************** +*** 2386,2390 **** + + case 32: +! #line 584 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + source.dest = 0; +--- 2386,2390 ---- + + case 32: +! #line 584 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + source.dest = 0; +*************** +*** 2395,2399 **** + + case 33: +! #line 590 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + source.dest = (yyvsp[(1) - (3)].number); +--- 2395,2399 ---- + + case 33: +! #line 590 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + source.dest = (yyvsp[(1) - (3)].number); +*************** +*** 2404,2408 **** + + case 34: +! #line 596 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + source.filename = (yyvsp[(1) - (3)].word); +--- 2404,2408 ---- + + case 34: +! #line 596 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + source.filename = (yyvsp[(1) - (3)].word); +*************** +*** 2413,2417 **** + + case 35: +! #line 602 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + source.dest = 1; +--- 2413,2417 ---- + + case 35: +! #line 602 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + source.dest = 1; +*************** +*** 2422,2426 **** + + case 36: +! #line 608 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + source.dest = (yyvsp[(1) - (3)].number); +--- 2422,2426 ---- + + case 36: +! #line 608 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + source.dest = (yyvsp[(1) - (3)].number); +*************** +*** 2431,2435 **** + + case 37: +! #line 614 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + source.filename = (yyvsp[(1) - (3)].word); +--- 2431,2435 ---- + + case 37: +! #line 614 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + source.filename = (yyvsp[(1) - (3)].word); +*************** +*** 2440,2444 **** + + case 38: +! #line 620 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + source.dest = 0; +--- 2440,2444 ---- + + case 38: +! #line 620 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + source.dest = 0; +*************** +*** 2449,2453 **** + + case 39: +! #line 626 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + source.dest = (yyvsp[(1) - (3)].number); +--- 2449,2453 ---- + + case 39: +! #line 626 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + source.dest = (yyvsp[(1) - (3)].number); +*************** +*** 2458,2462 **** + + case 40: +! #line 632 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + source.filename = (yyvsp[(1) - (3)].word); +--- 2458,2462 ---- + + case 40: +! #line 632 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + source.filename = (yyvsp[(1) - (3)].word); +*************** +*** 2467,2471 **** + + case 41: +! #line 638 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + source.dest = 1; +--- 2467,2471 ---- + + case 41: +! #line 638 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + source.dest = 1; +*************** +*** 2476,2480 **** + + case 42: +! #line 644 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + source.dest = (yyvsp[(1) - (3)].number); +--- 2476,2480 ---- + + case 42: +! #line 644 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + source.dest = (yyvsp[(1) - (3)].number); +*************** +*** 2485,2489 **** + + case 43: +! #line 650 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + source.filename = (yyvsp[(1) - (3)].word); +--- 2485,2489 ---- + + case 43: +! #line 650 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + source.filename = (yyvsp[(1) - (3)].word); +*************** +*** 2494,2498 **** + + case 44: +! #line 656 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + source.dest = 1; +--- 2494,2498 ---- + + case 44: +! #line 656 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + source.dest = 1; +*************** +*** 2503,2507 **** + + case 45: +! #line 662 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + source.dest = (yyvsp[(1) - (3)].number); +--- 2503,2507 ---- + + case 45: +! #line 662 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + source.dest = (yyvsp[(1) - (3)].number); +*************** +*** 2512,2516 **** + + case 46: +! #line 668 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + source.filename = (yyvsp[(1) - (3)].word); +--- 2512,2516 ---- + + case 46: +! #line 668 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + source.filename = (yyvsp[(1) - (3)].word); +*************** +*** 2521,2525 **** + + case 47: +! #line 674 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + source.dest = 0; +--- 2521,2525 ---- + + case 47: +! #line 674 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + source.dest = 0; +*************** +*** 2530,2534 **** + + case 48: +! #line 680 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + source.dest = (yyvsp[(1) - (3)].number); +--- 2530,2534 ---- + + case 48: +! #line 680 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + source.dest = (yyvsp[(1) - (3)].number); +*************** +*** 2539,2543 **** + + case 49: +! #line 686 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + source.filename = (yyvsp[(1) - (3)].word); +--- 2539,2543 ---- + + case 49: +! #line 686 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + source.filename = (yyvsp[(1) - (3)].word); +*************** +*** 2548,2552 **** + + case 50: +! #line 692 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + source.dest = 1; +--- 2548,2552 ---- + + case 50: +! #line 692 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + source.dest = 1; +*************** +*** 2557,2561 **** + + case 51: +! #line 698 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + source.dest = 1; +--- 2557,2561 ---- + + case 51: +! #line 698 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + source.dest = 1; +*************** +*** 2566,2585 **** + + case 52: +! #line 706 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { (yyval.element).word = (yyvsp[(1) - (1)].word); (yyval.element).redirect = 0; } + break; + + case 53: +! #line 708 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { (yyval.element).word = (yyvsp[(1) - (1)].word); (yyval.element).redirect = 0; } + break; + + case 54: +! #line 710 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { (yyval.element).redirect = (yyvsp[(1) - (1)].redirect); (yyval.element).word = 0; } + break; + + case 55: +! #line 714 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + (yyval.redirect) = (yyvsp[(1) - (1)].redirect); +--- 2566,2585 ---- + + case 52: +! #line 706 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { (yyval.element).word = (yyvsp[(1) - (1)].word); (yyval.element).redirect = 0; } + break; + + case 53: +! #line 708 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { (yyval.element).word = (yyvsp[(1) - (1)].word); (yyval.element).redirect = 0; } + break; + + case 54: +! #line 710 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { (yyval.element).redirect = (yyvsp[(1) - (1)].redirect); (yyval.element).word = 0; } + break; + + case 55: +! #line 714 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + (yyval.redirect) = (yyvsp[(1) - (1)].redirect); +*************** +*** 2588,2592 **** + + case 56: +! #line 718 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + register REDIRECT *t; +--- 2588,2592 ---- + + case 56: +! #line 718 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + register REDIRECT *t; +*************** +*** 2600,2624 **** + + case 57: +! #line 729 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { (yyval.command) = make_simple_command ((yyvsp[(1) - (1)].element), (COMMAND *)NULL); } + break; + + case 58: +! #line 731 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { (yyval.command) = make_simple_command ((yyvsp[(2) - (2)].element), (yyvsp[(1) - (2)].command)); } + break; + + case 59: +! #line 735 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { (yyval.command) = clean_simple_command ((yyvsp[(1) - (1)].command)); } + break; + + case 60: +! #line 737 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { (yyval.command) = (yyvsp[(1) - (1)].command); } + break; + + case 61: +! #line 739 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + COMMAND *tc; +--- 2600,2624 ---- + + case 57: +! #line 729 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { (yyval.command) = make_simple_command ((yyvsp[(1) - (1)].element), (COMMAND *)NULL); } + break; + + case 58: +! #line 731 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { (yyval.command) = make_simple_command ((yyvsp[(2) - (2)].element), (yyvsp[(1) - (2)].command)); } + break; + + case 59: +! #line 735 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { (yyval.command) = clean_simple_command ((yyvsp[(1) - (1)].command)); } + break; + + case 60: +! #line 737 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { (yyval.command) = (yyvsp[(1) - (1)].command); } + break; + + case 61: +! #line 739 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + COMMAND *tc; +*************** +*** 2639,2708 **** + + case 62: +! #line 755 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { (yyval.command) = (yyvsp[(1) - (1)].command); } + break; + + case 63: +! #line 757 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { (yyval.command) = (yyvsp[(1) - (1)].command); } + break; + + case 64: +! #line 761 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { (yyval.command) = (yyvsp[(1) - (1)].command); } + break; + + case 65: +! #line 763 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { (yyval.command) = (yyvsp[(1) - (1)].command); } + break; + + case 66: +! #line 765 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { (yyval.command) = make_while_command ((yyvsp[(2) - (5)].command), (yyvsp[(4) - (5)].command)); } + break; + + case 67: +! #line 767 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { (yyval.command) = make_until_command ((yyvsp[(2) - (5)].command), (yyvsp[(4) - (5)].command)); } + break; + + case 68: +! #line 769 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { (yyval.command) = (yyvsp[(1) - (1)].command); } + break; + + case 69: +! #line 771 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { (yyval.command) = (yyvsp[(1) - (1)].command); } + break; + + case 70: +! #line 773 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { (yyval.command) = (yyvsp[(1) - (1)].command); } + break; + + case 71: +! #line 775 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { (yyval.command) = (yyvsp[(1) - (1)].command); } + break; + + case 72: +! #line 777 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { (yyval.command) = (yyvsp[(1) - (1)].command); } + break; + + case 73: +! #line 779 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { (yyval.command) = (yyvsp[(1) - (1)].command); } + break; + + case 74: +! #line 781 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { (yyval.command) = (yyvsp[(1) - (1)].command); } + break; + + case 75: +! #line 785 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + (yyval.command) = make_for_command ((yyvsp[(2) - (6)].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(5) - (6)].command), word_lineno[word_top]); +--- 2639,2708 ---- + + case 62: +! #line 755 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { (yyval.command) = (yyvsp[(1) - (1)].command); } + break; + + case 63: +! #line 757 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { (yyval.command) = (yyvsp[(1) - (1)].command); } + break; + + case 64: +! #line 761 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { (yyval.command) = (yyvsp[(1) - (1)].command); } + break; + + case 65: +! #line 763 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { (yyval.command) = (yyvsp[(1) - (1)].command); } + break; + + case 66: +! #line 765 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { (yyval.command) = make_while_command ((yyvsp[(2) - (5)].command), (yyvsp[(4) - (5)].command)); } + break; + + case 67: +! #line 767 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { (yyval.command) = make_until_command ((yyvsp[(2) - (5)].command), (yyvsp[(4) - (5)].command)); } + break; + + case 68: +! #line 769 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { (yyval.command) = (yyvsp[(1) - (1)].command); } + break; + + case 69: +! #line 771 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { (yyval.command) = (yyvsp[(1) - (1)].command); } + break; + + case 70: +! #line 773 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { (yyval.command) = (yyvsp[(1) - (1)].command); } + break; + + case 71: +! #line 775 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { (yyval.command) = (yyvsp[(1) - (1)].command); } + break; + + case 72: +! #line 777 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { (yyval.command) = (yyvsp[(1) - (1)].command); } + break; + + case 73: +! #line 779 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { (yyval.command) = (yyvsp[(1) - (1)].command); } + break; + + case 74: +! #line 781 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { (yyval.command) = (yyvsp[(1) - (1)].command); } + break; + + case 75: +! #line 785 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + (yyval.command) = make_for_command ((yyvsp[(2) - (6)].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(5) - (6)].command), word_lineno[word_top]); +*************** +*** 2712,2716 **** + + case 76: +! #line 790 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + (yyval.command) = make_for_command ((yyvsp[(2) - (6)].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(5) - (6)].command), word_lineno[word_top]); +--- 2712,2716 ---- + + case 76: +! #line 790 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + (yyval.command) = make_for_command ((yyvsp[(2) - (6)].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(5) - (6)].command), word_lineno[word_top]); +*************** +*** 2720,2724 **** + + case 77: +! #line 795 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + (yyval.command) = make_for_command ((yyvsp[(2) - (7)].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(6) - (7)].command), word_lineno[word_top]); +--- 2720,2724 ---- + + case 77: +! #line 795 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + (yyval.command) = make_for_command ((yyvsp[(2) - (7)].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(6) - (7)].command), word_lineno[word_top]); +*************** +*** 2728,2732 **** + + case 78: +! #line 800 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + (yyval.command) = make_for_command ((yyvsp[(2) - (7)].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(6) - (7)].command), word_lineno[word_top]); +--- 2728,2732 ---- + + case 78: +! #line 800 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + (yyval.command) = make_for_command ((yyvsp[(2) - (7)].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(6) - (7)].command), word_lineno[word_top]); +*************** +*** 2736,2740 **** + + case 79: +! #line 805 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + (yyval.command) = make_for_command ((yyvsp[(2) - (10)].word), REVERSE_LIST ((yyvsp[(5) - (10)].word_list), WORD_LIST *), (yyvsp[(9) - (10)].command), word_lineno[word_top]); +--- 2736,2740 ---- + + case 79: +! #line 805 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + (yyval.command) = make_for_command ((yyvsp[(2) - (10)].word), REVERSE_LIST ((yyvsp[(5) - (10)].word_list), WORD_LIST *), (yyvsp[(9) - (10)].command), word_lineno[word_top]); +*************** +*** 2744,2748 **** + + case 80: +! #line 810 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + (yyval.command) = make_for_command ((yyvsp[(2) - (10)].word), REVERSE_LIST ((yyvsp[(5) - (10)].word_list), WORD_LIST *), (yyvsp[(9) - (10)].command), word_lineno[word_top]); +--- 2744,2748 ---- + + case 80: +! #line 810 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + (yyval.command) = make_for_command ((yyvsp[(2) - (10)].word), REVERSE_LIST ((yyvsp[(5) - (10)].word_list), WORD_LIST *), (yyvsp[(9) - (10)].command), word_lineno[word_top]); +*************** +*** 2752,2756 **** + + case 81: +! #line 815 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + (yyval.command) = make_for_command ((yyvsp[(2) - (9)].word), (WORD_LIST *)NULL, (yyvsp[(8) - (9)].command), word_lineno[word_top]); +--- 2752,2756 ---- + + case 81: +! #line 815 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + (yyval.command) = make_for_command ((yyvsp[(2) - (9)].word), (WORD_LIST *)NULL, (yyvsp[(8) - (9)].command), word_lineno[word_top]); +*************** +*** 2760,2764 **** + + case 82: +! #line 820 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + (yyval.command) = make_for_command ((yyvsp[(2) - (9)].word), (WORD_LIST *)NULL, (yyvsp[(8) - (9)].command), word_lineno[word_top]); +--- 2760,2764 ---- + + case 82: +! #line 820 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + (yyval.command) = make_for_command ((yyvsp[(2) - (9)].word), (WORD_LIST *)NULL, (yyvsp[(8) - (9)].command), word_lineno[word_top]); +*************** +*** 2768,2772 **** + + case 83: +! #line 827 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + (yyval.command) = make_arith_for_command ((yyvsp[(2) - (7)].word_list), (yyvsp[(6) - (7)].command), arith_for_lineno); +--- 2768,2772 ---- + + case 83: +! #line 827 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + (yyval.command) = make_arith_for_command ((yyvsp[(2) - (7)].word_list), (yyvsp[(6) - (7)].command), arith_for_lineno); +*************** +*** 2776,2780 **** + + case 84: +! #line 832 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + (yyval.command) = make_arith_for_command ((yyvsp[(2) - (7)].word_list), (yyvsp[(6) - (7)].command), arith_for_lineno); +--- 2776,2780 ---- + + case 84: +! #line 832 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + (yyval.command) = make_arith_for_command ((yyvsp[(2) - (7)].word_list), (yyvsp[(6) - (7)].command), arith_for_lineno); +*************** +*** 2784,2788 **** + + case 85: +! #line 837 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + (yyval.command) = make_arith_for_command ((yyvsp[(2) - (5)].word_list), (yyvsp[(4) - (5)].command), arith_for_lineno); +--- 2784,2788 ---- + + case 85: +! #line 837 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + (yyval.command) = make_arith_for_command ((yyvsp[(2) - (5)].word_list), (yyvsp[(4) - (5)].command), arith_for_lineno); +*************** +*** 2792,2796 **** + + case 86: +! #line 842 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + (yyval.command) = make_arith_for_command ((yyvsp[(2) - (5)].word_list), (yyvsp[(4) - (5)].command), arith_for_lineno); +--- 2792,2796 ---- + + case 86: +! #line 842 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + (yyval.command) = make_arith_for_command ((yyvsp[(2) - (5)].word_list), (yyvsp[(4) - (5)].command), arith_for_lineno); +*************** +*** 2800,2804 **** + + case 87: +! #line 849 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + (yyval.command) = make_select_command ((yyvsp[(2) - (6)].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(5) - (6)].command), word_lineno[word_top]); +--- 2800,2804 ---- + + case 87: +! #line 849 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + (yyval.command) = make_select_command ((yyvsp[(2) - (6)].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(5) - (6)].command), word_lineno[word_top]); +*************** +*** 2808,2812 **** + + case 88: +! #line 854 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + (yyval.command) = make_select_command ((yyvsp[(2) - (6)].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(5) - (6)].command), word_lineno[word_top]); +--- 2808,2812 ---- + + case 88: +! #line 854 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + (yyval.command) = make_select_command ((yyvsp[(2) - (6)].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(5) - (6)].command), word_lineno[word_top]); +*************** +*** 2816,2820 **** + + case 89: +! #line 859 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + (yyval.command) = make_select_command ((yyvsp[(2) - (7)].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(6) - (7)].command), word_lineno[word_top]); +--- 2816,2820 ---- + + case 89: +! #line 859 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + (yyval.command) = make_select_command ((yyvsp[(2) - (7)].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(6) - (7)].command), word_lineno[word_top]); +*************** +*** 2824,2828 **** + + case 90: +! #line 864 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + (yyval.command) = make_select_command ((yyvsp[(2) - (7)].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(6) - (7)].command), word_lineno[word_top]); +--- 2824,2828 ---- + + case 90: +! #line 864 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + (yyval.command) = make_select_command ((yyvsp[(2) - (7)].word), add_string_to_list ("\"$@\"", (WORD_LIST *)NULL), (yyvsp[(6) - (7)].command), word_lineno[word_top]); +*************** +*** 2832,2836 **** + + case 91: +! #line 869 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + (yyval.command) = make_select_command ((yyvsp[(2) - (10)].word), REVERSE_LIST ((yyvsp[(5) - (10)].word_list), WORD_LIST *), (yyvsp[(9) - (10)].command), word_lineno[word_top]); +--- 2832,2836 ---- + + case 91: +! #line 869 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + (yyval.command) = make_select_command ((yyvsp[(2) - (10)].word), REVERSE_LIST ((yyvsp[(5) - (10)].word_list), WORD_LIST *), (yyvsp[(9) - (10)].command), word_lineno[word_top]); +*************** +*** 2840,2844 **** + + case 92: +! #line 874 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + (yyval.command) = make_select_command ((yyvsp[(2) - (10)].word), REVERSE_LIST ((yyvsp[(5) - (10)].word_list), WORD_LIST *), (yyvsp[(9) - (10)].command), word_lineno[word_top]); +--- 2840,2844 ---- + + case 92: +! #line 874 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + (yyval.command) = make_select_command ((yyvsp[(2) - (10)].word), REVERSE_LIST ((yyvsp[(5) - (10)].word_list), WORD_LIST *), (yyvsp[(9) - (10)].command), word_lineno[word_top]); +*************** +*** 2848,2852 **** + + case 93: +! #line 881 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + (yyval.command) = make_case_command ((yyvsp[(2) - (6)].word), (PATTERN_LIST *)NULL, word_lineno[word_top]); +--- 2848,2852 ---- + + case 93: +! #line 881 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + (yyval.command) = make_case_command ((yyvsp[(2) - (6)].word), (PATTERN_LIST *)NULL, word_lineno[word_top]); +*************** +*** 2856,2860 **** + + case 94: +! #line 886 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + (yyval.command) = make_case_command ((yyvsp[(2) - (7)].word), (yyvsp[(5) - (7)].pattern), word_lineno[word_top]); +--- 2856,2860 ---- + + case 94: +! #line 886 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + (yyval.command) = make_case_command ((yyvsp[(2) - (7)].word), (yyvsp[(5) - (7)].pattern), word_lineno[word_top]); +*************** +*** 2864,2868 **** + + case 95: +! #line 891 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + (yyval.command) = make_case_command ((yyvsp[(2) - (6)].word), (yyvsp[(5) - (6)].pattern), word_lineno[word_top]); +--- 2864,2868 ---- + + case 95: +! #line 891 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + (yyval.command) = make_case_command ((yyvsp[(2) - (6)].word), (yyvsp[(5) - (6)].pattern), word_lineno[word_top]); +*************** +*** 2872,2896 **** + + case 96: +! #line 898 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { (yyval.command) = make_function_def ((yyvsp[(1) - (5)].word), (yyvsp[(5) - (5)].command), function_dstart, function_bstart); } + break; + + case 97: +! #line 901 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { (yyval.command) = make_function_def ((yyvsp[(2) - (6)].word), (yyvsp[(6) - (6)].command), function_dstart, function_bstart); } + break; + + case 98: +! #line 904 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { (yyval.command) = make_function_def ((yyvsp[(2) - (4)].word), (yyvsp[(4) - (4)].command), function_dstart, function_bstart); } + break; + + case 99: +! #line 908 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { (yyval.command) = (yyvsp[(1) - (1)].command); } + break; + + case 100: +! #line 910 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + COMMAND *tc; +--- 2872,2896 ---- + + case 96: +! #line 898 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { (yyval.command) = make_function_def ((yyvsp[(1) - (5)].word), (yyvsp[(5) - (5)].command), function_dstart, function_bstart); } + break; + + case 97: +! #line 901 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { (yyval.command) = make_function_def ((yyvsp[(2) - (6)].word), (yyvsp[(6) - (6)].command), function_dstart, function_bstart); } + break; + + case 98: +! #line 904 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { (yyval.command) = make_function_def ((yyvsp[(2) - (4)].word), (yyvsp[(4) - (4)].command), function_dstart, function_bstart); } + break; + + case 99: +! #line 908 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { (yyval.command) = (yyvsp[(1) - (1)].command); } + break; + + case 100: +! #line 910 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + COMMAND *tc; +*************** +*** 2924,2928 **** + + case 101: +! #line 941 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + (yyval.command) = make_subshell_command ((yyvsp[(2) - (3)].command)); +--- 2924,2928 ---- + + case 101: +! #line 941 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + (yyval.command) = make_subshell_command ((yyvsp[(2) - (3)].command)); +*************** +*** 2932,2936 **** + + case 102: +! #line 948 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + (yyval.command) = make_coproc_command ("COPROC", (yyvsp[(2) - (2)].command)); +--- 2932,2936 ---- + + case 102: +! #line 948 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + (yyval.command) = make_coproc_command ("COPROC", (yyvsp[(2) - (2)].command)); +*************** +*** 2940,2944 **** + + case 103: +! #line 953 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + COMMAND *tc; +--- 2940,2944 ---- + + case 103: +! #line 953 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + COMMAND *tc; +*************** +*** 2960,2964 **** + + case 104: +! #line 970 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + (yyval.command) = make_coproc_command ((yyvsp[(2) - (3)].word)->word, (yyvsp[(3) - (3)].command)); +--- 2960,2964 ---- + + case 104: +! #line 970 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + (yyval.command) = make_coproc_command ((yyvsp[(2) - (3)].word)->word, (yyvsp[(3) - (3)].command)); +*************** +*** 2968,2972 **** + + case 105: +! #line 975 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + COMMAND *tc; +--- 2968,2972 ---- + + case 105: +! #line 975 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + COMMAND *tc; +*************** +*** 2988,2992 **** + + case 106: +! #line 992 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + (yyval.command) = make_coproc_command ("COPROC", clean_simple_command ((yyvsp[(2) - (2)].command))); +--- 2988,2992 ---- + + case 106: +! #line 992 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + (yyval.command) = make_coproc_command ("COPROC", clean_simple_command ((yyvsp[(2) - (2)].command))); +*************** +*** 2996,3110 **** + + case 107: +! #line 999 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { (yyval.command) = make_if_command ((yyvsp[(2) - (5)].command), (yyvsp[(4) - (5)].command), (COMMAND *)NULL); } + break; + + case 108: +! #line 1001 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { (yyval.command) = make_if_command ((yyvsp[(2) - (7)].command), (yyvsp[(4) - (7)].command), (yyvsp[(6) - (7)].command)); } + break; + + case 109: +! #line 1003 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { (yyval.command) = make_if_command ((yyvsp[(2) - (6)].command), (yyvsp[(4) - (6)].command), (yyvsp[(5) - (6)].command)); } + break; + + case 110: +! #line 1008 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { (yyval.command) = make_group_command ((yyvsp[(2) - (3)].command)); } + break; + + case 111: +! #line 1012 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { (yyval.command) = make_arith_command ((yyvsp[(1) - (1)].word_list)); } + break; + + case 112: +! #line 1016 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { (yyval.command) = (yyvsp[(2) - (3)].command); } + break; + + case 113: +! #line 1020 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { (yyval.command) = make_if_command ((yyvsp[(2) - (4)].command), (yyvsp[(4) - (4)].command), (COMMAND *)NULL); } + break; + + case 114: +! #line 1022 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { (yyval.command) = make_if_command ((yyvsp[(2) - (6)].command), (yyvsp[(4) - (6)].command), (yyvsp[(6) - (6)].command)); } + break; + + case 115: +! #line 1024 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { (yyval.command) = make_if_command ((yyvsp[(2) - (5)].command), (yyvsp[(4) - (5)].command), (yyvsp[(5) - (5)].command)); } + break; + + case 117: +! #line 1029 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { (yyvsp[(2) - (2)].pattern)->next = (yyvsp[(1) - (2)].pattern); (yyval.pattern) = (yyvsp[(2) - (2)].pattern); } + break; + + case 118: +! #line 1033 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { (yyval.pattern) = make_pattern_list ((yyvsp[(2) - (4)].word_list), (yyvsp[(4) - (4)].command)); } + break; + + case 119: +! #line 1035 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { (yyval.pattern) = make_pattern_list ((yyvsp[(2) - (4)].word_list), (COMMAND *)NULL); } + break; + + case 120: +! #line 1037 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { (yyval.pattern) = make_pattern_list ((yyvsp[(3) - (5)].word_list), (yyvsp[(5) - (5)].command)); } + break; + + case 121: +! #line 1039 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { (yyval.pattern) = make_pattern_list ((yyvsp[(3) - (5)].word_list), (COMMAND *)NULL); } + break; + + case 122: +! #line 1043 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { (yyval.pattern) = (yyvsp[(1) - (2)].pattern); } + break; + + case 123: +! #line 1045 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { (yyvsp[(2) - (3)].pattern)->next = (yyvsp[(1) - (3)].pattern); (yyval.pattern) = (yyvsp[(2) - (3)].pattern); } + break; + + case 124: +! #line 1047 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { (yyvsp[(1) - (2)].pattern)->flags |= CASEPAT_FALLTHROUGH; (yyval.pattern) = (yyvsp[(1) - (2)].pattern); } + break; + + case 125: +! #line 1049 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { (yyvsp[(2) - (3)].pattern)->flags |= CASEPAT_FALLTHROUGH; (yyvsp[(2) - (3)].pattern)->next = (yyvsp[(1) - (3)].pattern); (yyval.pattern) = (yyvsp[(2) - (3)].pattern); } + break; + + case 126: +! #line 1051 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { (yyvsp[(1) - (2)].pattern)->flags |= CASEPAT_TESTNEXT; (yyval.pattern) = (yyvsp[(1) - (2)].pattern); } + break; + + case 127: +! #line 1053 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { (yyvsp[(2) - (3)].pattern)->flags |= CASEPAT_TESTNEXT; (yyvsp[(2) - (3)].pattern)->next = (yyvsp[(1) - (3)].pattern); (yyval.pattern) = (yyvsp[(2) - (3)].pattern); } + break; + + case 128: +! #line 1057 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { (yyval.word_list) = make_word_list ((yyvsp[(1) - (1)].word), (WORD_LIST *)NULL); } + break; + + case 129: +! #line 1059 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { (yyval.word_list) = make_word_list ((yyvsp[(3) - (3)].word), (yyvsp[(1) - (3)].word_list)); } + break; + + case 130: +! #line 1068 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + (yyval.command) = (yyvsp[(2) - (2)].command); +--- 2996,3110 ---- + + case 107: +! #line 999 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { (yyval.command) = make_if_command ((yyvsp[(2) - (5)].command), (yyvsp[(4) - (5)].command), (COMMAND *)NULL); } + break; + + case 108: +! #line 1001 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { (yyval.command) = make_if_command ((yyvsp[(2) - (7)].command), (yyvsp[(4) - (7)].command), (yyvsp[(6) - (7)].command)); } + break; + + case 109: +! #line 1003 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { (yyval.command) = make_if_command ((yyvsp[(2) - (6)].command), (yyvsp[(4) - (6)].command), (yyvsp[(5) - (6)].command)); } + break; + + case 110: +! #line 1008 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { (yyval.command) = make_group_command ((yyvsp[(2) - (3)].command)); } + break; + + case 111: +! #line 1012 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { (yyval.command) = make_arith_command ((yyvsp[(1) - (1)].word_list)); } + break; + + case 112: +! #line 1016 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { (yyval.command) = (yyvsp[(2) - (3)].command); } + break; + + case 113: +! #line 1020 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { (yyval.command) = make_if_command ((yyvsp[(2) - (4)].command), (yyvsp[(4) - (4)].command), (COMMAND *)NULL); } + break; + + case 114: +! #line 1022 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { (yyval.command) = make_if_command ((yyvsp[(2) - (6)].command), (yyvsp[(4) - (6)].command), (yyvsp[(6) - (6)].command)); } + break; + + case 115: +! #line 1024 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { (yyval.command) = make_if_command ((yyvsp[(2) - (5)].command), (yyvsp[(4) - (5)].command), (yyvsp[(5) - (5)].command)); } + break; + + case 117: +! #line 1029 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { (yyvsp[(2) - (2)].pattern)->next = (yyvsp[(1) - (2)].pattern); (yyval.pattern) = (yyvsp[(2) - (2)].pattern); } + break; + + case 118: +! #line 1033 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { (yyval.pattern) = make_pattern_list ((yyvsp[(2) - (4)].word_list), (yyvsp[(4) - (4)].command)); } + break; + + case 119: +! #line 1035 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { (yyval.pattern) = make_pattern_list ((yyvsp[(2) - (4)].word_list), (COMMAND *)NULL); } + break; + + case 120: +! #line 1037 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { (yyval.pattern) = make_pattern_list ((yyvsp[(3) - (5)].word_list), (yyvsp[(5) - (5)].command)); } + break; + + case 121: +! #line 1039 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { (yyval.pattern) = make_pattern_list ((yyvsp[(3) - (5)].word_list), (COMMAND *)NULL); } + break; + + case 122: +! #line 1043 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { (yyval.pattern) = (yyvsp[(1) - (2)].pattern); } + break; + + case 123: +! #line 1045 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { (yyvsp[(2) - (3)].pattern)->next = (yyvsp[(1) - (3)].pattern); (yyval.pattern) = (yyvsp[(2) - (3)].pattern); } + break; + + case 124: +! #line 1047 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { (yyvsp[(1) - (2)].pattern)->flags |= CASEPAT_FALLTHROUGH; (yyval.pattern) = (yyvsp[(1) - (2)].pattern); } + break; + + case 125: +! #line 1049 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { (yyvsp[(2) - (3)].pattern)->flags |= CASEPAT_FALLTHROUGH; (yyvsp[(2) - (3)].pattern)->next = (yyvsp[(1) - (3)].pattern); (yyval.pattern) = (yyvsp[(2) - (3)].pattern); } + break; + + case 126: +! #line 1051 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { (yyvsp[(1) - (2)].pattern)->flags |= CASEPAT_TESTNEXT; (yyval.pattern) = (yyvsp[(1) - (2)].pattern); } + break; + + case 127: +! #line 1053 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { (yyvsp[(2) - (3)].pattern)->flags |= CASEPAT_TESTNEXT; (yyvsp[(2) - (3)].pattern)->next = (yyvsp[(1) - (3)].pattern); (yyval.pattern) = (yyvsp[(2) - (3)].pattern); } + break; + + case 128: +! #line 1057 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { (yyval.word_list) = make_word_list ((yyvsp[(1) - (1)].word), (WORD_LIST *)NULL); } + break; + + case 129: +! #line 1059 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { (yyval.word_list) = make_word_list ((yyvsp[(3) - (3)].word), (yyvsp[(1) - (3)].word_list)); } + break; + + case 130: +! #line 1068 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + (yyval.command) = (yyvsp[(2) - (2)].command); +*************** +*** 3115,3119 **** + + case 132: +! #line 1077 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + (yyval.command) = (yyvsp[(2) - (2)].command); +--- 3115,3119 ---- + + case 132: +! #line 1077 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + (yyval.command) = (yyvsp[(2) - (2)].command); +*************** +*** 3122,3126 **** + + case 134: +! #line 1084 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + if ((yyvsp[(1) - (3)].command)->type == cm_connection) +--- 3122,3126 ---- + + case 134: +! #line 1084 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + if ((yyvsp[(1) - (3)].command)->type == cm_connection) +*************** +*** 3132,3146 **** + + case 136: +! #line 1095 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { (yyval.command) = command_connect ((yyvsp[(1) - (4)].command), (yyvsp[(4) - (4)].command), AND_AND); } + break; + + case 137: +! #line 1097 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { (yyval.command) = command_connect ((yyvsp[(1) - (4)].command), (yyvsp[(4) - (4)].command), OR_OR); } + break; + + case 138: +! #line 1099 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + if ((yyvsp[(1) - (4)].command)->type == cm_connection) +--- 3132,3146 ---- + + case 136: +! #line 1095 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { (yyval.command) = command_connect ((yyvsp[(1) - (4)].command), (yyvsp[(4) - (4)].command), AND_AND); } + break; + + case 137: +! #line 1097 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { (yyval.command) = command_connect ((yyvsp[(1) - (4)].command), (yyvsp[(4) - (4)].command), OR_OR); } + break; + + case 138: +! #line 1099 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + if ((yyvsp[(1) - (4)].command)->type == cm_connection) +*************** +*** 3152,3186 **** + + case 139: +! #line 1106 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { (yyval.command) = command_connect ((yyvsp[(1) - (4)].command), (yyvsp[(4) - (4)].command), ';'); } + break; + + case 140: +! #line 1108 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { (yyval.command) = command_connect ((yyvsp[(1) - (4)].command), (yyvsp[(4) - (4)].command), ';'); } + break; + + case 141: +! #line 1110 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { (yyval.command) = (yyvsp[(1) - (1)].command); } + break; + + case 144: +! #line 1118 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { (yyval.number) = '\n'; } + break; + + case 145: +! #line 1120 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { (yyval.number) = ';'; } + break; + + case 146: +! #line 1122 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { (yyval.number) = yacc_EOF; } + break; + + case 149: +! #line 1136 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + (yyval.command) = (yyvsp[(1) - (1)].command); +--- 3152,3186 ---- + + case 139: +! #line 1106 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { (yyval.command) = command_connect ((yyvsp[(1) - (4)].command), (yyvsp[(4) - (4)].command), ';'); } + break; + + case 140: +! #line 1108 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { (yyval.command) = command_connect ((yyvsp[(1) - (4)].command), (yyvsp[(4) - (4)].command), ';'); } + break; + + case 141: +! #line 1110 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { (yyval.command) = (yyvsp[(1) - (1)].command); } + break; + + case 144: +! #line 1118 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { (yyval.number) = '\n'; } + break; + + case 145: +! #line 1120 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { (yyval.number) = ';'; } + break; + + case 146: +! #line 1122 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { (yyval.number) = yacc_EOF; } + break; + + case 149: +! #line 1136 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + (yyval.command) = (yyvsp[(1) - (1)].command); +*************** +*** 3198,3202 **** + + case 150: +! #line 1149 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + if ((yyvsp[(1) - (2)].command)->type == cm_connection) +--- 3198,3202 ---- + + case 150: +! #line 1149 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + if ((yyvsp[(1) - (2)].command)->type == cm_connection) +*************** +*** 3217,3221 **** + + case 151: +! #line 1165 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + (yyval.command) = (yyvsp[(1) - (2)].command); +--- 3217,3221 ---- + + case 151: +! #line 1165 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + (yyval.command) = (yyvsp[(1) - (2)].command); +*************** +*** 3233,3247 **** + + case 152: +! #line 1180 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { (yyval.command) = command_connect ((yyvsp[(1) - (4)].command), (yyvsp[(4) - (4)].command), AND_AND); } + break; + + case 153: +! #line 1182 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { (yyval.command) = command_connect ((yyvsp[(1) - (4)].command), (yyvsp[(4) - (4)].command), OR_OR); } + break; + + case 154: +! #line 1184 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + if ((yyvsp[(1) - (3)].command)->type == cm_connection) +--- 3233,3247 ---- + + case 152: +! #line 1180 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { (yyval.command) = command_connect ((yyvsp[(1) - (4)].command), (yyvsp[(4) - (4)].command), AND_AND); } + break; + + case 153: +! #line 1182 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { (yyval.command) = command_connect ((yyvsp[(1) - (4)].command), (yyvsp[(4) - (4)].command), OR_OR); } + break; + + case 154: +! #line 1184 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + if ((yyvsp[(1) - (3)].command)->type == cm_connection) +*************** +*** 3253,3272 **** + + case 155: +! #line 1191 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { (yyval.command) = command_connect ((yyvsp[(1) - (3)].command), (yyvsp[(3) - (3)].command), ';'); } + break; + + case 156: +! #line 1194 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { (yyval.command) = (yyvsp[(1) - (1)].command); } + break; + + case 157: +! #line 1198 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { (yyval.command) = (yyvsp[(1) - (1)].command); } + break; + + case 158: +! #line 1200 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + if ((yyvsp[(2) - (2)].command)) +--- 3253,3272 ---- + + case 155: +! #line 1191 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { (yyval.command) = command_connect ((yyvsp[(1) - (3)].command), (yyvsp[(3) - (3)].command), ';'); } + break; + + case 156: +! #line 1194 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { (yyval.command) = (yyvsp[(1) - (1)].command); } + break; + + case 157: +! #line 1198 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { (yyval.command) = (yyvsp[(1) - (1)].command); } + break; + + case 158: +! #line 1200 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + if ((yyvsp[(2) - (2)].command)) +*************** +*** 3277,3281 **** + + case 159: +! #line 1206 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + if ((yyvsp[(2) - (2)].command)) +--- 3277,3281 ---- + + case 159: +! #line 1206 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + if ((yyvsp[(2) - (2)].command)) +*************** +*** 3286,3290 **** + + case 160: +! #line 1212 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + ELEMENT x; +--- 3286,3290 ---- + + case 160: +! #line 1212 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + ELEMENT x; +*************** +*** 3306,3310 **** + + case 161: +! #line 1229 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + ELEMENT x; +--- 3306,3310 ---- + + case 161: +! #line 1229 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + ELEMENT x; +*************** +*** 3327,3336 **** + + case 162: +! #line 1249 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { (yyval.command) = command_connect ((yyvsp[(1) - (4)].command), (yyvsp[(4) - (4)].command), '|'); } + break; + + case 163: +! #line 1251 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { + /* Make cmd1 |& cmd2 equivalent to cmd1 2>&1 | cmd2 */ +--- 3327,3336 ---- + + case 162: +! #line 1249 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { (yyval.command) = command_connect ((yyvsp[(1) - (4)].command), (yyvsp[(4) - (4)].command), '|'); } + break; + + case 163: +! #line 1251 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { + /* Make cmd1 |& cmd2 equivalent to cmd1 2>&1 | cmd2 */ +*************** +*** 3358,3377 **** + + case 164: +! #line 1274 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { (yyval.command) = (yyvsp[(1) - (1)].command); } + break; + + case 165: +! #line 1278 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { (yyval.number) = CMD_TIME_PIPELINE; } + break; + + case 166: +! #line 1280 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { (yyval.number) = CMD_TIME_PIPELINE|CMD_TIME_POSIX; } + break; + + case 167: +! #line 1282 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + { (yyval.number) = CMD_TIME_PIPELINE|CMD_TIME_POSIX; } + break; +--- 3358,3377 ---- + + case 164: +! #line 1274 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { (yyval.command) = (yyvsp[(1) - (1)].command); } + break; + + case 165: +! #line 1278 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { (yyval.number) = CMD_TIME_PIPELINE; } + break; + + case 166: +! #line 1280 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { (yyval.number) = CMD_TIME_PIPELINE|CMD_TIME_POSIX; } + break; + + case 167: +! #line 1282 "/usr/src/local/bash/bash-4.3-patched/parse.y" + { (yyval.number) = CMD_TIME_PIPELINE|CMD_TIME_POSIX; } + break; +*************** +*** 3593,3597 **** + + +! #line 1284 "/usr/src/local/chet/src/bash/bash-4.3.28/parse.y" + + +--- 3593,3597 ---- + + +! #line 1284 "/usr/src/local/bash/bash-4.3-patched/parse.y" + + +*************** +*** 4851,4854 **** +--- 4851,4864 ---- + } + ++ char * ++ parser_remaining_input () ++ { ++ if (shell_input_line == 0) ++ return 0; ++ if (shell_input_line_index < 0 || shell_input_line_index >= shell_input_line_len) ++ return '\0'; /* XXX */ ++ return (shell_input_line + shell_input_line_index); ++ } ++ + #ifdef INCLUDE_UNUSED + /* Back the input pointer up by one, effectively `ungetting' a character. */ +*************** +*** 6340,6345 **** + /* reset_parser clears shell_input_line and associated variables */ + restore_input_line_state (&ls); +! if (interactive) +! token_to_read = 0; + + /* Need to find how many characters parse_and_execute consumed, update +--- 6350,6355 ---- + /* reset_parser clears shell_input_line and associated variables */ + restore_input_line_state (&ls); +! +! token_to_read = 0; + + /* Need to find how many characters parse_and_execute consumed, update +*** ../bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500 +--- patchlevel.h 2014-03-20 20:01:28.000000000 -0400 +*************** +*** 26,30 **** + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 29 + + #endif /* _PATCHLEVEL_H_ */ +--- 26,30 ---- + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 30 + + #endif /* _PATCHLEVEL_H_ */ diff --git a/patches/source/bash/bash-4.3-patches/bash43-031 b/patches/source/bash/bash-4.3-patches/bash43-031 new file mode 100644 index 00000000..a6519560 --- /dev/null +++ b/patches/source/bash/bash-4.3-patches/bash43-031 @@ -0,0 +1,112 @@ + BASH PATCH REPORT + ================= + +Bash-Release: 4.3 +Patch-ID: bash43-031 + +Bug-Reported-by: lolilolicon <lolilolicon@gmail.com> +Bug-Reference-ID: <CAMtVo_Nz=32Oq=zWTb6=+8gUNXOo2rRvud1W4oPnA-cgVk_ZqQ@mail.gmail.com> +Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2014-08/msg00139.html + +Bug-Description: + +The new nameref assignment functionality introduced in bash-4.3 did not perform +enough validation on the variable value and would create variables with +invalid names. + +Patch (apply with `patch -p0'): + +*** ../bash-4.3-patched/subst.h 2014-01-11 21:02:27.000000000 -0500 +--- subst.h 2014-09-01 12:16:56.000000000 -0400 +*************** +*** 48,51 **** +--- 48,52 ---- + #define ASS_MKGLOBAL 0x0008 /* force global assignment */ + #define ASS_NAMEREF 0x0010 /* assigning to nameref variable */ ++ #define ASS_FROMREF 0x0020 /* assigning from value of nameref variable */ + + /* Flags for the string extraction functions. */ +*** ../bash-4.3-patched/variables.c 2014-05-15 08:26:50.000000000 -0400 +--- variables.c 2014-09-01 14:37:44.000000000 -0400 +*************** +*** 2504,2511 **** + int hflags, aflags; + { +! char *newval; + SHELL_VAR *entry; + + entry = (hflags & HASH_NOSRCH) ? (SHELL_VAR *)NULL : hash_lookup (name, table); + /* Follow the nameref chain here if this is the global variables table */ + if (entry && nameref_p (entry) && (invisible_p (entry) == 0) && table == global_variables->table) +--- 2566,2590 ---- + int hflags, aflags; + { +! char *newname, *newval; + SHELL_VAR *entry; ++ #if defined (ARRAY_VARS) ++ arrayind_t ind; ++ char *subp; ++ int sublen; ++ #endif + ++ newname = 0; ++ #if defined (ARRAY_VARS) ++ if ((aflags & ASS_FROMREF) && (hflags & HASH_NOSRCH) == 0 && valid_array_reference (name)) ++ { ++ newname = array_variable_name (name, &subp, &sublen); ++ if (newname == 0) ++ return (SHELL_VAR *)NULL; /* XXX */ ++ entry = hash_lookup (newname, table); ++ } ++ else ++ #endif + entry = (hflags & HASH_NOSRCH) ? (SHELL_VAR *)NULL : hash_lookup (name, table); ++ + /* Follow the nameref chain here if this is the global variables table */ + if (entry && nameref_p (entry) && (invisible_p (entry) == 0) && table == global_variables->table) +*************** +*** 2538,2541 **** +--- 2617,2630 ---- + } + } ++ #if defined (ARRAY_VARS) ++ else if (entry == 0 && newname) ++ { ++ entry = make_new_array_variable (newname); /* indexed array by default */ ++ if (entry == 0) ++ return entry; ++ ind = array_expand_index (name, subp, sublen); ++ bind_array_element (entry, ind, value, aflags); ++ } ++ #endif + else if (entry == 0) + { +*************** +*** 2658,2662 **** + if (nameref_cell (nv) == 0) + return (bind_variable_internal (nv->name, value, nvc->table, 0, flags)); +! return (bind_variable_internal (nameref_cell (nv), value, nvc->table, 0, flags)); + } + else +--- 2747,2752 ---- + if (nameref_cell (nv) == 0) + return (bind_variable_internal (nv->name, value, nvc->table, 0, flags)); +! /* XXX - bug here with ref=array[index] */ +! return (bind_variable_internal (nameref_cell (nv), value, nvc->table, 0, flags|ASS_FROMREF)); + } + else +*** ../bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500 +--- patchlevel.h 2014-03-20 20:01:28.000000000 -0400 +*************** +*** 26,30 **** + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 30 + + #endif /* _PATCHLEVEL_H_ */ +--- 26,30 ---- + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 31 + + #endif /* _PATCHLEVEL_H_ */ diff --git a/patches/source/bash/bash-4.3-patches/bash43-032 b/patches/source/bash/bash-4.3-patches/bash43-032 new file mode 100644 index 00000000..0843719c --- /dev/null +++ b/patches/source/bash/bash-4.3-patches/bash43-032 @@ -0,0 +1,51 @@ + BASH PATCH REPORT + ================= + +Bash-Release: 4.3 +Patch-ID: bash43-032 + +Bug-Reported-by: crispusfairbairn@gmail.com +Bug-Reference-ID: <b5e499f7-3b98-408d-9f94-c0387580e73a@googlegroups.com> +Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2014-09/msg00013.html + +Bug-Description: + +When bash is running in Posix mode, it allows signals -- including SIGCHLD -- +to interrupt the `wait' builtin, as Posix requires. However, the interrupt +causes bash to not run a SIGCHLD trap for all exited children. This patch +fixes the issue and restores the documented behavior in Posix mode. + +Patch (apply with `patch -p0'): + +*** ../bash-4.3-patched/jobs.c 2014-05-14 09:20:15.000000000 -0400 +--- jobs.c 2014-09-09 11:50:38.000000000 -0400 +*************** +*** 3340,3344 **** + { + interrupt_immediately = 0; +! trap_handler (SIGCHLD); /* set pending_traps[SIGCHLD] */ + wait_signal_received = SIGCHLD; + /* If we're in a signal handler, let CHECK_WAIT_INTR pick it up; +--- 3346,3352 ---- + { + interrupt_immediately = 0; +! /* This was trap_handler (SIGCHLD) but that can lose traps if +! children_exited > 1 */ +! queue_sigchld_trap (children_exited); + wait_signal_received = SIGCHLD; + /* If we're in a signal handler, let CHECK_WAIT_INTR pick it up; +*** ../bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500 +--- patchlevel.h 2014-03-20 20:01:28.000000000 -0400 +*************** +*** 26,30 **** + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 31 + + #endif /* _PATCHLEVEL_H_ */ +--- 26,30 ---- + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 32 + + #endif /* _PATCHLEVEL_H_ */ diff --git a/patches/source/bash/bash-4.3-patches/bash43-033 b/patches/source/bash/bash-4.3-patches/bash43-033 new file mode 100644 index 00000000..5f5147ff --- /dev/null +++ b/patches/source/bash/bash-4.3-patches/bash43-033 @@ -0,0 +1,225 @@ + BASH PATCH REPORT + ================= + +Bash-Release: 4.3 +Patch-ID: bash43-033 + +Bug-Reported-by: mickael9@gmail.com, Jan Rome <jan.rome@gmail.com> +Bug-Reference-ID: <20140907224046.382ED3610CC@mickael-laptop.localdomain>, + <540D661D.50908@gmail.com> +Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2014-09/msg00029.html + http://lists.gnu.org/archive/html/bug-bash/2014-09/msg00030.html + +Bug-Description: + +Bash does not clean up the terminal state in all cases where bash or +readline modifies it and bash is subsequently terminated by a fatal signal. +This happens when the `read' builtin modifies the terminal settings, both +when readline is active and when it is not. It occurs most often when a script +installs a trap that exits on a signal without re-sending the signal to itself. + +Patch (apply with `patch -p0'): + +*** ../bash-4.3-patched/shell.c 2014-01-14 08:04:32.000000000 -0500 +--- shell.c 2014-12-22 10:27:50.000000000 -0500 +*************** +*** 74,77 **** +--- 74,78 ---- + + #if defined (READLINE) ++ # include <readline/readline.h> + # include "bashline.h" + #endif +*************** +*** 910,913 **** +--- 912,923 ---- + fflush (stderr); + ++ /* Clean up the terminal if we are in a state where it's been modified. */ ++ #if defined (READLINE) ++ if (RL_ISSTATE (RL_STATE_TERMPREPPED) && rl_deprep_term_function) ++ (*rl_deprep_term_function) (); ++ #endif ++ if (read_tty_modified ()) ++ read_tty_cleanup (); ++ + /* Do trap[0] if defined. Allow it to override the exit status + passed to us. */ +*** ../bash-4.3-patched/builtins/read.def 2014-10-01 12:57:38.000000000 -0400 +--- builtins/read.def 2014-12-22 10:48:54.000000000 -0500 +*************** +*** 141,148 **** + int sigalrm_seen; + +! static int reading; + static SigHandler *old_alrm; + static unsigned char delim; + + /* In all cases, SIGALRM just sets a flag that we check periodically. This + avoids problems with the semi-tricky stuff we do with the xfree of +--- 141,150 ---- + int sigalrm_seen; + +! static int reading, tty_modified; + static SigHandler *old_alrm; + static unsigned char delim; + ++ static struct ttsave termsave; ++ + /* In all cases, SIGALRM just sets a flag that we check periodically. This + avoids problems with the semi-tricky stuff we do with the xfree of +*************** +*** 189,193 **** + SHELL_VAR *var; + TTYSTRUCT ttattrs, ttset; +- struct ttsave termsave; + #if defined (ARRAY_VARS) + WORD_LIST *alist; +--- 191,194 ---- +*************** +*** 222,226 **** + USE_VAR(lastsig); + +! sigalrm_seen = reading = 0; + + i = 0; /* Index into the string that we are reading. */ +--- 223,227 ---- + USE_VAR(lastsig); + +! sigalrm_seen = reading = tty_modified = 0; + + i = 0; /* Index into the string that we are reading. */ +*************** +*** 439,442 **** +--- 440,445 ---- + goto assign_vars; + } ++ if (interactive_shell == 0) ++ initialize_terminating_signals (); + old_alrm = set_signal_handler (SIGALRM, sigalrm); + add_unwind_protect (reset_alarm, (char *)NULL); +*************** +*** 483,487 **** +--- 486,493 ---- + if (i < 0) + sh_ttyerror (1); ++ tty_modified = 1; + add_unwind_protect ((Function *)ttyrestore, (char *)&termsave); ++ if (interactive_shell == 0) ++ initialize_terminating_signals (); + } + } +*************** +*** 498,502 **** +--- 504,511 ---- + sh_ttyerror (1); + ++ tty_modified = 1; + add_unwind_protect ((Function *)ttyrestore, (char *)&termsave); ++ if (interactive_shell == 0) ++ initialize_terminating_signals (); + } + +*************** +*** 589,592 **** +--- 598,603 ---- + else + lastsig = 0; ++ if (terminating_signal && tty_modified) ++ ttyrestore (&termsave); /* fix terminal before exiting */ + CHECK_TERMSIG; + eof = 1; +*************** +*** 979,982 **** +--- 990,1007 ---- + { + ttsetattr (ttp->fd, ttp->attrs); ++ tty_modified = 0; ++ } ++ ++ void ++ read_tty_cleanup () ++ { ++ if (tty_modified) ++ ttyrestore (&termsave); ++ } ++ ++ int ++ read_tty_modified () ++ { ++ return (tty_modified); + } + +*** ../bash-4.3-patched/builtins/common.h 2014-10-01 12:57:47.000000000 -0400 +--- builtins/common.h 2014-12-22 10:10:14.000000000 -0500 +*************** +*** 123,126 **** +--- 141,148 ---- + extern void getopts_reset __P((int)); + ++ /* Functions from read.def */ ++ extern void read_tty_cleanup __P((void)); ++ extern int read_tty_modified __P((void)); ++ + /* Functions from set.def */ + extern int minus_o_option_value __P((char *)); +*** ../bash-4.3-patched/bashline.c 2014-05-14 09:22:39.000000000 -0400 +--- bashline.c 2014-09-08 11:28:56.000000000 -0400 +*************** +*** 203,206 **** +--- 203,207 ---- + extern int array_needs_making; + extern int posixly_correct, no_symbolic_links; ++ extern int sigalrm_seen; + extern char *current_prompt_string, *ps1_prompt; + extern STRING_INT_ALIST word_token_alist[]; +*************** +*** 4209,4214 **** + /* If we're going to longjmp to top_level, make sure we clean up readline. + check_signals will call QUIT, which will eventually longjmp to top_level, +! calling run_interrupt_trap along the way. */ +! if (interrupt_state) + rl_cleanup_after_signal (); + bashline_reset_event_hook (); +--- 4262,4268 ---- + /* If we're going to longjmp to top_level, make sure we clean up readline. + check_signals will call QUIT, which will eventually longjmp to top_level, +! calling run_interrupt_trap along the way. The check for sigalrm_seen is +! to clean up the read builtin's state. */ +! if (terminating_signal || interrupt_state || sigalrm_seen) + rl_cleanup_after_signal (); + bashline_reset_event_hook (); +*** ../bash-4.3-patched/sig.c 2014-01-10 15:06:06.000000000 -0500 +--- sig.c 2014-09-08 11:26:33.000000000 -0400 +*************** +*** 533,538 **** + /* Set the event hook so readline will call it after the signal handlers + finish executing, so if this interrupted character input we can get +! quick response. */ +! if (interactive_shell && interactive && no_line_editing == 0) + bashline_set_event_hook (); + #endif +--- 533,540 ---- + /* Set the event hook so readline will call it after the signal handlers + finish executing, so if this interrupted character input we can get +! quick response. If readline is active or has modified the terminal we +! need to set this no matter what the signal is, though the check for +! RL_STATE_TERMPREPPED is possibly redundant. */ +! if (RL_ISSTATE (RL_STATE_SIGHANDLER) || RL_ISSTATE (RL_STATE_TERMPREPPED)) + bashline_set_event_hook (); + #endif +*** ../bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500 +--- patchlevel.h 2014-03-20 20:01:28.000000000 -0400 +*************** +*** 26,30 **** + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 32 + + #endif /* _PATCHLEVEL_H_ */ +--- 26,30 ---- + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 33 + + #endif /* _PATCHLEVEL_H_ */ diff --git a/patches/source/bash/bash-4.3-patches/bash43-034 b/patches/source/bash/bash-4.3-patches/bash43-034 new file mode 100644 index 00000000..17372aa2 --- /dev/null +++ b/patches/source/bash/bash-4.3-patches/bash43-034 @@ -0,0 +1,90 @@ + BASH PATCH REPORT + ================= + +Bash-Release: 4.3 +Patch-ID: bash43-034 + +Bug-Reported-by: Dreamcat4 <dreamcat4@gmail.com> +Bug-Reference-ID: <CAN39uTpAEs2GFu4ebC_SfSVMRTh-DJ9YanrY4BZZ3OO+CCHjng@mail.gmail.com> +Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2015-05/msg00001.html + +Bug-Description: + +If neither the -f nor -v options is supplied to unset, and a name argument is +found to be a function and unset, subsequent name arguments are not treated as +variables before attempting to unset a function by that name. + +Patch (apply with `patch -p0'): + +*** ../bash-4.3-patched/builtins/set.def 2013-04-19 07:20:34.000000000 -0400 +--- builtins/set.def 2015-05-05 13:25:36.000000000 -0400 +*************** +*** 752,758 **** +--- 797,805 ---- + { + int unset_function, unset_variable, unset_array, opt, nameref, any_failed; ++ int global_unset_func, global_unset_var; + char *name; + + unset_function = unset_variable = unset_array = nameref = any_failed = 0; ++ global_unset_func = global_unset_var = 0; + + reset_internal_getopt (); +*************** +*** 762,769 **** + { + case 'f': +! unset_function = 1; + break; + case 'v': +! unset_variable = 1; + break; + case 'n': +--- 809,816 ---- + { + case 'f': +! global_unset_func = 1; + break; + case 'v': +! global_unset_var = 1; + break; + case 'n': +*************** +*** 778,782 **** + list = loptend; + +! if (unset_function && unset_variable) + { + builtin_error (_("cannot simultaneously unset a function and a variable")); +--- 825,829 ---- + list = loptend; + +! if (global_unset_func && global_unset_var) + { + builtin_error (_("cannot simultaneously unset a function and a variable")); +*************** +*** 796,799 **** +--- 843,849 ---- + name = list->word->word; + ++ unset_function = global_unset_func; ++ unset_variable = global_unset_var; ++ + #if defined (ARRAY_VARS) + unset_array = 0; + +*** ../bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500 +--- patchlevel.h 2014-03-20 20:01:28.000000000 -0400 +*************** +*** 26,30 **** + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 33 + + #endif /* _PATCHLEVEL_H_ */ +--- 26,30 ---- + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 34 + + #endif /* _PATCHLEVEL_H_ */ diff --git a/patches/source/bash/bash-4.3-patches/bash43-035 b/patches/source/bash/bash-4.3-patches/bash43-035 new file mode 100644 index 00000000..f18bc602 --- /dev/null +++ b/patches/source/bash/bash-4.3-patches/bash43-035 @@ -0,0 +1,63 @@ + BASH PATCH REPORT + ================= + +Bash-Release: 4.3 +Patch-ID: bash43-035 + +Bug-Reported-by: <romerox.adrian@gmail.com> +Bug-Reference-ID: <CABV5r3zhPXmSKUe9uedeGc5YFBM2njJ1iVmY2h5neWdQpDBQug@mail.gmail.com> +Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2014-08/msg00045.html + +Bug-Description: + +A locale with a long name can trigger a buffer overflow and core dump. This +applies on systems that do not have locale_charset in libc, are not using +GNU libiconv, and are not using the libintl that ships with bash in lib/intl. + +Patch (apply with `patch -p0'): + +*** ../bash-4.3-patched/lib/sh/unicode.c 2014-01-30 16:47:19.000000000 -0500 +--- lib/sh/unicode.c 2015-05-01 08:58:30.000000000 -0400 +*************** +*** 79,83 **** + if (s) + { +! strcpy (charsetbuf, s+1); + t = strchr (charsetbuf, '@'); + if (t) +--- 79,84 ---- + if (s) + { +! strncpy (charsetbuf, s+1, sizeof (charsetbuf) - 1); +! charsetbuf[sizeof (charsetbuf) - 1] = '\0'; + t = strchr (charsetbuf, '@'); + if (t) +*************** +*** 85,89 **** + return charsetbuf; + } +! strcpy (charsetbuf, locale); + return charsetbuf; + } +--- 86,91 ---- + return charsetbuf; + } +! strncpy (charsetbuf, locale, sizeof (charsetbuf) - 1); +! charsetbuf[sizeof (charsetbuf) - 1] = '\0'; + return charsetbuf; + } +*** ../bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500 +--- patchlevel.h 2014-03-20 20:01:28.000000000 -0400 +*************** +*** 26,30 **** + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 34 + + #endif /* _PATCHLEVEL_H_ */ +--- 26,30 ---- + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 35 + + #endif /* _PATCHLEVEL_H_ */ diff --git a/patches/source/bash/bash-4.3-patches/bash43-036 b/patches/source/bash/bash-4.3-patches/bash43-036 new file mode 100644 index 00000000..5b42c246 --- /dev/null +++ b/patches/source/bash/bash-4.3-patches/bash43-036 @@ -0,0 +1,57 @@ + BASH PATCH REPORT + ================= + +Bash-Release: 4.3 +Patch-ID: bash43-036 + +Bug-Reported-by: emanuelczirai@cryptolab.net +Bug-Reference-ID: <f962e4f556da5ebfadaf7afe9c78a8cb@cryptolab.net> +Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2015-02/msg00071.html + +Bug-Description: + +When evaluating and setting integer variables, and the assignment fails to +create a variable (for example, when performing an operation on an array +variable with an invalid subscript), bash attempts to dereference a null +pointer, causing a segmentation violation. + +Patch (apply with `patch -p0'): + +*** ../bash-20150206/variables.c 2015-01-23 20:39:27.000000000 -0500 +--- variables.c 2015-02-19 13:56:12.000000000 -0500 +*************** +*** 2834,2841 **** + v = bind_variable (lhs, rhs, 0); + +! if (v && isint) +! VSETATTR (v, att_integer); +! +! VUNSETATTR (v, att_invisible); + + return (v); +--- 2834,2843 ---- + v = bind_variable (lhs, rhs, 0); + +! if (v) +! { +! if (isint) +! VSETATTR (v, att_integer); +! VUNSETATTR (v, att_invisible); +! } + + return (v); +*** ../bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500 +--- patchlevel.h 2014-03-20 20:01:28.000000000 -0400 +*************** +*** 26,30 **** + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 35 + + #endif /* _PATCHLEVEL_H_ */ +--- 26,30 ---- + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 36 + + #endif /* _PATCHLEVEL_H_ */ diff --git a/patches/source/bash/bash-4.3-patches/bash43-037 b/patches/source/bash/bash-4.3-patches/bash43-037 new file mode 100644 index 00000000..f04012ba --- /dev/null +++ b/patches/source/bash/bash-4.3-patches/bash43-037 @@ -0,0 +1,43 @@ + BASH PATCH REPORT + ================= + +Bash-Release: 4.3 +Patch-ID: bash43-037 + +Bug-Reported-by: Greg Wooledge <wooledg@eeg.ccf.org> +Bug-Reference-ID: <20150204144240.GN13956@eeg.ccf.org> +Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2015-02/msg00007.html + +Bug-Description: + +If an associative array uses `@' or `*' as a subscript, `declare -p' produces +output that cannot be reused as input. + +Patch (apply with `patch -p0'): + +*** ../bash-4.3-patched/assoc.c 2011-11-05 16:39:05.000000000 -0400 +--- assoc.c 2015-02-04 15:28:25.000000000 -0500 +*************** +*** 437,440 **** +--- 440,445 ---- + if (sh_contains_shell_metas (tlist->key)) + istr = sh_double_quote (tlist->key); ++ else if (ALL_ELEMENT_SUB (tlist->key[0]) && tlist->key[1] == '\0') ++ istr = sh_double_quote (tlist->key); + else + istr = tlist->key; +*** ../bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500 +--- patchlevel.h 2014-03-20 20:01:28.000000000 -0400 +*************** +*** 26,30 **** + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 36 + + #endif /* _PATCHLEVEL_H_ */ +--- 26,30 ---- + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 37 + + #endif /* _PATCHLEVEL_H_ */ diff --git a/patches/source/bash/bash-4.3-patches/bash43-038 b/patches/source/bash/bash-4.3-patches/bash43-038 new file mode 100644 index 00000000..e0de74e0 --- /dev/null +++ b/patches/source/bash/bash-4.3-patches/bash43-038 @@ -0,0 +1,88 @@ + BASH PATCH REPORT + ================= + +Bash-Release: 4.3 +Patch-ID: bash43-038 + +Bug-Reported-by: worley@alum.mit.edu (Dale R. Worley) +Bug-Reference-ID: <201406100051.s5A0pCeB014978@hobgoblin.ariadne.com> +Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2014-06/msg00028.html + +Bug-Description: + +There are a number of instances where `time' is not recognized as a reserved +word when the shell grammar says it should be. + +Patch (apply with `patch -p0'): + +*** ../bash-4.3-patched/parse.y 2014-04-07 11:56:12.000000000 -0400 +--- parse.y 2014-06-11 10:25:53.000000000 -0400 +*************** +*** 2819,2827 **** + case OR_OR: + case '&': + case DO: + case THEN: + case ELSE: + case '{': /* } */ +! case '(': /* ) */ + case BANG: /* ! time pipeline */ + case TIME: /* time time pipeline */ +--- 2819,2832 ---- + case OR_OR: + case '&': ++ case WHILE: + case DO: ++ case UNTIL: ++ case IF: + case THEN: ++ case ELIF: + case ELSE: + case '{': /* } */ +! case '(': /* )( */ +! case ')': /* only valid in case statement */ + case BANG: /* ! time pipeline */ + case TIME: /* time time pipeline */ +*** ../bash-4.3-patched/y.tab.c 2014-10-05 13:52:50.000000000 -0400 +--- y.tab.c 2015-05-19 15:08:43.000000000 -0400 +*************** +*** 5131,5139 **** + case OR_OR: + case '&': + case DO: + case THEN: + case ELSE: + case '{': /* } */ +! case '(': /* ) */ + case BANG: /* ! time pipeline */ + case TIME: /* time time pipeline */ +--- 5131,5144 ---- + case OR_OR: + case '&': ++ case WHILE: + case DO: ++ case UNTIL: ++ case IF: + case THEN: ++ case ELIF: + case ELSE: + case '{': /* } */ +! case '(': /* )( */ +! case ')': /* only valid in case statement */ + case BANG: /* ! time pipeline */ + case TIME: /* time time pipeline */ +*** ../bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500 +--- patchlevel.h 2014-03-20 20:01:28.000000000 -0400 +*************** +*** 26,30 **** + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 37 + + #endif /* _PATCHLEVEL_H_ */ +--- 26,30 ---- + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 38 + + #endif /* _PATCHLEVEL_H_ */ diff --git a/patches/source/bash/bash-4.3-patches/bash43-039 b/patches/source/bash/bash-4.3-patches/bash43-039 new file mode 100644 index 00000000..e5e38870 --- /dev/null +++ b/patches/source/bash/bash-4.3-patches/bash43-039 @@ -0,0 +1,57 @@ + BASH PATCH REPORT + ================= + +Bash-Release: 4.3 +Patch-ID: bash43-039 + +Bug-Reported-by: SN <poczta-sn@gazeta.pl> +Bug-Reference-ID: <54E2554C.205@gazeta.pl> +Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2015-02/msg00060.html + +Bug-Description: + +Using the output of `declare -p' when run in a function can result in variables +that are invisible to `declare -p'. This problem occurs when an assignment +builtin such as `declare' receives a quoted compound array assignment as one of +its arguments. + +Patch (apply with `patch -p0'): + +*** /usr/src/local/bash/bash-4.3-patched/arrayfunc.c 2014-10-01 13:08:48.000000000 -0400 +--- arrayfunc.c 2015-02-19 14:33:05.000000000 -0500 +*************** +*** 405,408 **** +--- 405,411 ---- + else + array_insert (a, i, l->word->word); ++ ++ VUNSETATTR (var, att_invisible); /* no longer invisible */ ++ + return var; + } +*************** +*** 635,638 **** +--- 638,645 ---- + if (nlist) + dispose_words (nlist); ++ ++ if (var) ++ VUNSETATTR (var, att_invisible); /* no longer invisible */ ++ + return (var); + } +*** ../bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500 +--- patchlevel.h 2014-03-20 20:01:28.000000000 -0400 +*************** +*** 26,30 **** + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 38 + + #endif /* _PATCHLEVEL_H_ */ +--- 26,30 ---- + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 39 + + #endif /* _PATCHLEVEL_H_ */ diff --git a/patches/source/bash/bash-4.3-patches/bash43-040 b/patches/source/bash/bash-4.3-patches/bash43-040 new file mode 100644 index 00000000..978ce1cd --- /dev/null +++ b/patches/source/bash/bash-4.3-patches/bash43-040 @@ -0,0 +1,47 @@ + BASH PATCH REPORT + ================= + +Bash-Release: 4.3 +Patch-ID: bash43-040 + +Bug-Reported-by: Jean Delvare <jdelvare@suse.de> +Bug-Reference-ID: <20150609180231.5f463695@endymion.delvare> +Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2015-06/msg00033.html + +Bug-Description: + +There is a memory leak that occurs when bash expands an array reference on +the rhs of an assignment statement. + +Patch (apply with `patch -p0'): + +*** ../bash-4.3-patched/subst.c 2014-10-01 12:57:47.000000000 -0400 +--- subst.c 2015-06-22 09:16:53.000000000 -0400 +*************** +*** 5783,5787 **** + if (pflags & PF_ASSIGNRHS) + { +! temp = array_variable_name (name, &tt, (int *)0); + if (ALL_ELEMENT_SUB (tt[0]) && tt[1] == ']') + temp = array_value (name, quoted|Q_DOUBLE_QUOTES, 0, &atype, &ind); +--- 5783,5787 ---- + if (pflags & PF_ASSIGNRHS) + { +! var = array_variable_part (name, &tt, (int *)0); + if (ALL_ELEMENT_SUB (tt[0]) && tt[1] == ']') + temp = array_value (name, quoted|Q_DOUBLE_QUOTES, 0, &atype, &ind); +*** ../bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500 +--- patchlevel.h 2014-03-20 20:01:28.000000000 -0400 +*************** +*** 26,30 **** + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 39 + + #endif /* _PATCHLEVEL_H_ */ +--- 26,30 ---- + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 40 + + #endif /* _PATCHLEVEL_H_ */ diff --git a/patches/source/bash/bash-4.3-patches/bash43-041 b/patches/source/bash/bash-4.3-patches/bash43-041 new file mode 100644 index 00000000..a040a2ac --- /dev/null +++ b/patches/source/bash/bash-4.3-patches/bash43-041 @@ -0,0 +1,72 @@ + BASH PATCH REPORT + ================= + +Bash-Release: 4.3 +Patch-ID: bash43-041 + +Bug-Reported-by: Hanno Böck <hanno@hboeck.de> +Bug-Reference-ID: <20150623131106.6f111da9@pc1>, <20150707004640.0e61d2f9@pc1> +Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2015-06/msg00089.html, + http://lists.gnu.org/archive/html/bug-bash/2015-07/msg00018.html + +Bug-Description: + +There are several out-of-bounds read errors that occur when completing command +lines where assignment statements appear before the command name. The first +two appear only when programmable completion is enabled; the last one only +happens when listing possible completions. + +Patch (apply with `patch -p0'): + +*** ../bash-4.3.40/bashline.c 2014-12-29 14:39:43.000000000 -0500 +--- bashline.c 2015-08-12 10:21:58.000000000 -0400 +*************** +*** 1469,1476 **** +--- 1469,1489 ---- + os = start; + n = 0; ++ was_assignment = 0; + s = find_cmd_start (os); + e = find_cmd_end (end); + do + { ++ /* Don't read past the end of rl_line_buffer */ ++ if (s > rl_end) ++ { ++ s1 = s = e1; ++ break; ++ } ++ /* Or past point if point is within an assignment statement */ ++ else if (was_assignment && s > rl_point) ++ { ++ s1 = s = e1; ++ break; ++ } + /* Skip over assignment statements preceding a command name. If we + don't find a command name at all, we can perform command name +*** ../bash-4.3.40/lib/readline/complete.c 2013-10-14 09:27:10.000000000 -0400 +--- lib/readline/complete.c 2015-07-31 09:34:39.000000000 -0400 +*************** +*** 690,693 **** +--- 690,695 ---- + if (temp == 0 || *temp == '\0') + return (pathname); ++ else if (temp[1] == 0 && temp == pathname) ++ return (pathname); + /* If the basename is NULL, we might have a pathname like '/usr/src/'. + Look for a previous slash and, if one is found, return the portion +*** ../bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500 +--- patchlevel.h 2014-03-20 20:01:28.000000000 -0400 +*************** +*** 26,30 **** + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 40 + + #endif /* _PATCHLEVEL_H_ */ +--- 26,30 ---- + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 41 + + #endif /* _PATCHLEVEL_H_ */ diff --git a/patches/source/bash/bash-4.3-patches/bash43-042 b/patches/source/bash/bash-4.3-patches/bash43-042 new file mode 100644 index 00000000..cc3e17c6 --- /dev/null +++ b/patches/source/bash/bash-4.3-patches/bash43-042 @@ -0,0 +1,55 @@ + BASH PATCH REPORT + ================= + +Bash-Release: 4.3 +Patch-ID: bash43-042 + +Bug-Reported-by: Nathan Neulinger <nneul@neulinger.org> +Bug-Reference-ID: <558EFDF2.7060402@neulinger.org> +Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2015-06/msg00096.html + +Bug-Description: + +There is a problem when parsing command substitutions containing `case' +commands within pipelines that causes the parser to not correctly identify +the end of the command substitution. + +Patch (apply with `patch -p0'): + +*** ../bash-4.3-patched/parse.y 2015-05-18 19:27:05.000000000 -0400 +--- parse.y 2015-06-29 10:59:27.000000000 -0400 +*************** +*** 3709,3712 **** +--- 3709,3714 ---- + tflags |= LEX_INWORD; + lex_wlen = 0; ++ if (tflags & LEX_RESWDOK) ++ lex_rwlen = 0; + } + } +*** ../bash-4.3-patched/parse.y 2015-05-18 19:27:05.000000000 -0400 +--- y.tab.c 2015-06-29 10:59:27.000000000 -0400 +*************** +*** 6021,6024 **** +--- 6021,6026 ---- + tflags |= LEX_INWORD; + lex_wlen = 0; ++ if (tflags & LEX_RESWDOK) ++ lex_rwlen = 0; + } + } +*** ../bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500 +--- patchlevel.h 2014-03-20 20:01:28.000000000 -0400 +*************** +*** 26,30 **** + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 41 + + #endif /* _PATCHLEVEL_H_ */ +--- 26,30 ---- + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 42 + + #endif /* _PATCHLEVEL_H_ */ diff --git a/patches/source/bash/bash-4.3-patches/bash43-043 b/patches/source/bash/bash-4.3-patches/bash43-043 new file mode 100644 index 00000000..ad82c292 --- /dev/null +++ b/patches/source/bash/bash-4.3-patches/bash43-043 @@ -0,0 +1,59 @@ + BASH PATCH REPORT + ================= + +Bash-Release: 4.3 +Patch-ID: bash43-043 + +Bug-Reported-by: lolilolicon <lolilolicon@gmail.com> +Bug-Reference-ID: <CAMtVo_MF16KWanCB4C8WxA88Qt26zWsvV6V7+_U2fM0E6tCDxw@mail.gmail.com> +Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2014-08/msg00040.html + +Bug-Description: + +When the lastpipe option is enabled, the last component can contain nested +pipelines and cause a segmentation fault under certain circumestances. + +Patch (apply with `patch -p0'): + +*** ../bash-4.3-patched/execute_cmd.c 2014-07-30 10:26:52.000000000 -0400 +--- execute_cmd.c 2014-08-15 08:55:24.000000000 -0400 +*************** +*** 2406,2412 **** + { + #if defined (JOB_CONTROL) +! append_process (savestring (the_printed_command), dollar_dollar_pid, exec_result, lastpipe_jid); +! #endif + lstdin = wait_for (lastpid); + #if defined (JOB_CONTROL) + /* If wait_for removes the job from the jobs table, use result of last +--- 2433,2447 ---- + { + #if defined (JOB_CONTROL) +! if (INVALID_JOB (lastpipe_jid) == 0) +! { +! append_process (savestring (the_printed_command_except_trap), dollar_dollar_pid, exec_result, lastpipe_jid); +! lstdin = wait_for (lastpid); +! } +! else +! lstdin = wait_for_single_pid (lastpid); /* checks bgpids list */ +! #else + lstdin = wait_for (lastpid); ++ #endif ++ + #if defined (JOB_CONTROL) + /* If wait_for removes the job from the jobs table, use result of last +*** ../bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500 +--- patchlevel.h 2014-03-20 20:01:28.000000000 -0400 +*************** +*** 26,30 **** + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 42 + + #endif /* _PATCHLEVEL_H_ */ +--- 26,30 ---- + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 43 + + #endif /* _PATCHLEVEL_H_ */ diff --git a/patches/source/bash/bash-4.3-patches/bash43-044 b/patches/source/bash/bash-4.3-patches/bash43-044 new file mode 100644 index 00000000..d8f1ce07 --- /dev/null +++ b/patches/source/bash/bash-4.3-patches/bash43-044 @@ -0,0 +1,48 @@ + BASH PATCH REPORT + ================= + +Bash-Release: 4.3 +Patch-ID: bash43-044 + +Bug-Reported-by: Ondrej Oprala <ooprala@redhat.com> +Bug-Reference-ID: <539ED55B.2080103@redhat.com> +Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2014-06/msg00046.html + +Bug-Description: + +A typo prevents the `compat42' shopt option from working as intended. + +Patch (apply with `patch -p0'): + +diff -rC 2 bash-4.3.42/builtins/shopt.def bash-4.3.43/builtins/shopt.def +*** bash-4.3.42/builtins/shopt.def 2013-02-27 09:43:20.000000000 -0500 +--- builtins/shopt.def 2015-10-16 11:25:28.000000000 -0400 +*************** +*** 161,165 **** + { "compat40", &shopt_compat40, set_compatibility_level }, + { "compat41", &shopt_compat41, set_compatibility_level }, +! { "compat42", &shopt_compat41, set_compatibility_level }, + #if defined (READLINE) + { "complete_fullquote", &complete_fullquote, (shopt_set_func_t *)NULL}, +--- 161,165 ---- + { "compat40", &shopt_compat40, set_compatibility_level }, + { "compat41", &shopt_compat41, set_compatibility_level }, +! { "compat42", &shopt_compat42, set_compatibility_level }, + #if defined (READLINE) + { "complete_fullquote", &complete_fullquote, (shopt_set_func_t *)NULL}, + +*** ../bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500 +--- patchlevel.h 2014-03-20 20:01:28.000000000 -0400 +*************** +*** 26,30 **** + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 43 + + #endif /* _PATCHLEVEL_H_ */ +--- 26,30 ---- + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 44 + + #endif /* _PATCHLEVEL_H_ */ diff --git a/patches/source/bash/bash-4.3-patches/bash43-045 b/patches/source/bash/bash-4.3-patches/bash43-045 new file mode 100644 index 00000000..25dc3587 --- /dev/null +++ b/patches/source/bash/bash-4.3-patches/bash43-045 @@ -0,0 +1,52 @@ + BASH PATCH REPORT + ================= + +Bash-Release: 4.3 +Patch-ID: bash43-045 + +Bug-Reported-by: Basin Ilya <basinilya@gmail.com> +Bug-Reference-ID: <5624C0AC.8070802@gmail.com> +Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2015-10/msg00141.html + +Bug-Description: + +If a file open attempted as part of a redirection fails because it is interrupted +by a signal, the shell needs to process any pending traps to allow the redirection +to be canceled. + +Patch (apply with `patch -p0'): + +*** bash-20150109/redir.c 2014-12-03 10:47:38.000000000 -0500 +--- redir.c 2015-01-16 10:15:47.000000000 -0500 +*************** +*** 672,676 **** + e = errno; + if (fd < 0 && e == EINTR) +! QUIT; + errno = e; + } +--- 672,679 ---- + e = errno; + if (fd < 0 && e == EINTR) +! { +! QUIT; +! run_pending_traps (); +! } + errno = e; + } + +*** ../bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500 +--- patchlevel.h 2014-03-20 20:01:28.000000000 -0400 +*************** +*** 26,30 **** + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 44 + + #endif /* _PATCHLEVEL_H_ */ +--- 26,30 ---- + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 45 + + #endif /* _PATCHLEVEL_H_ */ diff --git a/patches/source/bash/bash-4.3-patches/bash43-046 b/patches/source/bash/bash-4.3-patches/bash43-046 new file mode 100644 index 00000000..bea3970a --- /dev/null +++ b/patches/source/bash/bash-4.3-patches/bash43-046 @@ -0,0 +1,55 @@ + BASH PATCH REPORT + ================= + +Bash-Release: 4.3 +Patch-ID: bash43-046 + +Bug-Reported-by: Sergey Tselikh <stselikh@gmail.com> +Bug-Reference-ID: <20150816110235.91f3e12e3f20d20cdaad963e@gmail.com> +Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2015-08/msg00080.html + +Bug-Description: + +An incorrect conversion from an indexed to associative array can result in a +core dump. + +Patch (apply with `patch -p0'): + +*** /fs2/chet/bash/bash-20150813/subst.c 2015-08-13 11:32:54.000000000 -0400 +--- subst.c 2015-08-18 10:13:59.000000000 -0400 +*************** +*** 9562,9566 **** + opts[opti] = '\0'; + if (opti > 0) +! make_internal_declare (tlist->word->word, opts); + + t = do_word_assignment (tlist->word, 0); +--- 9562,9573 ---- + opts[opti] = '\0'; + if (opti > 0) +! { +! t = make_internal_declare (tlist->word->word, opts); +! if (t != EXECUTION_SUCCESS) +! { +! last_command_exit_value = t; +! exp_jump_to_top_level (DISCARD); +! } +! } + + t = do_word_assignment (tlist->word, 0); + +*** ../bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500 +--- patchlevel.h 2014-03-20 20:01:28.000000000 -0400 +*************** +*** 26,30 **** + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 45 + + #endif /* _PATCHLEVEL_H_ */ +--- 26,30 ---- + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 46 + + #endif /* _PATCHLEVEL_H_ */ diff --git a/patches/source/bash/bash-4.3-patches/bash43-047 b/patches/source/bash/bash-4.3-patches/bash43-047 new file mode 100644 index 00000000..316e3afc --- /dev/null +++ b/patches/source/bash/bash-4.3-patches/bash43-047 @@ -0,0 +1,150 @@ + BASH PATCH REPORT + ================= + +Bash-Release: 4.3 +Patch-ID: bash43-047 + +Bug-Reported-by: Bernd Dietzel +Bug-Reference-ID: +Bug-Reference-URL: https://bugs.launchpad.net/ubuntu/+source/bash/+bug/1507025 + +Bug-Description: + +Bash performs word expansions on the prompt strings after the special +escape sequences are expanded. If a malicious user can modify the system +hostname or change the name of the bash executable and coerce a user into +executing it, and the new name contains word expansions (including +command substitution), bash will expand them in prompt strings containing +the \h or \H and \s escape sequences, respectively. + +Patch (apply with `patch -p0'): + +*** ../bash-4.3-patched/parse.y 2015-08-13 15:11:54.000000000 -0400 +--- parse.y 2016-03-07 15:44:14.000000000 -0500 +*************** +*** 5259,5263 **** + int result_size, result_index; + int c, n, i; +! char *temp, octal_string[4]; + struct tm *tm; + time_t the_time; +--- 5259,5263 ---- + int result_size, result_index; + int c, n, i; +! char *temp, *t_host, octal_string[4]; + struct tm *tm; + time_t the_time; +*************** +*** 5407,5411 **** + case 's': + temp = base_pathname (shell_name); +! temp = savestring (temp); + goto add_string; + +--- 5407,5415 ---- + case 's': + temp = base_pathname (shell_name); +! /* Try to quote anything the user can set in the file system */ +! if (promptvars || posixly_correct) +! temp = sh_backslash_quote_for_double_quotes (temp); +! else +! temp = savestring (temp); + goto add_string; + +*************** +*** 5497,5503 **** + case 'h': + case 'H': +! temp = savestring (current_host_name); +! if (c == 'h' && (t = (char *)strchr (temp, '.'))) + *t = '\0'; + goto add_string; + +--- 5501,5515 ---- + case 'h': + case 'H': +! t_host = savestring (current_host_name); +! if (c == 'h' && (t = (char *)strchr (t_host, '.'))) + *t = '\0'; ++ if (promptvars || posixly_correct) ++ /* Make sure that expand_prompt_string is called with a ++ second argument of Q_DOUBLE_QUOTES if we use this ++ function here. */ ++ temp = sh_backslash_quote_for_double_quotes (t_host); ++ else ++ temp = savestring (t_host); ++ free (t_host); + goto add_string; + +*** ../bash-4.3-patched/y.tab.c 2015-08-13 15:11:54.000000000 -0400 +--- y.tab.c 2016-03-07 15:44:14.000000000 -0500 +*************** +*** 7571,7575 **** + int result_size, result_index; + int c, n, i; +! char *temp, octal_string[4]; + struct tm *tm; + time_t the_time; +--- 7571,7575 ---- + int result_size, result_index; + int c, n, i; +! char *temp, *t_host, octal_string[4]; + struct tm *tm; + time_t the_time; +*************** +*** 7719,7723 **** + case 's': + temp = base_pathname (shell_name); +! temp = savestring (temp); + goto add_string; + +--- 7719,7727 ---- + case 's': + temp = base_pathname (shell_name); +! /* Try to quote anything the user can set in the file system */ +! if (promptvars || posixly_correct) +! temp = sh_backslash_quote_for_double_quotes (temp); +! else +! temp = savestring (temp); + goto add_string; + +*************** +*** 7809,7815 **** + case 'h': + case 'H': +! temp = savestring (current_host_name); +! if (c == 'h' && (t = (char *)strchr (temp, '.'))) + *t = '\0'; + goto add_string; + +--- 7813,7827 ---- + case 'h': + case 'H': +! t_host = savestring (current_host_name); +! if (c == 'h' && (t = (char *)strchr (t_host, '.'))) + *t = '\0'; ++ if (promptvars || posixly_correct) ++ /* Make sure that expand_prompt_string is called with a ++ second argument of Q_DOUBLE_QUOTES if we use this ++ function here. */ ++ temp = sh_backslash_quote_for_double_quotes (t_host); ++ else ++ temp = savestring (t_host); ++ free (t_host); + goto add_string; + +*** ../bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500 +--- patchlevel.h 2014-03-20 20:01:28.000000000 -0400 +*************** +*** 26,30 **** + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 46 + + #endif /* _PATCHLEVEL_H_ */ +--- 26,30 ---- + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 47 + + #endif /* _PATCHLEVEL_H_ */ diff --git a/patches/source/bash/bash-4.3-patches/bash43-048 b/patches/source/bash/bash-4.3-patches/bash43-048 new file mode 100644 index 00000000..6a8588ec --- /dev/null +++ b/patches/source/bash/bash-4.3-patches/bash43-048 @@ -0,0 +1,54 @@ + BASH PATCH REPORT + ================= + +Bash-Release: 4.3 +Patch-ID: bash43-048 + +Bug-Reported-by: up201407890@alunos.dcc.fc.up.pt +Bug-Reference-ID: <20151210201649.126444eionzfsam8@webmail.alunos.dcc.fc.up.pt> +Bug-Reference-URL: http://lists.gnu.org/archive/html/bug-bash/2015-12/msg00054.html + +Bug-Description: + +If a malicious user can inject a value of $SHELLOPTS containing `xtrace' +and a value for $PS4 that includes a command substitution into a shell +running as root, bash will expand the command substitution as part of +expanding $PS4 when it executes a traced command. + +Patch (apply with `patch -p0'): + +*** ../bash-4.3-patched/variables.c 2015-11-26 12:31:21.000000000 -0500 +--- variables.c 2015-12-23 10:19:01.000000000 -0500 +*************** +*** 496,500 **** + set_if_not ("PS2", secondary_prompt); + } +! set_if_not ("PS4", "+ "); + + /* Don't allow IFS to be imported from the environment. */ +--- 496,504 ---- + set_if_not ("PS2", secondary_prompt); + } +! +! if (current_user.euid == 0) +! bind_variable ("PS4", "+ ", 0); +! else +! set_if_not ("PS4", "+ "); + + /* Don't allow IFS to be imported from the environment. */ + +*** ../bash-4.3/patchlevel.h 2012-12-29 10:47:57.000000000 -0500 +--- patchlevel.h 2014-03-20 20:01:28.000000000 -0400 +*************** +*** 26,30 **** + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 47 + + #endif /* _PATCHLEVEL_H_ */ +--- 26,30 ---- + looks for to find the patch level (for the sccs version string). */ + +! #define PATCHLEVEL 48 + + #endif /* _PATCHLEVEL_H_ */ diff --git a/patches/source/bash/bash.SlackBuild b/patches/source/bash/bash.SlackBuild new file mode 100755 index 00000000..a2950c26 --- /dev/null +++ b/patches/source/bash/bash.SlackBuild @@ -0,0 +1,170 @@ +#!/bin/sh + +# Copyright 2005-2015 Patrick J. Volkerding, Sebeka, Minnesota, USA +# All rights reserved. +# +# Redistribution and use of this script, with or without modification, is +# permitted provided that the following conditions are met: +# +# 1. Redistributions of this script must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# +# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED +# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO +# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; +# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR +# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF +# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +# Modified 2011, 2012 by Eric Hameleers <alien at slackware.com> for ARM port. + + +# Set initial variables: +CWD=`pwd` +if [ "$TMP" = "" ]; then + TMP=/tmp +fi +PKG=$TMP/package-bash + +VERSION=${VERSION:-$(echo bash-*.tar.?z* | rev | cut -f 3- -d . | cut -f 1 -d - | rev)} +BUILD=${BUILD:-1_slack14.2} + +# Automatically determine the architecture we're building on: +MARCH=$( uname -m ) +if [ -z "$ARCH" ]; then + case "$MARCH" in + i?86) export ARCH=i586 ;; + armv7hl) export ARCH=$MARCH ;; + arm*) export ARCH=arm ;; + # Unless $ARCH is already set, use uname -m for all other archs: + *) export ARCH=$MARCH ;; + esac +fi + +NUMJOBS=${NUMJOBS:-" -j7 "} + +if [ "$ARCH" = "i486" ]; then + SLKCFLAGS="-O2 -march=i486 -mcpu=i686" +elif [ "$ARCH" = "i586" ]; then + SLKCFLAGS="-O2 -march=i586 -mtune=i686" +elif [ "$ARCH" = "s390" ]; then + SLKCFLAGS="-O2" +elif [ "$ARCH" = "x86_64" ]; then + SLKCFLAGS="-O2 -fPIC" +elif [ "$ARCH" = "armv7hl" ]; then + SLKCFLAGS="-O2 -march=armv7-a -mfpu=vfpv3-d16" +else + SLKCFLAGS="-O2" +fi + +case "$ARCH" in + arm*) TARGET=$ARCH-slackware-linux-gnueabi ;; + *) TARGET=$ARCH-slackware-linux ;; +esac + +if [ ! -d $TMP ]; then + mkdir -p $TMP # location to build the source +fi +rm -rf $PKG +mkdir -p $PKG + +# Determine bash patchlevel: +PATCHLEVEL="$( cd $CWD/bash-${VERSION}-patches ; /bin/ls bash4?-??? | tail -1 | cut -f 2 -d - 2> /dev/null )" +if [ "$PATCHLEVEL" = "" ]; then + PATCHLEVEL=0 +fi + +cd $TMP +rm -rf bash-$VERSION +tar xvf $CWD/bash-$VERSION.tar.?z* || exit 1 +cd bash-$VERSION || exit 1 +chown -R root:root . +find . -perm 664 | xargs chmod 644 +find . -perm 775 | xargs chmod 755 + +if [ -d $CWD/bash-${VERSION}-patches ]; then + ( cd $CWD/bash-${VERSION}-patches ; cat bash4?-??? ) | patch -p0 --verbose || exit 1 +fi + +# End of preparations +if echo "$*" | grep -qw -- --prep ; then + exit 0 +fi + +CFLAGS="$SLKCFLAGS" \ +./configure \ + --prefix=/usr \ + --mandir=/usr/man \ + --infodir=/usr/info \ + --build=$TARGET || exit 1 + +make $NUMJOBS || make || exit 1 +make install DESTDIR=$PKG || exit 1 +mv $PKG/usr/share/doc $PKG/usr +mkdir -p $PKG/bin +mv $PKG/usr/bin/bash $PKG/bin/bash4.new +# We don't include the "bashbug" script. +rm -rf $PKG/usr/bin $PKG/usr/man/man1/bashbug.1 + +# Strip binaries: +( cd $PKG + find . | xargs file | grep "executable" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null + find . | xargs file | grep "shared object" | grep ELF | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null +) + +# Compress and link manpages, if any: +if [ -d $PKG/usr/man ]; then + ( cd $PKG/usr/man + for manpagedir in $(find . -type d -name "man*") ; do + ( cd $manpagedir + for eachpage in $( find . -type l -maxdepth 1) ; do + ln -s $( readlink $eachpage ).gz $eachpage.gz + rm $eachpage + done + gzip -9 *.? + ) + done + ) +fi + +# bash.1 is already installed by "make install" +( cd doc + for page in builtins.1 rbash.1 ; do + cat $page | gzip -9c > $PKG/usr/man/man1/$page.gz + done +) + +# Compress info files, if any: +if [ -d $PKG/usr/info ]; then + ( cd $PKG/usr/info + rm -f dir + gzip -9 * + ) +fi + +mkdir -p $PKG/usr/doc/bash-$VERSION +cp -a AUTHORS CHANGES COMPAT COPYING* INSTALL MANIFEST NEWS NOTES \ + README* Y2K doc/FAQ doc/INTRO \ + $PKG/usr/doc/bash-$VERSION +( cd doc ; groff -ms -Tascii article.ms > $PKG/usr/doc/bash-$VERSION/article.txt ) + +# If there's a ChangeLog, installing at least part of the recent history +# is useful, but don't let it get totally out of control: +if [ -r ChangeLog ]; then + DOCSDIR=$(echo $PKG/usr/doc/*-$VERSION) + cat ChangeLog | head -n 1000 > $DOCSDIR/ChangeLog + touch -r ChangeLog $DOCSDIR/ChangeLog +fi + +mkdir -p $PKG/install +zcat $CWD/doinst.sh.gz > $PKG/install/doinst.sh +cat $CWD/slack-desc > $PKG/install/slack-desc + +# Build the package: +cd $PKG +makepkg -l y -c n $TMP/bash-$VERSION.$PATCHLEVEL-$ARCH-$BUILD.txz + diff --git a/patches/source/bash/doinst.sh b/patches/source/bash/doinst.sh new file mode 100644 index 00000000..867958fb --- /dev/null +++ b/patches/source/bash/doinst.sh @@ -0,0 +1,18 @@ +if [ -r bin/bash ]; then + mv bin/bash bin/bash.old +fi +mv bin/bash4.new bin/bash +if [ -f bin/bash.old ]; then + rm -f bin/bash.old +fi +if [ ! -r etc/shells ]; then + touch etc/shells + chmod 644 etc/shells +fi +if grep -wq /bin/bash etc/shells ; then + true +else + echo /bin/bash >> etc/shells +fi +( cd usr/bin ; rm -rf bash ) +( cd usr/bin ; ln -sf /bin/bash bash ) diff --git a/patches/source/bash/slack-desc b/patches/source/bash/slack-desc new file mode 100644 index 00000000..f2fdb929 --- /dev/null +++ b/patches/source/bash/slack-desc @@ -0,0 +1,19 @@ +# HOW TO EDIT THIS FILE: +# The "handy ruler" below makes it easier to edit a package description. Line +# up the first '|' above the ':' following the base package name, and the '|' +# on the right side marks the last column you can put a character in. You must +# make exactly 11 lines for the formatting to be correct. It's also +# customary to leave one space after the ':'. + + |-----handy-ruler------------------------------------------------------| +bash: bash (sh-compatible shell) +bash: +bash: The GNU Bourne-Again SHell. Bash is a sh-compatible command +bash: interpreter that executes commands read from the standard input or +bash: from a file. Bash also incorporates useful features from the Korn +bash: and C shells (ksh and csh). Bash is ultimately intended to be a +bash: conformant implementation of the IEEE Posix Shell and Tools +bash: specification (IEEE Working Group 1003.2). +bash: +bash: Bash must be present for the system to boot properly. +bash: diff --git a/patches/source/bind/3link.sh b/patches/source/bind/3link.sh new file mode 100644 index 00000000..ec8ba4d1 --- /dev/null +++ b/patches/source/bind/3link.sh @@ -0,0 +1,136 @@ +rm -f lwres_addr_parse.3 +ln -sf lwres_resutil.3 lwres_addr_parse.3 +rm -f lwres_buffer_add.3 +ln -sf lwres_buffer.3 lwres_buffer_add.3 +rm -f lwres_buffer_back.3 +ln -sf lwres_buffer.3 lwres_buffer_back.3 +rm -f lwres_buffer_clear.3 +ln -sf lwres_buffer.3 lwres_buffer_clear.3 +rm -f lwres_buffer_first.3 +ln -sf lwres_buffer.3 lwres_buffer_first.3 +rm -f lwres_buffer_forward.3 +ln -sf lwres_buffer.3 lwres_buffer_forward.3 +rm -f lwres_buffer_getmem.3 +ln -sf lwres_buffer.3 lwres_buffer_getmem.3 +rm -f lwres_buffer_getuint16.3 +ln -sf lwres_buffer.3 lwres_buffer_getuint16.3 +rm -f lwres_buffer_getuint32.3 +ln -sf lwres_buffer.3 lwres_buffer_getuint32.3 +rm -f lwres_buffer_getuint8.3 +ln -sf lwres_buffer.3 lwres_buffer_getuint8.3 +rm -f lwres_buffer_init.3 +ln -sf lwres_buffer.3 lwres_buffer_init.3 +rm -f lwres_buffer_invalidate.3 +ln -sf lwres_buffer.3 lwres_buffer_invalidate.3 +rm -f lwres_buffer_putmem.3 +ln -sf lwres_buffer.3 lwres_buffer_putmem.3 +rm -f lwres_buffer_putuint16.3 +ln -sf lwres_buffer.3 lwres_buffer_putuint16.3 +rm -f lwres_buffer_putuint32.3 +ln -sf lwres_buffer.3 lwres_buffer_putuint32.3 +rm -f lwres_buffer_putuint8.3 +ln -sf lwres_buffer.3 lwres_buffer_putuint8.3 +rm -f lwres_buffer_subtract.3 +ln -sf lwres_buffer.3 lwres_buffer_subtract.3 +rm -f lwres_conf_clear.3 +ln -sf lwres_config.3 lwres_conf_clear.3 +rm -f lwres_conf_get.3 +ln -sf lwres_config.3 lwres_conf_get.3 +rm -f lwres_conf_init.3 +ln -sf lwres_config.3 lwres_conf_init.3 +rm -f lwres_conf_parse.3 +ln -sf lwres_config.3 lwres_conf_parse.3 +rm -f lwres_conf_print.3 +ln -sf lwres_config.3 lwres_conf_print.3 +rm -f lwres_context_allocmem.3 +ln -sf lwres_context.3 lwres_context_allocmem.3 +rm -f lwres_context_create.3 +ln -sf lwres_context.3 lwres_context_create.3 +rm -f lwres_context_destroy.3 +ln -sf lwres_context.3 lwres_context_destroy.3 +rm -f lwres_context_freemem.3 +ln -sf lwres_context.3 lwres_context_freemem.3 +rm -f lwres_context_initserial.3 +ln -sf lwres_context.3 lwres_context_initserial.3 +rm -f lwres_context_nextserial.3 +ln -sf lwres_context.3 lwres_context_nextserial.3 +rm -f lwres_context_sendrecv.3 +ln -sf lwres_context.3 lwres_context_sendrecv.3 +rm -f lwres_endhostent.3 +ln -sf lwres_gethostent.3 lwres_endhostent.3 +rm -f lwres_endhostent_r.3 +ln -sf lwres_gethostent.3 lwres_endhostent_r.3 +rm -f lwres_freeaddrinfo.3 +ln -sf lwres_getaddrinfo.3 lwres_freeaddrinfo.3 +rm -f lwres_freehostent.3 +ln -sf lwres_getipnode.3 lwres_freehostent.3 +rm -f lwres_gabnrequest_free.3 +ln -sf lwres_gabn.3 lwres_gabnrequest_free.3 +rm -f lwres_gabnrequest_parse.3 +ln -sf lwres_gabn.3 lwres_gabnrequest_parse.3 +rm -f lwres_gabnrequest_render.3 +ln -sf lwres_gabn.3 lwres_gabnrequest_render.3 +rm -f lwres_gabnresponse_free.3 +ln -sf lwres_gabn.3 lwres_gabnresponse_free.3 +rm -f lwres_gabnresponse_parse.3 +ln -sf lwres_gabn.3 lwres_gabnresponse_parse.3 +rm -f lwres_gabnresponse_render.3 +ln -sf lwres_gabn.3 lwres_gabnresponse_render.3 +rm -f lwres_getaddrsbyname.3 +ln -sf lwres_resutil.3 lwres_getaddrsbyname.3 +rm -f lwres_gethostbyaddr.3 +ln -sf lwres_gethostent.3 lwres_gethostbyaddr.3 +rm -f lwres_gethostbyaddr_r.3 +ln -sf lwres_gethostent.3 lwres_gethostbyaddr_r.3 +rm -f lwres_gethostbyname.3 +ln -sf lwres_gethostent.3 lwres_gethostbyname.3 +rm -f lwres_gethostbyname2.3 +ln -sf lwres_gethostent.3 lwres_gethostbyname2.3 +rm -f lwres_gethostbyname_r.3 +ln -sf lwres_gethostent.3 lwres_gethostbyname_r.3 +rm -f lwres_gethostent_r.3 +ln -sf lwres_gethostent.3 lwres_gethostent_r.3 +rm -f lwres_getipnodebyaddr.3 +ln -sf lwres_getipnode.3 lwres_getipnodebyaddr.3 +rm -f lwres_getipnodebyname.3 +ln -sf lwres_getipnode.3 lwres_getipnodebyname.3 +rm -f lwres_getnamebyaddr.3 +ln -sf lwres_resutil.3 lwres_getnamebyaddr.3 +rm -f lwres_gnbarequest_free.3 +ln -sf lwres_gnba.3 lwres_gnbarequest_free.3 +rm -f lwres_gnbarequest_parse.3 +ln -sf lwres_gnba.3 lwres_gnbarequest_parse.3 +rm -f lwres_gnbarequest_render.3 +ln -sf lwres_gnba.3 lwres_gnbarequest_render.3 +rm -f lwres_gnbaresponse_free.3 +ln -sf lwres_gnba.3 lwres_gnbaresponse_free.3 +rm -f lwres_gnbaresponse_parse.3 +ln -sf lwres_gnba.3 lwres_gnbaresponse_parse.3 +rm -f lwres_gnbaresponse_render.3 +ln -sf lwres_gnba.3 lwres_gnbaresponse_render.3 +rm -f lwres_herror.3 +ln -sf lwres_hstrerror.3 lwres_herror.3 +rm -f lwres_lwpacket_parseheader.3 +ln -sf lwres_packet.3 lwres_lwpacket_parseheader.3 +rm -f lwres_lwpacket_renderheader.3 +ln -sf lwres_packet.3 lwres_lwpacket_renderheader.3 +rm -f lwres_net_ntop.3 +ln -sf lwres_inetntop.3 lwres_net_ntop.3 +rm -f lwres_nooprequest_free.3 +ln -sf lwres_noop.3 lwres_nooprequest_free.3 +rm -f lwres_nooprequest_parse.3 +ln -sf lwres_noop.3 lwres_nooprequest_parse.3 +rm -f lwres_nooprequest_render.3 +ln -sf lwres_noop.3 lwres_nooprequest_render.3 +rm -f lwres_noopresponse_free.3 +ln -sf lwres_noop.3 lwres_noopresponse_free.3 +rm -f lwres_noopresponse_parse.3 +ln -sf lwres_noop.3 lwres_noopresponse_parse.3 +rm -f lwres_noopresponse_render.3 +ln -sf lwres_noop.3 lwres_noopresponse_render.3 +rm -f lwres_sethostent.3 +ln -sf lwres_gethostent.3 lwres_sethostent.3 +rm -f lwres_sethostent_r.3 +ln -sf lwres_gethostent.3 lwres_sethostent_r.3 +rm -f lwres_string_parse.3 +ln -sf lwres_resutil.3 lwres_string_parse.3 diff --git a/patches/source/bind/bind.SlackBuild b/patches/source/bind/bind.SlackBuild new file mode 100755 index 00000000..f20a83f9 --- /dev/null +++ b/patches/source/bind/bind.SlackBuild @@ -0,0 +1,165 @@ +#!/bin/sh + +# Copyright 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016 Patrick J. Volkerding, Sebeka, MN, USA +# All rights reserved. +# +# Redistribution and use of this script, with or without modification, is +# permitted provided that the following conditions are met: +# +# 1. Redistributions of this script must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# +# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED +# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO +# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; +# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR +# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF +# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + +PKGNAM=bind +VERSION=${VERSION:-9.10.6-P1} +BUILD=${BUILD:-1_slack14.2} + +# Automatically determine the architecture we're building on: +if [ -z "$ARCH" ]; then + case "$( uname -m )" in + i?86) export ARCH=i586 ;; + arm*) export ARCH=arm ;; + # Unless $ARCH is already set, use uname -m for all other archs: + *) export ARCH=$( uname -m ) ;; + esac +fi + +NUMJOBS=${NUMJOBS:-" -j7 "} + +CWD=$(pwd) +TMP=/bind-$(mcookie) +PKG=$TMP/package-${PKGNAM} +rm -rf $PKG +mkdir -p $TMP $PKG/etc/default + +if [ "$ARCH" = "i586" ]; then + SLKCFLAGS="-O2 -march=i586 -mtune=i686" + LIBDIRSUFFIX="" +elif [ "$ARCH" = "s390" ]; then + SLKCFLAGS="-O2" + LIBDIRSUFFIX="" +elif [ "$ARCH" = "x86_64" ]; then + SLKCFLAGS="-O2 -fPIC" + LIBDIRSUFFIX="64" +fi + +cd $TMP +rm -rf ${PKGNAM}-${VERSION} +tar xvf $CWD/${PKGNAM}-$VERSION.tar.gz || exit 1 +cd ${PKGNAM}-$VERSION || exit 1 + +# Remove use of SO_BSDCOMPAT which has been obsolete since the 2.2.x kernel +# series, and generates warnings under 2.6.x kernels. This _might_ be fixed +# upstream already, but an explicit #undef SO_BSDCOMPAT does not hurt: +zcat $CWD/bind.so_bsdcompat.diff.gz | patch -p1 --verbose || exit + +# Thanks to Fedora for libidn support patch: +zcat $CWD/bind.libidn.patch.gz | patch -p1 --verbose || exit 1 + +# Make sure ownerships and permissions are sane: +chown -R root:root . +find . \ + \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \ + -exec chmod 755 {} \; -o \ + \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \ + -exec chmod 644 {} \; + +# Configure: +CFLAGS="$SLKCFLAGS" \ +./configure \ + --prefix=/usr \ + --libdir=/usr/lib${LIBDIRSUFFIX} \ + --sysconfdir=/etc \ + --localstatedir=/var \ + --with-libtool \ + --mandir=/usr/man \ + --enable-shared \ + --disable-static \ + --enable-threads \ + --with-openssl=/usr \ + --build=$ARCH-slackware-linux || exit 1 + +# Build and install: +make $NUMJOBS || make || exit 1 +make install DESTDIR=$PKG || exit 1 + +# We like symlinks. +( cd $PKG/usr/sbin + ln -sf named lwresd +) + +# We like a lot of symlinks. +( cd $PKG/usr/man/man3 + sh $CWD/3link.sh +) + +# Install init script: +mkdir -p $PKG/etc/rc.d +cp -a $CWD/rc.bind $PKG/etc/rc.d/rc.bind.new +chmod 644 $PKG/etc/rc.d/rc.bind.new + +# Add /var/run/named directory: +mkdir -p $PKG/var/run/named + +# Fix library perms: +chmod 755 $PKG/usr/lib${LIBDIRSUFFIX}/* + +# Strip binaries: +find $PKG | xargs file | grep -e "executable" -e "shared object" | grep ELF \ + | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null + +# Symlink hardlinked man pages: +( cd $PKG/usr/man/man1 + ln -sf isc-config.sh.1 bind9-config.1 +) + +# Compress manual pages: +find $PKG/usr/man -type f -exec gzip -9 {} \; +for i in $( find $PKG/usr/man -type l ) ; do + ln -s $( readlink $i ).gz $i.gz + rm $i +done + +# Add a documentation directory: +mkdir -p $PKG/usr/doc/${PKGNAM}-$VERSION +cp -a \ + CHANGES COPYRIGHT FAQ* README* \ + doc/arm doc/misc \ + $PKG/usr/doc/${PKGNAM}-$VERSION + +# This one should have the correct perms of the config file: +chmod 644 $PKG/usr/doc/${PKGNAM}-$VERSION/misc/rndc.conf-sample + +# One format of this is plenty. Especially get rid of the bloated PDF. +( cd $PKG/usr/doc/bind-$VERSION/arm + rm -f Makefile* *.pdf *.xml README.SGML latex-fixup.pl +) + +# Add sample config files for a simple caching nameserver: +mkdir -p $PKG/var/named/caching-example +cat $CWD/caching-example/named.conf > $PKG/etc/named.conf.new +cat $CWD/caching-example/localhost.zone > $PKG/var/named/caching-example/localhost.zone +cat $CWD/caching-example/named.local > $PKG/var/named/caching-example/named.local +cat $CWD/caching-example/named.root > $PKG/var/named/caching-example/named.root +# This name is deprecated, but having it here doesn't hurt in case +# an old configuration file wants it: +cat $CWD/caching-example/named.root > $PKG/var/named/caching-example/named.ca + +mkdir -p $PKG/install +zcat $CWD/doinst.sh.gz > $PKG/install/doinst.sh +cat $CWD/slack-desc > $PKG/install/slack-desc + +cd $PKG +/sbin/makepkg -l y -c n $TMP/${PKGNAM}-$(echo $VERSION | tr - _)-$ARCH-$BUILD.txz + diff --git a/patches/source/bind/bind.libidn.patch b/patches/source/bind/bind.libidn.patch new file mode 100644 index 00000000..6e042be7 --- /dev/null +++ b/patches/source/bind/bind.libidn.patch @@ -0,0 +1,297 @@ +diff --git a/bin/dig/Makefile.in b/bin/dig/Makefile.in +index bd219c5..f71685b 100644 +--- a/bin/dig/Makefile.in ++++ b/bin/dig/Makefile.in +@@ -38,10 +38,10 @@ DEPLIBS = ${DNSDEPLIBS} ${BIND9DEPLIBS} ${ISCDEPLIBS} \ + ${ISCCFGDEPLIBS} ${LWRESDEPLIBS} + + LIBS = ${LWRESLIBS} ${BIND9LIBS} ${ISCCFGLIBS} \ +- ${ISCLIBS} @IDNLIBS@ @LIBS@ ++ ${ISCLIBS} @IDNLIBS@ @LIBS@ -lidn + + NOSYMLIBS = ${LWRESLIBS} ${BIND9LIBS} ${ISCCFGLIBS} \ +- ${ISCNOSYMLIBS} @IDNLIBS@ @LIBS@ ++ ${ISCNOSYMLIBS} @IDNLIBS@ @LIBS@ -lidn + + SUBDIRS = + +@@ -59,6 +59,8 @@ HTMLPAGES = dig.html host.html nslookup.html + + MANOBJS = ${MANPAGES} ${HTMLPAGES} + ++EXT_CFLAGS = -DWITH_LIBIDN ++ + @BIND9_MAKE_RULES@ + + dig@EXEEXT@: dig.@O@ dighost.@O@ ${UOBJS} ${DEPLIBS} +diff --git a/bin/dig/dig.docbook b/bin/dig/dig.docbook +index 7a7e8e4..b36047f 100644 +--- a/bin/dig/dig.docbook ++++ b/bin/dig/dig.docbook +@@ -1251,8 +1251,8 @@ dig +qr www.isc.org any -x 127.0.0.1 isc.org ns +noqr + <command>dig</command> appropriately converts character encoding of + domain name before sending a request to DNS server or displaying a + reply from the server. +- If you'd like to turn off the IDN support for some reason, defines +- the <envar>IDN_DISABLE</envar> environment variable. ++ If you'd like to turn off the IDN support for some reason, define ++ the <envar>CHARSET=ASCII</envar> environment variable. + The IDN support is disabled if the variable is set when + <command>dig</command> runs. + </para> +diff --git a/bin/dig/dighost.c b/bin/dig/dighost.c +index 1f8bcf2..f657c30 100644 +--- a/bin/dig/dighost.c ++++ b/bin/dig/dighost.c +@@ -33,6 +33,11 @@ + #include <idn/api.h> + #endif + ++#ifdef WITH_LIBIDN ++#include <stringprep.h> ++#include <idna.h> ++#endif ++ + #include <dns/byaddr.h> + #ifdef DIG_SIGCHASE + #include <dns/callbacks.h> +@@ -158,6 +163,14 @@ static void idn_check_result(idn_result_t r, const char *msg); + int idnoptions = 0; + #endif + ++#ifdef WITH_LIBIDN ++static isc_result_t libidn_locale_to_utf8 (const char* from, char *to); ++static isc_result_t libidn_utf8_to_ascii (const char* from, char *to); ++static isc_result_t output_filter (isc_buffer_t *buffer, ++ unsigned int used_org, ++ isc_boolean_t absolute); ++#endif ++ + isc_socket_t *keep = NULL; + isc_sockaddr_t keepaddr; + +@@ -1448,8 +1461,15 @@ setup_system(isc_boolean_t ipv4only, isc_boolean_t ipv6only) { + + #ifdef WITH_IDN + initialize_idn(); ++ ++#endif ++#ifdef WITH_LIBIDN ++ result = dns_name_settotextfilter(output_filter); ++ check_result(result, "dns_name_settotextfilter"); ++#ifdef HAVE_SETLOCALE ++ setlocale (LC_ALL, ""); ++#endif + #endif +- + if (keyfile[0] != 0) + setup_file_key(); + else if (keysecret[0] != 0) +@@ -2231,8 +2251,11 @@ setup_lookup(dig_lookup_t *lookup) { + idn_result_t mr; + char utf8_textname[MXNAME], utf8_origin[MXNAME], idn_textname[MXNAME]; + #endif ++#ifdef WITH_LIBIDN ++ char utf8_str[MXNAME], utf8_name[MXNAME], ascii_name[MXNAME]; ++#endif + +-#ifdef WITH_IDN ++#if defined (WITH_IDN) || defined (WITH_LIBIDN) + result = dns_name_settotextfilter(lookup->idnout ? + output_filter : NULL); + check_result(result, "dns_name_settotextfilter"); +@@ -2274,6 +2297,14 @@ setup_lookup(dig_lookup_t *lookup) { + mr = idn_encodename(IDN_LOCALCONV | IDN_DELIMMAP, lookup->textname, + utf8_textname, sizeof(utf8_textname)); + idn_check_result(mr, "convert textname to UTF-8"); ++#elif defined (WITH_LIBIDN) ++ result = libidn_locale_to_utf8 (lookup->textname, utf8_str); ++ check_result (result, "convert textname to UTF-8"); ++ len = strlen (utf8_str); ++ if (len < MXNAME) ++ (void) strcpy (utf8_name, utf8_str); ++ else ++ fatal ("Too long name"); + #endif + + /* +@@ -2286,15 +2317,11 @@ setup_lookup(dig_lookup_t *lookup) { + if (lookup->new_search) { + #ifdef WITH_IDN + if ((count_dots(utf8_textname) >= ndots) || !usesearch) { +- lookup->origin = NULL; /* Force abs lookup */ +- lookup->done_as_is = ISC_TRUE; +- lookup->need_search = usesearch; +- } else if (lookup->origin == NULL && usesearch) { +- lookup->origin = ISC_LIST_HEAD(search_list); +- lookup->need_search = ISC_FALSE; +- } ++#elif defined (WITH_LIBIDN) ++ if ((count_dots(utf8_name) >= ndots) || !usesearch) { + #else + if ((count_dots(lookup->textname) >= ndots) || !usesearch) { ++#endif + lookup->origin = NULL; /* Force abs lookup */ + lookup->done_as_is = ISC_TRUE; + lookup->need_search = usesearch; +@@ -2302,7 +2329,6 @@ setup_lookup(dig_lookup_t *lookup) { + lookup->origin = ISC_LIST_HEAD(search_list); + lookup->need_search = ISC_FALSE; + } +-#endif + } + + #ifdef WITH_IDN +@@ -2319,6 +2345,20 @@ setup_lookup(dig_lookup_t *lookup) { + IDN_IDNCONV | IDN_LENCHECK, utf8_textname, + idn_textname, sizeof(idn_textname)); + idn_check_result(mr, "convert UTF-8 textname to IDN encoding"); ++#elif defined (WITH_LIBIDN) ++ if (lookup->origin != NULL) { ++ result = libidn_locale_to_utf8 (lookup->origin->origin, utf8_str); ++ check_result (result, "convert origin to UTF-8"); ++ if (len > 0 && utf8_name[len - 1] != '.') { ++ utf8_name[len++] = '.'; ++ if (len + strlen (utf8_str) < MXNAME) ++ (void) strcpy (utf8_name + len, utf8_str); ++ else ++ fatal ("Too long name + origin"); ++ } ++ } ++ ++ result = libidn_utf8_to_ascii (utf8_name, ascii_name); + #else + if (lookup->origin != NULL) { + debug("trying origin %s", lookup->origin->origin); +@@ -2389,6 +2429,13 @@ setup_lookup(dig_lookup_t *lookup) { + result = dns_name_fromtext(lookup->name, &b, + dns_rootname, 0, + &lookup->namebuf); ++#elif defined (WITH_LIBIDN) ++ len = strlen (ascii_name); ++ isc_buffer_init(&b, ascii_name, len); ++ isc_buffer_add(&b, len); ++ result = dns_name_fromtext(lookup->name, &b, ++ dns_rootname, 0, ++ &lookup->namebuf); + #else + len = (unsigned int) strlen(lookup->textname); + isc_buffer_init(&b, lookup->textname, len); +@@ -4377,7 +4424,7 @@ destroy_libs(void) { + void * ptr; + dig_message_t *chase_msg; + #endif +-#ifdef WITH_IDN ++#if defined (WITH_IDN) || defined (WITH_LIBIDN) + isc_result_t result; + #endif + +@@ -4418,6 +4465,10 @@ destroy_libs(void) { + result = dns_name_settotextfilter(NULL); + check_result(result, "dns_name_settotextfilter"); + #endif ++#ifdef WITH_LIBIDN ++ result = dns_name_settotextfilter (NULL); ++ check_result(result, "clearing dns_name_settotextfilter"); ++#endif + dns_name_destroy(); + + if (commctx != NULL) { +@@ -4603,6 +4654,97 @@ idn_check_result(idn_result_t r, const char *msg) { + } + } + #endif /* WITH_IDN */ ++#ifdef WITH_LIBIDN ++static isc_result_t ++libidn_locale_to_utf8 (const char *from, char *to) { ++ char *utf8_str; ++ ++ debug ("libidn_locale_to_utf8"); ++ utf8_str = stringprep_locale_to_utf8 (from); ++ if (utf8_str != NULL) { ++ (void) strcpy (to, utf8_str); ++ free (utf8_str); ++ return ISC_R_SUCCESS; ++ } ++ ++ debug ("libidn_locale_to_utf8: failure"); ++ return ISC_R_FAILURE; ++} ++static isc_result_t ++libidn_utf8_to_ascii (const char *from, char *to) { ++ char *ascii; ++ int iresult; ++ ++ debug ("libidn_utf8_to_ascii"); ++ iresult = idna_to_ascii_8z (from, &ascii, 0); ++ if (iresult != IDNA_SUCCESS) { ++ debug ("idna_to_ascii_8z: %s", idna_strerror (iresult)); ++ return ISC_R_FAILURE; ++ } ++ ++ (void) strcpy (to, ascii); ++ free (ascii); ++ return ISC_R_SUCCESS; ++} ++ ++static isc_result_t ++output_filter (isc_buffer_t *buffer, unsigned int used_org, ++ isc_boolean_t absolute) { ++ ++ char tmp1[MXNAME], *tmp2; ++ size_t fromlen, tolen; ++ isc_boolean_t end_with_dot; ++ int iresult; ++ ++ debug ("output_filter"); ++ ++ fromlen = isc_buffer_usedlength (buffer) - used_org; ++ if (fromlen >= MXNAME) ++ return ISC_R_SUCCESS; ++ memcpy (tmp1, (char *) isc_buffer_base (buffer) + used_org, fromlen); ++ end_with_dot = (tmp1[fromlen - 1] == '.') ? ISC_TRUE : ISC_FALSE; ++ if (absolute && !end_with_dot) { ++ fromlen++; ++ if (fromlen >= MXNAME) ++ return ISC_R_SUCCESS; ++ tmp1[fromlen - 1] = '.'; ++ } ++ tmp1[fromlen] = '\0'; ++ ++ iresult = idna_to_unicode_8z8z (tmp1, &tmp2, 0); ++ if (iresult != IDNA_SUCCESS) { ++ debug ("output_filter: %s", idna_strerror (iresult)); ++ return ISC_R_SUCCESS; ++ } ++ ++ (void) strcpy (tmp1, tmp2); ++ free (tmp2); ++ ++ tmp2 = stringprep_utf8_to_locale (tmp1); ++ if (tmp2 == NULL) { ++ debug ("output_filter: stringprep_utf8_to_locale failed"); ++ return ISC_R_SUCCESS; ++ } ++ ++ (void) strcpy (tmp1, tmp2); ++ free (tmp2); ++ ++ tolen = strlen (tmp1); ++ if (absolute && !end_with_dot && tmp1[tolen - 1] == '.') ++ tolen--; ++ ++ if (isc_buffer_length (buffer) < used_org + tolen) ++ return ISC_R_NOSPACE; ++ ++ debug ("%s", tmp1); ++ ++ isc_buffer_subtract (buffer, isc_buffer_usedlength (buffer) - used_org); ++ memcpy (isc_buffer_used (buffer), tmp1, tolen); ++ isc_buffer_add (buffer, tolen); ++ ++ return ISC_R_SUCCESS; ++} ++#endif /* WITH_LIBIDN*/ + + #ifdef DIG_SIGCHASE + void diff --git a/patches/source/bind/bind.so_bsdcompat.diff b/patches/source/bind/bind.so_bsdcompat.diff new file mode 100644 index 00000000..5d78031b --- /dev/null +++ b/patches/source/bind/bind.so_bsdcompat.diff @@ -0,0 +1,11 @@ +--- ./lib/isc/unix/socket.c.orig 2005-11-03 17:08:42.000000000 -0600 ++++ ./lib/isc/unix/socket.c 2006-02-18 13:09:15.000000000 -0600 +@@ -245,6 +245,8 @@ + + #define SOCK_DEAD(s) ((s)->references == 0) + ++#undef SO_BSDCOMPAT ++ + static void + manager_log(isc_socketmgr_t *sockmgr, + isc_logcategory_t *category, isc_logmodule_t *module, int level, diff --git a/patches/source/bind/caching-example/localhost.zone b/patches/source/bind/caching-example/localhost.zone new file mode 100644 index 00000000..c47baf5f --- /dev/null +++ b/patches/source/bind/caching-example/localhost.zone @@ -0,0 +1,11 @@ +$TTL 86400 +$ORIGIN localhost. +@ 1D IN SOA @ root ( + 42 ; serial (d. adams) + 3H ; refresh + 15M ; retry + 1W ; expiry + 1D ) ; minimum + + 1D IN NS @ + 1D IN A 127.0.0.1 diff --git a/patches/source/bind/caching-example/named.conf b/patches/source/bind/caching-example/named.conf new file mode 100644 index 00000000..a8ee2795 --- /dev/null +++ b/patches/source/bind/caching-example/named.conf @@ -0,0 +1,31 @@ +options { + directory "/var/named"; + /* + * If there is a firewall between you and nameservers you want + * to talk to, you might need to uncomment the query-source + * directive below. Previous versions of BIND always asked + * questions using port 53, but BIND 8.1 uses an unprivileged + * port by default. + */ + // query-source address * port 53; +}; + +// +// a caching only nameserver config +// +zone "." IN { + type hint; + file "caching-example/named.root"; +}; + +zone "localhost" IN { + type master; + file "caching-example/localhost.zone"; + allow-update { none; }; +}; + +zone "0.0.127.in-addr.arpa" IN { + type master; + file "caching-example/named.local"; + allow-update { none; }; +}; diff --git a/patches/source/bind/caching-example/named.local b/patches/source/bind/caching-example/named.local new file mode 100644 index 00000000..8f40bcf3 --- /dev/null +++ b/patches/source/bind/caching-example/named.local @@ -0,0 +1,10 @@ +$TTL 86400 +@ IN SOA localhost. root.localhost. ( + 2011032500 ; Serial + 28800 ; Refresh + 14400 ; Retry + 3600000 ; Expire + 86400 ) ; Minimum + IN NS localhost. + +1 IN PTR localhost. diff --git a/patches/source/bind/caching-example/named.root b/patches/source/bind/caching-example/named.root new file mode 100644 index 00000000..9cc20228 --- /dev/null +++ b/patches/source/bind/caching-example/named.root @@ -0,0 +1,90 @@ +; This file holds the information on root name servers needed to +; initialize cache of Internet domain name servers +; (e.g. reference this file in the "cache . <file>" +; configuration file of BIND domain name servers). +; +; This file is made available by InterNIC +; under anonymous FTP as +; file /domain/named.cache +; on server FTP.INTERNIC.NET +; -OR- RS.INTERNIC.NET +; +; last update: November 05, 2014 +; related version of root zone: 2014110501 +; +; formerly NS.INTERNIC.NET +; +. 3600000 NS A.ROOT-SERVERS.NET. +A.ROOT-SERVERS.NET. 3600000 A 198.41.0.4 +A.ROOT-SERVERS.NET. 3600000 AAAA 2001:503:ba3e::2:30 +; +; FORMERLY NS1.ISI.EDU +; +. 3600000 NS B.ROOT-SERVERS.NET. +B.ROOT-SERVERS.NET. 3600000 A 192.228.79.201 +B.ROOT-SERVERS.NET. 3600000 AAAA 2001:500:84::b +; +; FORMERLY C.PSI.NET +; +. 3600000 NS C.ROOT-SERVERS.NET. +C.ROOT-SERVERS.NET. 3600000 A 192.33.4.12 +C.ROOT-SERVERS.NET. 3600000 AAAA 2001:500:2::c +; +; FORMERLY TERP.UMD.EDU +; +. 3600000 NS D.ROOT-SERVERS.NET. +D.ROOT-SERVERS.NET. 3600000 A 199.7.91.13 +D.ROOT-SERVERS.NET. 3600000 AAAA 2001:500:2d::d +; +; FORMERLY NS.NASA.GOV +; +. 3600000 NS E.ROOT-SERVERS.NET. +E.ROOT-SERVERS.NET. 3600000 A 192.203.230.10 +; +; FORMERLY NS.ISC.ORG +; +. 3600000 NS F.ROOT-SERVERS.NET. +F.ROOT-SERVERS.NET. 3600000 A 192.5.5.241 +F.ROOT-SERVERS.NET. 3600000 AAAA 2001:500:2f::f +; +; FORMERLY NS.NIC.DDN.MIL +; +. 3600000 NS G.ROOT-SERVERS.NET. +G.ROOT-SERVERS.NET. 3600000 A 192.112.36.4 +; +; FORMERLY AOS.ARL.ARMY.MIL +; +. 3600000 NS H.ROOT-SERVERS.NET. +H.ROOT-SERVERS.NET. 3600000 A 128.63.2.53 +H.ROOT-SERVERS.NET. 3600000 AAAA 2001:500:1::803f:235 +; +; FORMERLY NIC.NORDU.NET +; +. 3600000 NS I.ROOT-SERVERS.NET. +I.ROOT-SERVERS.NET. 3600000 A 192.36.148.17 +I.ROOT-SERVERS.NET. 3600000 AAAA 2001:7fe::53 +; +; OPERATED BY VERISIGN, INC. +; +. 3600000 NS J.ROOT-SERVERS.NET. +J.ROOT-SERVERS.NET. 3600000 A 192.58.128.30 +J.ROOT-SERVERS.NET. 3600000 AAAA 2001:503:c27::2:30 +; +; OPERATED BY RIPE NCC +; +. 3600000 NS K.ROOT-SERVERS.NET. +K.ROOT-SERVERS.NET. 3600000 A 193.0.14.129 +K.ROOT-SERVERS.NET. 3600000 AAAA 2001:7fd::1 +; +; OPERATED BY ICANN +; +. 3600000 NS L.ROOT-SERVERS.NET. +L.ROOT-SERVERS.NET. 3600000 A 199.7.83.42 +L.ROOT-SERVERS.NET. 3600000 AAAA 2001:500:3::42 +; +; OPERATED BY WIDE +; +. 3600000 NS M.ROOT-SERVERS.NET. +M.ROOT-SERVERS.NET. 3600000 A 202.12.27.33 +M.ROOT-SERVERS.NET. 3600000 AAAA 2001:dc3::35 +; End of file diff --git a/patches/source/bind/doinst.sh b/patches/source/bind/doinst.sh new file mode 100644 index 00000000..afeff946 --- /dev/null +++ b/patches/source/bind/doinst.sh @@ -0,0 +1,36 @@ +#!/bin/sh +config() { + NEW="$1" + OLD="`dirname $NEW`/`basename $NEW .new`" + # If there's no config file by that name, mv it over: + if [ ! -r $OLD ]; then + mv $NEW $OLD + elif [ "`cat $OLD | md5sum`" = "`cat $NEW | md5sum`" ]; then # toss the redundant copy + rm $NEW + fi + # Otherwise, we leave the .new copy for the admin to consider... +} + +# Keep same perms on rc.bind.new: +if [ -e etc/rc.d/rc.bind ]; then + cp -a etc/rc.d/rc.bind etc/rc.d/rc.bind.new.incoming + cat etc/rc.d/rc.bind.new > etc/rc.d/rc.bind.new.incoming + mv etc/rc.d/rc.bind.new.incoming etc/rc.d/rc.bind.new +fi + +config etc/named.conf.new +config etc/rc.d/rc.bind.new + +# Add a /var/named if it doesn't exist: +if [ ! -d var/named ]; then + mkdir -p var/named + chmod 755 var/named +fi + +# Generate /etc/rndc.key if there's none there, +# and there also no /etc/rndc.conf (the other +# way to set this up). +if [ ! -r etc/rndc.key -a ! -r /etc/rndc.conf ]; then + chroot . /sbin/ldconfig + chroot . /usr/sbin/rndc-confgen -r /dev/urandom -a 2> /dev/null +fi diff --git a/patches/source/bind/rc.bind b/patches/source/bind/rc.bind new file mode 100644 index 00000000..6d77d73d --- /dev/null +++ b/patches/source/bind/rc.bind @@ -0,0 +1,112 @@ +#!/bin/sh +# Start/stop/restart the BIND name server daemon (named). + + +# Start bind. In the past it was more secure to run BIND as a non-root +# user (for example, with '-u daemon'), but the modern version of BIND +# knows how to use the kernel's capability mechanism to drop all root +# privileges except the ability to bind() to a privileged port and set +# process resource limits, so -u should not be needed. If you wish to +# use it anyway, chown the /var/run/named and /var/named directories to +# the non-root user. The command options can be set like this in +# /etc/default/named : +# NAMED_OPTIONS="-u daemon" +# So you will not have to edit this script. + +# You might also consider running BIND in a "chroot jail", +# a discussion of which may be found in +# /usr/doc/Linux-HOWTOs/Chroot-BIND-HOWTO. + +# One last note: rndc has a lot of other nice features that it is not +# within the scope of this start/stop/restart script to support. +# For more details, see "man rndc" or just type "rndc" to see the options. + +# Load command defaults: +if [ -f /etc/default/named ] ; then . /etc/default/named ; fi +if [ -f /etc/default/rndc ] ; then . /etc/default/rndc ; fi + +# Sanity check. If /usr/sbin/named is missing then it +# doesn't make much sense to try to run this script: +if [ ! -x /usr/sbin/named ]; then + echo "/etc/rc.d/rc.bind: no /usr/sbin/named found (or not executable); cannot start." + exit 1 +fi + +# Start BIND. As many times as you like. ;-) +# Seriously, don't run "rc.bind start" if BIND is already +# running or you'll get more than one copy running. +bind_start() { + if [ -x /usr/sbin/named ]; then + echo "Starting BIND: /usr/sbin/named $NAMED_OPTIONS" + /usr/sbin/named $NAMED_OPTIONS + sleep 1 + fi + if ! ps axc | grep -q named ; then + echo "WARNING: named did not start." + echo "Attempting to start named again: /usr/sbin/named $NAMED_OPTIONS" + /usr/sbin/named $NAMED_OPTIONS + sleep 1 + if ps axc | grep -q named ; then + echo "SUCCESS: named started." + else + echo "FAILED: Sorry, a second attempt to start named has also failed." + echo "There may be a configuration error that needs fixing. Good luck!" + fi + fi +} + +# Stop all running copies of BIND (/usr/sbin/named): +bind_stop() { + echo "Stopping BIND: /usr/sbin/rndc $RDNC_OPTIONS stop" + /usr/sbin/rndc $RDNC_OPTIONS stop + # A problem with using "/usr/sbin/rndc stop" is that if you + # managed to get multiple copies of named running it will + # only stop one of them and then can't stop the others even + # if you run it again. So, after doing things the nice way + # we'll do them the old-fashioned way. If you don't like + # it you can comment it out, but unless you have a lot of + # other programs you run called "named" this is unlikely + # to have any ill effects: + sleep 1 + if ps axc | grep -q named ; then + echo "Using "killall named" on additional BIND processes..." + /bin/killall named 2> /dev/null + fi +} + +# Reload BIND: +bind_reload() { + /usr/sbin/rndc $RDNC_OPTIONS reload +} + +# Restart BIND: +bind_restart() { + bind_stop + bind_start +} + +# Get BIND status: +bind_status() { + /usr/sbin/rndc $RDNC_OPTIONS status +} + +case "$1" in +'start') + bind_start + ;; +'stop') + bind_stop + ;; +'reload') + bind_reload + ;; +'restart') + bind_restart + ;; +'status') + bind_status + ;; +*) + echo "usage $0 start|stop|reload|restart|status" +esac + diff --git a/patches/source/bind/slack-desc b/patches/source/bind/slack-desc new file mode 100644 index 00000000..9e9b15d1 --- /dev/null +++ b/patches/source/bind/slack-desc @@ -0,0 +1,19 @@ +# HOW TO EDIT THIS FILE: +# The "handy ruler" below makes it easier to edit a package description. Line +# up the first '|' above the ':' following the base package name, and the '|' +# on the right side marks the last column you can put a character in. You must +# make exactly 11 lines for the formatting to be correct. It's also +# customary to leave one space after the ':'. + + |-----handy-ruler------------------------------------------------------| +bind: bind (DNS server and utilities) +bind: +bind: The named daemon and support utilities such as dig, host, and +bind: nslookup. Sample configuration files for running a simple caching +bind: nameserver are included. Documentation for advanced name server +bind: setup can be found in /usr/doc/bind-9.x.x/. +bind: +bind: +bind: +bind: +bind: diff --git a/patches/source/bluez/bluez-5.30-obexd_without_systemd-1.patch b/patches/source/bluez/bluez-5.30-obexd_without_systemd-1.patch new file mode 100644 index 00000000..749787c5 --- /dev/null +++ b/patches/source/bluez/bluez-5.30-obexd_without_systemd-1.patch @@ -0,0 +1,61 @@ +Submitted By: Armin K. <krejzi at email dot com> +Date: 2013-04-29 +Initial Package Version: 5.17 +Upstream Status: unknown +Origin: Arch Linux (Giovanni Campagna) +Description: Allow using obexd without systemd in the user session + +Not all sessions run systemd --user (actually, the majority +doesn't), so the dbus daemon must be able to spawn obexd +directly, and to do so it needs the full path of the daemon. +--- + Makefile.obexd | 4 ++-- + obexd/src/org.bluez.obex.service | 4 ---- + obexd/src/org.bluez.obex.service.in | 4 ++++ + 3 files changed, 6 insertions(+), 6 deletions(-) + delete mode 100644 obexd/src/org.bluez.obex.service + create mode 100644 obexd/src/org.bluez.obex.service.in + +diff --git a/Makefile.obexd b/Makefile.obexd +index 3760867..142e7c3 100644 +--- a/Makefile.obexd ++++ b/Makefile.obexd +@@ -2,12 +2,12 @@ + if SYSTEMD + systemduserunitdir = @SYSTEMD_USERUNITDIR@ + systemduserunit_DATA = obexd/src/obex.service ++endif + + dbussessionbusdir = @DBUS_SESSIONBUSDIR@ + dbussessionbus_DATA = obexd/src/org.bluez.obex.service +-endif + +-EXTRA_DIST += obexd/src/obex.service.in obexd/src/org.bluez.obex.service ++EXTRA_DIST += obexd/src/obex.service.in obexd/src/org.bluez.obex.service.in + + obex_plugindir = $(libdir)/obex/plugins + +diff --git a/obexd/src/org.bluez.obex.service b/obexd/src/org.bluez.obex.service +deleted file mode 100644 +index a538088..0000000 +--- a/obexd/src/org.bluez.obex.service ++++ /dev/null +@@ -1,4 +0,0 @@ +-[D-BUS Service] +-Name=org.bluez.obex +-Exec=/bin/false +-SystemdService=dbus-org.bluez.obex.service +diff --git a/obexd/src/org.bluez.obex.service.in b/obexd/src/org.bluez.obex.service.in +new file mode 100644 +index 0000000..9c815f2 +--- /dev/null ++++ b/obexd/src/org.bluez.obex.service.in +@@ -0,0 +1,4 @@ ++[D-BUS Service] ++Name=org.bluez.obex ++Exec=@libexecdir@/obexd ++SystemdService=dbus-org.bluez.obex.service +-- +1.8.3.1 + + diff --git a/patches/source/bluez/bluez.SlackBuild b/patches/source/bluez/bluez.SlackBuild new file mode 100755 index 00000000..4225f828 --- /dev/null +++ b/patches/source/bluez/bluez.SlackBuild @@ -0,0 +1,178 @@ +#!/bin/sh + +# Copyright 2009, 2010, 2011, 2012, 2013, 2016 Patrick J. Volkerding, Sebeka, Minnesota, USA +# All rights reserved. +# +# Redistribution and use of this script, with or without modification, is +# permitted provided that the following conditions are met: +# +# 1. Redistributions of this script must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# +# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR IMPLIED +# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO +# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; +# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR +# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF +# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +PKGNAM=bluez +VERSION=${VERSION:-$(echo $PKGNAM-*.tar.?z* | rev | cut -f 3- -d . | cut -f 1 -d - | rev)} +BUILD=${BUILD:-1_slack14.2} + +NUMJOBS=${NUMJOBS:--j7} + +# Automatically determine the architecture we're building on: +if [ -z "$ARCH" ]; then + case "$( uname -m )" in + i?86) export ARCH=i586 ;; + arm*) export ARCH=arm ;; + # Unless $ARCH is already set, use uname -m for all other archs: + *) export ARCH=$( uname -m ) ;; + esac +fi + +if [ "$ARCH" = "i586" ]; then + SLKCFLAGS="-O2 -march=i586 -mtune=i686" + LIBDIRSUFFIX="" +elif [ "$ARCH" = "s390" ]; then + SLKCFLAGS="-O2" + LIBDIRSUFFIX="" +elif [ "$ARCH" = "x86_64" ]; then + SLKCFLAGS="-O2 -fPIC" + LIBDIRSUFFIX="64" +else + SLKCFLAGS="-O2" + LIBDIRSUFFIX="" +fi + +CWD=$(pwd) +TMP=${TMP:-/tmp} +PKG=$TMP/package-$PKGNAM + +rm -rf $PKG +mkdir -p $TMP $PKG +cd $TMP +rm -rf $PKGNAM-$VERSION +tar xvf $CWD/${PKGNAM}-${VERSION}.tar.xz || exit 1 +cd $PKGNAM-$VERSION || exit 1 +chown -R root:root . +find . \ + \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \ + -exec chmod 755 {} \; -o \ + \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \ + -exec chmod 644 {} \; + +zcat $CWD/bluez-5.30-obexd_without_systemd-1.patch.gz | patch -p1 --verbose || exit 1 + +autoreconf -vif + +sed -i -e 's|-lreadline|\0 -lncursesw|g' Makefile.{in,tools} + +# We're adding --enable-deprecated due to this commit: +# +# commit b1eb2c4cd057624312e0412f6c4be000f7fc3617 +#Author: Luiz Augusto von Dentz <luiz.von.dentz@intel.com> +#Date: Wed Jan 4 14:23:58 2017 +0200 +# +# build: Hide deprecated tools under --enable-deprecated +# +# This marks the following tools as deprecated as they are not longer +# maintained or have been replaced by other tools: +# +# hciattach hciconfig hcitool hcidump rfcomm sdptool ciptool gatttool + +CFLAGS="$SLKCFLAGS" \ +CXXFLAGS="$SLKCFLAGS" \ +LDFLAGS="-L/usr/lib$LIBDIRSUFFIX" \ +./configure \ + --prefix=/usr \ + --libdir=/usr/lib${LIBDIRSUFFIX} \ + --sysconfdir=/etc \ + --mandir=/usr/man \ + --localstatedir=/var \ + --docdir=/usr/doc/${PKGNAM}-${VERSION} \ + --enable-library \ + --disable-systemd \ + --enable-deprecated \ + --build=$ARCH-slackware-linux || exit 1 + +make $NUMJOBS || make || exit 1 +make install DESTDIR=$PKG || exit 1 + +# Use reset=1 for the btusb module, which supposedly fixes reconnect problems: +mkdir -p $PKG/lib/modprobe.d +cp -a $CWD/btusb.conf $PKG/lib/modprobe.d +chown root:root $PKG/lib/modprobe.d/btusb.conf +chmod 644 $PKG/lib/modprobe.d/btusb.conf + +# Add bluetoothd to /usr/sbin +mkdir -p $PKG/usr/sbin +ln -s ../libexec/bluetooth/bluetoothd $PKG/usr/sbin + +# Install the configuration files +mkdir -p $PKG/etc/bluetooth $PKG/etc/default +cat src/main.conf > $PKG/etc/bluetooth/main.conf.new +cat profiles/input/input.conf > $PKG/etc/bluetooth/input.conf.new +cat profiles/network/network.conf > $PKG/etc/bluetooth/network.conf.new +cat profiles/proximity/proximity.conf > $PKG/etc/bluetooth/proximity.conf.new +cat $CWD/config/uart.conf > $PKG/etc/bluetooth/uart.conf.new +cat $CWD/config/defaultconfig > $PKG/etc/default/bluetooth.new + +# Add an init script +mkdir -p $PKG/etc/rc.d +cat $CWD/config/rc.bluetooth > $PKG/etc/rc.d/rc.bluetooth.new + +# Let's go ahead and let that start by default, unless an existing init +# script is not executable: +chmod 755 $PKG/etc/rc.d/rc.bluetooth.new + +# If the deprecated utility gatttool was built, go ahead and install it: +if [ -x attrib/gatttool ]; then + cp attrib/gatttool $PKG/usr/bin + chown root:root $PKG/usr/bin/gatttool + chmod 755 $PKG/usr/bin/gatttool +fi + +# Compress and if needed symlink the man pages: +if [ -d $PKG/usr/man ]; then + ( cd $PKG/usr/man + for manpagedir in $(find . -type d -name "man*") ; do + ( cd $manpagedir + for eachpage in $( find . -type l -maxdepth 1) ; do + ln -s $( readlink $eachpage ).gz $eachpage.gz + rm $eachpage + done + gzip -9 *.? + ) + done + ) +fi + +find $PKG | xargs file | grep -e "executable" -e "shared object" | grep ELF \ + | cut -f 1 -d : | xargs strip --strip-unneeded 2> /dev/null + +mkdir -p $PKG/usr/doc/$PKGNAM-$VERSION +cp -a \ + AUTHORS COPYING* INSTALL README* TODO \ + $PKG/usr/doc/$PKGNAM-$VERSION + +# If there's a ChangeLog, installing at least part of the recent history +# is useful, but don't let it get totally out of control: +if [ -r ChangeLog ]; then + DOCSDIR=$(echo $PKG/usr/doc/${PKGNAM}-$VERSION) + cat ChangeLog | head -n 1000 > $DOCSDIR/ChangeLog + touch -r ChangeLog $DOCSDIR/ChangeLog +fi + +mkdir -p $PKG/install + +zcat $CWD/doinst.sh.gz > $PKG/install/doinst.sh +cat $CWD/slack-desc > $PKG/install/slack-desc + +cd $PKG +/sbin/makepkg -l y -c n $TMP/$PKGNAM-$VERSION-$ARCH-$BUILD.txz diff --git a/patches/source/bluez/btusb.conf b/patches/source/bluez/btusb.conf new file mode 100644 index 00000000..3072d788 --- /dev/null +++ b/patches/source/bluez/btusb.conf @@ -0,0 +1,3 @@ +# use "reset=1" as default, since it should be safe for recent devices and +# solves all kind of problems. +options btusb reset=1 diff --git a/patches/source/bluez/config/defaultconfig b/patches/source/bluez/config/defaultconfig new file mode 100644 index 00000000..b4da786e --- /dev/null +++ b/patches/source/bluez/config/defaultconfig @@ -0,0 +1,9 @@ +# /etc/default/bluetooth + +# A space delimied list of devices to start at boot time +ACTIVE_HCI_DEVICES_ON_BOOT="hci0" + +# A semicolon delimited list of SDP (Service Discovery Protocol) +# operations for bluetooth devices. See the sdptool for more details. +SDPTOOL_OPTIONS="" + diff --git a/patches/source/bluez/config/rc.bluetooth b/patches/source/bluez/config/rc.bluetooth new file mode 100644 index 00000000..b56fcd10 --- /dev/null +++ b/patches/source/bluez/config/rc.bluetooth @@ -0,0 +1,74 @@ +#!/bin/sh + +# /etc/rc.d/rc.bluetooth (based on BLFS script) + +# Populated from /etc/default/bluetooth: +# ACTIVE_HCI_DEVICES_ON_BOOT and SDPTOOL_OPTIONS + +[ -r /etc/default/bluetooth ] && . /etc/default/bluetooth + +start_hci_dev() { + for dev in ${ACTIVE_HCI_DEVICES_ON_BOOT} ; do + hciconfig $dev up > /dev/null 2>&1 + done +} + +run_sdptool() { + # Declaring IFS local in this function, removes the need to save/restore it + local IFS option + test -x /usr/bin/sdptool || return 1 + IFS=";" + for option in ${SDPTOOL_OPTIONS}; do + IFS=" " + /usr/bin/sdptool $option > /dev/null 2>&1 + done +} + +start_uarts() { + [ -r /etc/bluetooth/uart.conf ] || return + grep -v '^[[:space:]]*(#|$)' /etc/bluetooth/uart.conf | while read i; do + /usr/bin/hciattach $i > /dev/null 2>&1 + done +} + +stop_uarts() { + killall /usr/bin/hciattach > /dev/null 2>&1 +} + +start() { + if [ -d /sys/class/bluetooth ]; then + # Start as background process and assume OK + echo -n "Starting Bluetooth services: bluetoothd " + /usr/sbin/bluetoothd & + echo -n "hciconfig " + start_hci_dev + echo -n "sdptool " + run_sdptool + echo "hciattach" + start_uarts + fi +} + +stop() { + stop_uarts + killall /usr/sbin/bluetoothd > /dev/null 2>&1 +} + +case "${1}" in + start) + start + ;; + stop) + stop + ;; + restart) + stop + sleep 1 + start + ;; + *) + echo "Usage: ${0} {start|stop|restart}" + exit 1 + ;; +esac + diff --git a/patches/source/bluez/config/uart.conf b/patches/source/bluez/config/uart.conf new file mode 100644 index 00000000..b2e276f4 --- /dev/null +++ b/patches/source/bluez/config/uart.conf @@ -0,0 +1,6 @@ +# /etc/bluetooth/uart.conf + +# Attach serial devices via UART HCI to BlueZ stack +# Use one line per device +# See the hciattach man page for options + diff --git a/patches/source/bluez/doinst.sh b/patches/source/bluez/doinst.sh new file mode 100644 index 00000000..7fc21383 --- /dev/null +++ b/patches/source/bluez/doinst.sh @@ -0,0 +1,27 @@ +config() { + NEW="$1" + OLD="$(dirname $NEW)/$(basename $NEW .new)" + # If there's no config file by that name, mv it over: + if [ ! -r $OLD ]; then + mv $NEW $OLD + elif [ "$(cat $OLD | md5sum)" = "$(cat $NEW | md5sum)" ]; then # toss the redundant copy + rm $NEW + fi + # Otherwise, we leave the .new copy for the admin to consider... +} + +# Keep same perms on rc.bluetooth.new: +if [ -e etc/rc.d/rc.bluetooth ]; then + cp -a etc/rc.d/rc.bluetooth etc/rc.d/rc.bluetooth.new.incoming + cat etc/rc.d/rc.bluetooth.new > etc/rc.d/rc.bluetooth.new.incoming + mv etc/rc.d/rc.bluetooth.new.incoming etc/rc.d/rc.bluetooth.new +fi + +config etc/rc.d/rc.bluetooth.new +config etc/bluetooth/input.conf.new +config etc/bluetooth/main.conf.new +config etc/bluetooth/network.conf.new +config etc/bluetooth/proximity.conf.new +config etc/bluetooth/uart.conf.new +config etc/default/bluetooth.new + diff --git a/patches/source/bluez/slack-desc b/patches/source/bluez/slack-desc new file mode 100644 index 00000000..607fa4d9 --- /dev/null +++ b/patches/source/bluez/slack-desc @@ -0,0 +1,19 @@ +# HOW TO EDIT THIS FILE: +# The "handy ruler" below makes it easier to edit a package description. Line +# up the first '|' above the ':' following the base package name, and the '|' +# on the right side marks the last column you can put a character in. You must +# make exactly 11 lines for the formatting to be correct. It's also +# customary to leave one space after the ':'. + + |-----handy-ruler------------------------------------------------------| +bluez: bluez (Bluetooth libraries and utilities) +bluez: +bluez: Bluez is the Bluetooth stack for Linux, allowing Bluetooth adaptors +bluez: and devices to be used with Linux. This package contains the Bluez +bluez: libraries, utilities, and other support files. +bluez: +bluez: For more info, visit: http://www.bluez.org +bluez: +bluez: +bluez: +bluez: diff --git a/patches/source/ca-certificates/ca-certificates.SlackBuild b/patches/source/ca-certificates/ca-certificates.SlackBuild new file mode 100755 index 00000000..6b3cf010 --- /dev/null +++ b/patches/source/ca-certificates/ca-certificates.SlackBuild @@ -0,0 +1,91 @@ +#!/bin/sh + +# Slackware build script for ca-certificates + +# Copyright 2009,2011 Robby Workman Northport, AL, USA +# Copyright 2012, 2013, 2015, 2016 Patrick J. Volkerding, Sebeka, MN, USA +# All rights reserved. +# +# Redistribution and use of this script, with or without modification, is +# permitted provided that the following conditions are met: +# +# 1. Redistributions of this script must retain the above copyright +# notice, this list of conditions and the following disclaimer. +# +# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ''AS IS'' AND ANY EXPRESS OR IMPLIED +# WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +# MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO +# EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, +# SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, +# PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; +# OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, +# WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR +# OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF +# ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +PKGNAM=ca-certificates +VERSION=${VERSION:-20161130} +ARCH=noarch +BUILD=${BUILD:-1_slack14.2} + +TARVERSION=${VERSION}+nmu1 + +CWD=$(pwd) +TMP=${TMP:-/tmp} +PKG=$TMP/package-$PKGNAM + +rm -rf $PKG +mkdir -p $TMP $PKG/usr/share/ca-certificates $PKG/usr/sbin +cd $TMP + +# Need both $PKGNAM and $PKGNAM-$VERSION since upstream can't decide how +# to package their tarball: +rm -rf $PKGNAM $PKGNAM-$VERSION + +# Extract the tarball: +tar xvf $CWD/${PKGNAM}_$TARVERSION.tar.?z || exit 1 + +# Again, both $PKGNAM and $PKGNAM-$VERSION are needed here: +cd $PKGNAM-$VERSION || cd $PKGNAM || exit 1 + +chown -R root:root . +find . \ + \( -perm 777 -o -perm 775 -o -perm 711 -o -perm 555 -o -perm 511 \) \ + -exec chmod 755 {} \; -o \ + \( -perm 666 -o -perm 664 -o -perm 600 -o -perm 444 -o -perm 440 -o -perm 400 \) \ + -exec chmod 644 {} \; + +# Obsolete? +#zcat $CWD/patches/fixup_DESTDIR.diff.gz | patch -p1 || exit 1 + +# Remove incompatible command operators used to call 'run-parts': +zcat $CWD/patches/fixup_update-ca-certificates.diff.gz | patch -p1 || exit 1 + +make || exit 1 +make install DESTDIR=$PKG || exit 1 + +mkdir -p $PKG/etc/ca-certificates/update.d +printf "# Automatically generated by $PKGNAM-$VERSION \n#\n" \ + > $PKG/etc/ca-certificates.conf.new +( cd $PKG/usr/share/ca-certificates + find . -name '*.crt' | sort | cut -b3- +) >> $PKG/etc/ca-certificates.conf.new + +mkdir -p $PKG/usr/man/man8 +gzip -9c sbin/update-ca-certificates.8 > \ + $PKG/usr/man/man8/update-ca-certificates.8.gz + +mkdir -p $PKG/usr/doc/$PKGNAM-$VERSION +mv debian/NEWS debian/NEWS.Debian +cp -a debian/NEWS.Debian debian/README.Debian $PKG/usr/doc/$PKGNAM-$VERSION + +mkdir -p $PKG/var/log/setup +cat $CWD/setup.11.cacerts > $PKG/var/log/setup/setup.11.cacerts +chmod 755 $PKG/var/log/setup/setup.11.cacerts + +mkdir -p $PKG/install +cat $CWD/slack-desc > $PKG/install/slack-desc +zcat $CWD/doinst.sh.gz > $PKG/install/doinst.sh + +cd $PKG +/sbin/makepkg -l y -c n $TMP/$PKGNAM-$VERSION-$ARCH-$BUILD.txz diff --git a/patches/source/ca-certificates/doinst.sh b/patches/source/ca-certificates/doinst.sh new file mode 100644 index 00000000..cfd7d795 --- /dev/null +++ b/patches/source/ca-certificates/doinst.sh @@ -0,0 +1,19 @@ +config() { + NEW="$1" + OLD="$(dirname $NEW)/$(basename $NEW .new)" + # If there's no config file by that name, mv it over: + if [ ! -r $OLD ]; then + mv $NEW $OLD + elif [ "$(cat $OLD | md5sum)" = "$(cat $NEW | md5sum)" ]; then + # toss the redundant copy + rm $NEW + fi + # Otherwise, we leave the .new copy for the admin to consider... +} + +config etc/ca-certificates.conf.new + +if [ -x /usr/sbin/update-ca-certificates ]; then + /usr/sbin/update-ca-certificates --fresh 1> /dev/null 2> /dev/null +fi + diff --git a/patches/source/ca-certificates/patches/fixup_DESTDIR.diff b/patches/source/ca-certificates/patches/fixup_DESTDIR.diff new file mode 100644 index 00000000..96406418 --- /dev/null +++ b/patches/source/ca-certificates/patches/fixup_DESTDIR.diff @@ -0,0 +1,49 @@ +--- ./cacert.org/Makefile.orig ++++ ./cacert.org/Makefile +@@ -7,6 +7,7 @@ + clean: + + install: ++ mkdir -p $(CERTSDIR) + for p in *.crt; do \ + install -m 644 $$p $(CERTSDIR)/cacert.org_$$p ; \ + done +--- ./mozilla/Makefile.orig ++++ ./mozilla/Makefile +@@ -9,6 +9,7 @@ + -rm -f *.crt + + install: ++ mkdir -p $(CERTSDIR) + for p in *.crt; do \ + install -m 644 $$p $(CERTSDIR)/$$p ; \ + done +--- ./sbin/Makefile.orig ++++ ./sbin/Makefile +@@ -8,4 +8,5 @@ + clean: + + install: ++ mkdir -p $(DESTDIR)/usr/sbin + install -m755 update-ca-certificates $(DESTDIR)/usr/sbin/ +--- ./Makefile.orig ++++ ./Makefile +@@ -17,7 +17,7 @@ + + install: + for dir in $(SUBDIRS); do \ +- mkdir $(DESTDIR)/$(CERTSDIR)/$$dir; \ ++ mkdir -p $(DESTDIR)/$(CERTSDIR)/$$dir; \ + $(MAKE) -C $$dir install CERTSDIR=$(DESTDIR)/$(CERTSDIR)/$$dir; \ + done + for dir in sbin; do \ +--- ./spi-inc.org/Makefile.orig ++++ ./spi-inc.org/Makefile +@@ -7,6 +7,7 @@ + clean: + + install: ++ mkdir -p $PKG/$(CERTSDIR) + for p in *.crt; do \ + install -m 644 $$p $(CERTSDIR)/$$p ; \ + done diff --git a/patches/source/ca-certificates/patches/fixup_update-ca-certificates.diff b/patches/source/ca-certificates/patches/fixup_update-ca-certificates.diff new file mode 100644 index 00000000..1c394058 --- /dev/null +++ b/patches/source/ca-certificates/patches/fixup_update-ca-certificates.diff @@ -0,0 +1,12 @@ +diff -urN ca-certificates-20150426.orig/sbin/update-ca-certificates ca-certificates-20150426/sbin/update-ca-certificates +--- ca-certificates-20150426.orig/sbin/update-ca-certificates 2015-04-01 13:47:25.000000000 +0100 ++++ ca-certificates-20150426/sbin/update-ca-certificates 2015-09-14 22:51:39.856021883 +0100 +@@ -193,7 +193,7 @@ + echo "Running hooks in $HOOKSDIR..." + VERBOSE_ARG= + [ "$verbose" = 0 ] || VERBOSE_ARG="--verbose" +- eval run-parts "$VERBOSE_ARG" --test -- "$HOOKSDIR" | while read hook ++ eval run-parts "$HOOKSDIR" | while read hook + do + ( cat "$ADDED" + cat "$REMOVED" ) | "$hook" || echo "E: $hook exited with code $?." diff --git a/patches/source/ca-certificates/setup.11.cacerts b/patches/source/ca-certificates/setup.11.cacerts new file mode 100644 index 00000000..328b61c0 --- /dev/null +++ b/patches/source/ca-certificates/setup.11.cacerts @@ -0,0 +1,3 @@ +#!/bin/sh +#BLURB="Rebuild SSL certificate database." +chroot . usr/sbin/update-ca-certificates --fresh 1> /dev/null 2> /dev/null diff --git a/patches/source/ca-certificates/slack-desc b/patches/source/ca-certificates/slack-desc new file mode 100644 index 00000000..c302e828 --- /dev/null +++ b/patches/source/ca-certificates/slack-desc @@ -0,0 +1,19 @@ +# HOW TO EDIT THIS FILE: +# The "handy ruler" below makes it easier to edit a package description. Line +# up the first '|' above the ':' following the base package name, and the '|' +# on the right side marks the last column you can put a character in. You must +# make exactly 11 lines for the formatting to be correct. It's also +# customary to leave one space after the ':'. + + |-----handy-ruler-----------------------------------------------------| +ca-certificates: ca-certificates (PEM Files of CA Certificates) +ca-certificates: +ca-certificates: This package includes PEM files of CA certificates to allow SSL-based +ca-certificates: applications to check for the authenticity of SSL connections. +ca-certificates: +ca-certificates: Homepage: http://packages.qa.debian.org/c/ca-certificates.html +ca-certificates: +ca-certificates: +ca-certificates: +ca-certificates: +ca-certificates: diff --git a/patches/source/curl/cacert-fetch.sh b/patches/source/curl/cacert-fetch.sh new file mode 100755 index 00000000..d0f156e2 --- /dev/null +++ b/patches/source/curl/cacert-fetch.sh @@ -0,0 +1 @@ +lftpget http://curl.haxx.se/ca/cacert.pem && rm cacert.pem.bz2 && bzip2 -9 cacert.pem diff --git a/patches/source/curl/cacert.pem b/patches/source/curl/cacert.pem new file mode 100644 index 00000000..45654c0b --- /dev/null +++ b/patches/source/curl/cacert.pem @@ -0,0 +1,3338 @@ +## +## Bundle of CA Root Certificates +## +## Certificate data from Mozilla as of: Wed Mar 7 04:12:06 2018 GMT +## +## This is a bundle of X.509 certificates of public Certificate Authorities +## (CA). These were automatically extracted from Mozilla's root certificates +## file (certdata.txt). This file can be found in the mozilla source tree: +## https://hg.mozilla.org/releases/mozilla-release/raw-file/default/security/nss/lib/ckfw/builtins/certdata.txt +## +## It contains the certificates in PEM format and therefore +## can be directly used with curl / libcurl / php_curl, or with +## an Apache+mod_ssl webserver for SSL client authentication. +## Just configure this file as the SSLCACertificateFile. +## +## Conversion done with mk-ca-bundle.pl version 1.27. +## SHA256: 704f02707ec6b4c4a7597a8c6039b020def11e64f3ef0605a9c3543d48038a57 +## + + +GlobalSign Root CA +================== +-----BEGIN CERTIFICATE----- +MIIDdTCCAl2gAwIBAgILBAAAAAABFUtaw5QwDQYJKoZIhvcNAQEFBQAwVzELMAkGA1UEBhMCQkUx +GTAXBgNVBAoTEEdsb2JhbFNpZ24gbnYtc2ExEDAOBgNVBAsTB1Jvb3QgQ0ExGzAZBgNVBAMTEkds +b2JhbFNpZ24gUm9vdCBDQTAeFw05ODA5MDExMjAwMDBaFw0yODAxMjgxMjAwMDBaMFcxCzAJBgNV +BAYTAkJFMRkwFwYDVQQKExBHbG9iYWxTaWduIG52LXNhMRAwDgYDVQQLEwdSb290IENBMRswGQYD +VQQDExJHbG9iYWxTaWduIFJvb3QgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDa +DuaZjc6j40+Kfvvxi4Mla+pIH/EqsLmVEQS98GPR4mdmzxzdzxtIK+6NiY6arymAZavpxy0Sy6sc +THAHoT0KMM0VjU/43dSMUBUc71DuxC73/OlS8pF94G3VNTCOXkNz8kHp1Wrjsok6Vjk4bwY8iGlb +Kk3Fp1S4bInMm/k8yuX9ifUSPJJ4ltbcdG6TRGHRjcdGsnUOhugZitVtbNV4FpWi6cgKOOvyJBNP +c1STE4U6G7weNLWLBYy5d4ux2x8gkasJU26Qzns3dLlwR5EiUWMWea6xrkEmCMgZK9FGqkjWZCrX +gzT/LCrBbBlDSgeF59N89iFo7+ryUp9/k5DPAgMBAAGjQjBAMA4GA1UdDwEB/wQEAwIBBjAPBgNV +HRMBAf8EBTADAQH/MB0GA1UdDgQWBBRge2YaRQ2XyolQL30EzTSo//z9SzANBgkqhkiG9w0BAQUF +AAOCAQEA1nPnfE920I2/7LqivjTFKDK1fPxsnCwrvQmeU79rXqoRSLblCKOzyj1hTdNGCbM+w6Dj +Y1Ub8rrvrTnhQ7k4o+YviiY776BQVvnGCv04zcQLcFGUl5gE38NflNUVyRRBnMRddWQVDf9VMOyG +j/8N7yy5Y0b2qvzfvGn9LhJIZJrglfCm7ymPAbEVtQwdpf5pLGkkeB6zpxxxYu7KyJesF12KwvhH +hm4qxFYxldBniYUr+WymXUadDKqC5JlR3XC321Y9YeRq4VzW9v493kHMB65jUr9TU/Qr6cf9tveC +X4XSQRjbgbMEHMUfpIBvFSDJ3gyICh3WZlXi/EjJKSZp4A== +-----END CERTIFICATE----- + +GlobalSign Root CA - R2 +======================= +-----BEGIN CERTIFICATE----- +MIIDujCCAqKgAwIBAgILBAAAAAABD4Ym5g0wDQYJKoZIhvcNAQEFBQAwTDEgMB4GA1UECxMXR2xv +YmFsU2lnbiBSb290IENBIC0gUjIxEzARBgNVBAoTCkdsb2JhbFNpZ24xEzARBgNVBAMTCkdsb2Jh +bFNpZ24wHhcNMDYxMjE1MDgwMDAwWhcNMjExMjE1MDgwMDAwWjBMMSAwHgYDVQQLExdHbG9iYWxT +aWduIFJvb3QgQ0EgLSBSMjETMBEGA1UEChMKR2xvYmFsU2lnbjETMBEGA1UEAxMKR2xvYmFsU2ln +bjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKbPJA6+Lm8omUVCxKs+IVSbC9N/hHD6 +ErPLv4dfxn+G07IwXNb9rfF73OX4YJYJkhD10FPe+3t+c4isUoh7SqbKSaZeqKeMWhG8eoLrvozp +s6yWJQeXSpkqBy+0Hne/ig+1AnwblrjFuTosvNYSuetZfeLQBoZfXklqtTleiDTsvHgMCJiEbKjN +S7SgfQx5TfC4LcshytVsW33hoCmEofnTlEnLJGKRILzdC9XZzPnqJworc5HGnRusyMvo4KD0L5CL +TfuwNhv2GXqF4G3yYROIXJ/gkwpRl4pazq+r1feqCapgvdzZX99yqWATXgAByUr6P6TqBwMhAo6C +ygPCm48CAwEAAaOBnDCBmTAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4E +FgQUm+IHV2ccHsBqBt5ZtJot39wZhi4wNgYDVR0fBC8wLTAroCmgJ4YlaHR0cDovL2NybC5nbG9i +YWxzaWduLm5ldC9yb290LXIyLmNybDAfBgNVHSMEGDAWgBSb4gdXZxwewGoG3lm0mi3f3BmGLjAN +BgkqhkiG9w0BAQUFAAOCAQEAmYFThxxol4aR7OBKuEQLq4GsJ0/WwbgcQ3izDJr86iw8bmEbTUsp +9Z8FHSbBuOmDAGJFtqkIk7mpM0sYmsL4h4hO291xNBrBVNpGP+DTKqttVCL1OmLNIG+6KYnX3ZHu +01yiPqFbQfXf5WRDLenVOavSot+3i9DAgBkcRcAtjOj4LaR0VknFBbVPFd5uRHg5h6h+u/N5GJG7 +9G+dwfCMNYxdAfvDbbnvRG15RjF+Cv6pgsH/76tuIMRQyV+dTZsXjAzlAcmgQWpzU/qlULRuJQ/7 +TBj0/VLZjmmx6BEP3ojY+x1J96relc8geMJgEtslQIxq/H5COEBkEveegeGTLg== +-----END CERTIFICATE----- + +Verisign Class 3 Public Primary Certification Authority - G3 +============================================================ +-----BEGIN CERTIFICATE----- +MIIEGjCCAwICEQCbfgZJoz5iudXukEhxKe9XMA0GCSqGSIb3DQEBBQUAMIHKMQswCQYDVQQGEwJV +UzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlTaWduIFRydXN0IE5ldHdv +cmsxOjA4BgNVBAsTMShjKSAxOTk5IFZlcmlTaWduLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNl +IG9ubHkxRTBDBgNVBAMTPFZlcmlTaWduIENsYXNzIDMgUHVibGljIFByaW1hcnkgQ2VydGlmaWNh +dGlvbiBBdXRob3JpdHkgLSBHMzAeFw05OTEwMDEwMDAwMDBaFw0zNjA3MTYyMzU5NTlaMIHKMQsw +CQYDVQQGEwJVUzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlTaWduIFRy +dXN0IE5ldHdvcmsxOjA4BgNVBAsTMShjKSAxOTk5IFZlcmlTaWduLCBJbmMuIC0gRm9yIGF1dGhv +cml6ZWQgdXNlIG9ubHkxRTBDBgNVBAMTPFZlcmlTaWduIENsYXNzIDMgUHVibGljIFByaW1hcnkg +Q2VydGlmaWNhdGlvbiBBdXRob3JpdHkgLSBHMzCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC +ggEBAMu6nFL8eB8aHm8bN3O9+MlrlBIwT/A2R/XQkQr1F8ilYcEWQE37imGQ5XYgwREGfassbqb1 +EUGO+i2tKmFZpGcmTNDovFJbcCAEWNF6yaRpvIMXZK0Fi7zQWM6NjPXr8EJJC52XJ2cybuGukxUc +cLwgTS8Y3pKI6GyFVxEa6X7jJhFUokWWVYPKMIno3Nij7SqAP395ZVc+FSBmCC+Vk7+qRy+oRpfw +EuL+wgorUeZ25rdGt+INpsyow0xZVYnm6FNcHOqd8GIWC6fJXwzw3sJ2zq/3avL6QaaiMxTJ5Xpj +055iN9WFZZ4O5lMkdBteHRJTW8cs54NJOxWuimi5V5cCAwEAATANBgkqhkiG9w0BAQUFAAOCAQEA +ERSWwauSCPc/L8my/uRan2Te2yFPhpk0djZX3dAVL8WtfxUfN2JzPtTnX84XA9s1+ivbrmAJXx5f +j267Cz3qWhMeDGBvtcC1IyIuBwvLqXTLR7sdwdela8wv0kL9Sd2nic9TutoAWii/gt/4uhMdUIaC +/Y4wjylGsB49Ndo4YhYYSq3mtlFs3q9i6wHQHiT+eo8SGhJouPtmmRQURVyu565pF4ErWjfJXir0 +xuKhXFSbplQAz/DxwceYMBo7Nhbbo27q/a2ywtrvAkcTisDxszGtTxzhT5yvDwyd93gN2PQ1VoDa +t20Xj50egWTh/sVFuq1ruQp6Tk9LhO5L8X3dEQ== +-----END CERTIFICATE----- + +Entrust.net Premium 2048 Secure Server CA +========================================= +-----BEGIN CERTIFICATE----- +MIIEKjCCAxKgAwIBAgIEOGPe+DANBgkqhkiG9w0BAQUFADCBtDEUMBIGA1UEChMLRW50cnVzdC5u +ZXQxQDA+BgNVBAsUN3d3dy5lbnRydXN0Lm5ldC9DUFNfMjA0OCBpbmNvcnAuIGJ5IHJlZi4gKGxp +bWl0cyBsaWFiLikxJTAjBgNVBAsTHChjKSAxOTk5IEVudHJ1c3QubmV0IExpbWl0ZWQxMzAxBgNV +BAMTKkVudHJ1c3QubmV0IENlcnRpZmljYXRpb24gQXV0aG9yaXR5ICgyMDQ4KTAeFw05OTEyMjQx +NzUwNTFaFw0yOTA3MjQxNDE1MTJaMIG0MRQwEgYDVQQKEwtFbnRydXN0Lm5ldDFAMD4GA1UECxQ3 +d3d3LmVudHJ1c3QubmV0L0NQU18yMDQ4IGluY29ycC4gYnkgcmVmLiAobGltaXRzIGxpYWIuKTEl +MCMGA1UECxMcKGMpIDE5OTkgRW50cnVzdC5uZXQgTGltaXRlZDEzMDEGA1UEAxMqRW50cnVzdC5u +ZXQgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgKDIwNDgpMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A +MIIBCgKCAQEArU1LqRKGsuqjIAcVFmQqK0vRvwtKTY7tgHalZ7d4QMBzQshowNtTK91euHaYNZOL +Gp18EzoOH1u3Hs/lJBQesYGpjX24zGtLA/ECDNyrpUAkAH90lKGdCCmziAv1h3edVc3kw37XamSr +hRSGlVuXMlBvPci6Zgzj/L24ScF2iUkZ/cCovYmjZy/Gn7xxGWC4LeksyZB2ZnuU4q941mVTXTzW +nLLPKQP5L6RQstRIzgUyVYr9smRMDuSYB3Xbf9+5CFVghTAp+XtIpGmG4zU/HoZdenoVve8AjhUi +VBcAkCaTvA5JaJG/+EfTnZVCwQ5N328mz8MYIWJmQ3DW1cAH4QIDAQABo0IwQDAOBgNVHQ8BAf8E +BAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUVeSB0RGAvtiJuQijMfmhJAkWuXAwDQYJ +KoZIhvcNAQEFBQADggEBADubj1abMOdTmXx6eadNl9cZlZD7Bh/KM3xGY4+WZiT6QBshJ8rmcnPy +T/4xmf3IDExoU8aAghOY+rat2l098c5u9hURlIIM7j+VrxGrD9cv3h8Dj1csHsm7mhpElesYT6Yf +zX1XEC+bBAlahLVu2B064dae0Wx5XnkcFMXj0EyTO2U87d89vqbllRrDtRnDvV5bu/8j72gZyxKT +J1wDLW8w0B62GqzeWvfRqqgnpv55gcR5mTNXuhKwqeBCbJPKVt7+bYQLCIt+jerXmCHG8+c8eS9e +nNFMFY3h7CI3zJpDC5fcgJCNs2ebb0gIFVbPv/ErfF6adulZkMV8gzURZVE= +-----END CERTIFICATE----- + +Baltimore CyberTrust Root +========================= +-----BEGIN CERTIFICATE----- +MIIDdzCCAl+gAwIBAgIEAgAAuTANBgkqhkiG9w0BAQUFADBaMQswCQYDVQQGEwJJRTESMBAGA1UE +ChMJQmFsdGltb3JlMRMwEQYDVQQLEwpDeWJlclRydXN0MSIwIAYDVQQDExlCYWx0aW1vcmUgQ3li +ZXJUcnVzdCBSb290MB4XDTAwMDUxMjE4NDYwMFoXDTI1MDUxMjIzNTkwMFowWjELMAkGA1UEBhMC +SUUxEjAQBgNVBAoTCUJhbHRpbW9yZTETMBEGA1UECxMKQ3liZXJUcnVzdDEiMCAGA1UEAxMZQmFs +dGltb3JlIEN5YmVyVHJ1c3QgUm9vdDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKME +uyKrmD1X6CZymrV51Cni4eiVgLGw41uOKymaZN+hXe2wCQVt2yguzmKiYv60iNoS6zjrIZ3AQSsB +UnuId9Mcj8e6uYi1agnnc+gRQKfRzMpijS3ljwumUNKoUMMo6vWrJYeKmpYcqWe4PwzV9/lSEy/C +G9VwcPCPwBLKBsua4dnKM3p31vjsufFoREJIE9LAwqSuXmD+tqYF/LTdB1kC1FkYmGP1pWPgkAx9 +XbIGevOF6uvUA65ehD5f/xXtabz5OTZydc93Uk3zyZAsuT3lySNTPx8kmCFcB5kpvcY67Oduhjpr +l3RjM71oGDHweI12v/yejl0qhqdNkNwnGjkCAwEAAaNFMEMwHQYDVR0OBBYEFOWdWTCCR1jMrPoI +VDaGezq1BE3wMBIGA1UdEwEB/wQIMAYBAf8CAQMwDgYDVR0PAQH/BAQDAgEGMA0GCSqGSIb3DQEB +BQUAA4IBAQCFDF2O5G9RaEIFoN27TyclhAO992T9Ldcw46QQF+vaKSm2eT929hkTI7gQCvlYpNRh +cL0EYWoSihfVCr3FvDB81ukMJY2GQE/szKN+OMY3EU/t3WgxjkzSswF07r51XgdIGn9w/xZchMB5 +hbgF/X++ZRGjD8ACtPhSNzkE1akxehi/oCr0Epn3o0WC4zxe9Z2etciefC7IpJ5OCBRLbf1wbWsa +Y71k5h+3zvDyny67G7fyUIhzksLi4xaNmjICq44Y3ekQEe5+NauQrz4wlHrQMz2nZQ/1/I6eYs9H +RCwBXbsdtTLSR9I4LtD+gdwyah617jzV/OeBHRnDJELqYzmp +-----END CERTIFICATE----- + +AddTrust External Root +====================== +-----BEGIN CERTIFICATE----- +MIIENjCCAx6gAwIBAgIBATANBgkqhkiG9w0BAQUFADBvMQswCQYDVQQGEwJTRTEUMBIGA1UEChML +QWRkVHJ1c3QgQUIxJjAkBgNVBAsTHUFkZFRydXN0IEV4dGVybmFsIFRUUCBOZXR3b3JrMSIwIAYD +VQQDExlBZGRUcnVzdCBFeHRlcm5hbCBDQSBSb290MB4XDTAwMDUzMDEwNDgzOFoXDTIwMDUzMDEw +NDgzOFowbzELMAkGA1UEBhMCU0UxFDASBgNVBAoTC0FkZFRydXN0IEFCMSYwJAYDVQQLEx1BZGRU +cnVzdCBFeHRlcm5hbCBUVFAgTmV0d29yazEiMCAGA1UEAxMZQWRkVHJ1c3QgRXh0ZXJuYWwgQ0Eg +Um9vdDCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALf3GjPm8gAELTngTlvtH7xsD821 ++iO2zt6bETOXpClMfZOfvUq8k+0DGuOPz+VtUFrWlymUWoCwSXrbLpX9uMq/NzgtHj6RQa1wVsfw +Tz/oMp50ysiQVOnGXw94nZpAPA6sYapeFI+eh6FqUNzXmk6vBbOmcZSccbNQYArHE504B4YCqOmo +aSYYkKtMsE8jqzpPhNjfzp/haW+710LXa0Tkx63ubUFfclpxCDezeWWkWaCUN/cALw3CknLa0Dhy +2xSoRcRdKn23tNbE7qzNE0S3ySvdQwAl+mG5aWpYIxG3pzOPVnVZ9c0p10a3CitlttNCbxWyuHv7 +7+ldU9U0WicCAwEAAaOB3DCB2TAdBgNVHQ4EFgQUrb2YejS0Jvf6xCZU7wO94CTLVBowCwYDVR0P +BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wgZkGA1UdIwSBkTCBjoAUrb2YejS0Jvf6xCZU7wO94CTL +VBqhc6RxMG8xCzAJBgNVBAYTAlNFMRQwEgYDVQQKEwtBZGRUcnVzdCBBQjEmMCQGA1UECxMdQWRk +VHJ1c3QgRXh0ZXJuYWwgVFRQIE5ldHdvcmsxIjAgBgNVBAMTGUFkZFRydXN0IEV4dGVybmFsIENB +IFJvb3SCAQEwDQYJKoZIhvcNAQEFBQADggEBALCb4IUlwtYj4g+WBpKdQZic2YR5gdkeWxQHIzZl +j7DYd7usQWxHYINRsPkyPef89iYTx4AWpb9a/IfPeHmJIZriTAcKhjW88t5RxNKWt9x+Tu5w/Rw5 +6wwCURQtjr0W4MHfRnXnJK3s9EK0hZNwEGe6nQY1ShjTK3rMUUKhemPR5ruhxSvCNr4TDea9Y355 +e6cJDUCrat2PisP29owaQgVR1EX1n6diIWgVIEM8med8vSTYqZEXc4g/VhsxOBi0cQ+azcgOno4u +G+GMmIPLHzHxREzGBHNJdmAPx/i9F4BrLunMTA5amnkPIAou1Z5jJh5VkpTYghdae9C8x49OhgQ= +-----END CERTIFICATE----- + +Entrust Root Certification Authority +==================================== +-----BEGIN CERTIFICATE----- +MIIEkTCCA3mgAwIBAgIERWtQVDANBgkqhkiG9w0BAQUFADCBsDELMAkGA1UEBhMCVVMxFjAUBgNV +BAoTDUVudHJ1c3QsIEluYy4xOTA3BgNVBAsTMHd3dy5lbnRydXN0Lm5ldC9DUFMgaXMgaW5jb3Jw +b3JhdGVkIGJ5IHJlZmVyZW5jZTEfMB0GA1UECxMWKGMpIDIwMDYgRW50cnVzdCwgSW5jLjEtMCsG +A1UEAxMkRW50cnVzdCBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTA2MTEyNzIwMjM0 +MloXDTI2MTEyNzIwNTM0MlowgbAxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1FbnRydXN0LCBJbmMu +MTkwNwYDVQQLEzB3d3cuZW50cnVzdC5uZXQvQ1BTIGlzIGluY29ycG9yYXRlZCBieSByZWZlcmVu +Y2UxHzAdBgNVBAsTFihjKSAyMDA2IEVudHJ1c3QsIEluYy4xLTArBgNVBAMTJEVudHJ1c3QgUm9v +dCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEB +ALaVtkNC+sZtKm9I35RMOVcF7sN5EUFoNu3s/poBj6E4KPz3EEZmLk0eGrEaTsbRwJWIsMn/MYsz +A9u3g3s+IIRe7bJWKKf44LlAcTfFy0cOlypowCKVYhXbR9n10Cv/gkvJrT7eTNuQgFA/CYqEAOww +Cj0Yzfv9KlmaI5UXLEWeH25DeW0MXJj+SKfFI0dcXv1u5x609mhF0YaDW6KKjbHjKYD+JXGIrb68 +j6xSlkuqUY3kEzEZ6E5Nn9uss2rVvDlUccp6en+Q3X0dgNmBu1kmwhH+5pPi94DkZfs0Nw4pgHBN +rziGLp5/V6+eF67rHMsoIV+2HNjnogQi+dPa2MsCAwEAAaOBsDCBrTAOBgNVHQ8BAf8EBAMCAQYw +DwYDVR0TAQH/BAUwAwEB/zArBgNVHRAEJDAigA8yMDA2MTEyNzIwMjM0MlqBDzIwMjYxMTI3MjA1 +MzQyWjAfBgNVHSMEGDAWgBRokORnpKZTgMeGZqTx90tD+4S9bTAdBgNVHQ4EFgQUaJDkZ6SmU4DH +hmak8fdLQ/uEvW0wHQYJKoZIhvZ9B0EABBAwDhsIVjcuMTo0LjADAgSQMA0GCSqGSIb3DQEBBQUA +A4IBAQCT1DCw1wMgKtD5Y+iRDAUgqV8ZyntyTtSx29CW+1RaGSwMCPeyvIWonX9tO1KzKtvn1ISM +Y/YPyyYBkVBs9F8U4pN0wBOeMDpQ47RgxRzwIkSNcUesyBrJ6ZuaAGAT/3B+XxFNSRuzFVJ7yVTa +v52Vr2ua2J7p8eRDjeIRRDq/r72DQnNSi6q7pynP9WQcCk3RvKqsnyrQ/39/2n3qse0wJcGE2jTS +W3iDVuycNsMm4hH2Z0kdkquM++v/eu6FSqdQgPCnXEqULl8FmTxSQeDNtGPPAUO6nIPcj2A781q0 +tHuu2guQOHXvgR1m0vdXcDazv/wor3ElhVsT/h5/WrQ8 +-----END CERTIFICATE----- + +GeoTrust Global CA +================== +-----BEGIN CERTIFICATE----- +MIIDVDCCAjygAwIBAgIDAjRWMA0GCSqGSIb3DQEBBQUAMEIxCzAJBgNVBAYTAlVTMRYwFAYDVQQK +Ew1HZW9UcnVzdCBJbmMuMRswGQYDVQQDExJHZW9UcnVzdCBHbG9iYWwgQ0EwHhcNMDIwNTIxMDQw +MDAwWhcNMjIwNTIxMDQwMDAwWjBCMQswCQYDVQQGEwJVUzEWMBQGA1UEChMNR2VvVHJ1c3QgSW5j +LjEbMBkGA1UEAxMSR2VvVHJ1c3QgR2xvYmFsIENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB +CgKCAQEA2swYYzD99BcjGlZ+W988bDjkcbd4kdS8odhM+KhDtgPpTSEHCIjaWC9mOSm9BXiLnTjo +BbdqfnGk5sRgprDvgOSJKA+eJdbtg/OtppHHmMlCGDUUna2YRpIuT8rxh0PBFpVXLVDviS2Aelet +8u5fa9IAjbkU+BQVNdnARqN7csiRv8lVK83Qlz6cJmTM386DGXHKTubU1XupGc1V3sjs0l44U+Vc +T4wt/lAjNvxm5suOpDkZALeVAjmRCw7+OC7RHQWa9k0+bw8HHa8sHo9gOeL6NlMTOdReJivbPagU +vTLrGAMoUgRx5aszPeE4uwc2hGKceeoWMPRfwCvocWvk+QIDAQABo1MwUTAPBgNVHRMBAf8EBTAD +AQH/MB0GA1UdDgQWBBTAephojYn7qwVkDBF9qn1luMrMTjAfBgNVHSMEGDAWgBTAephojYn7qwVk +DBF9qn1luMrMTjANBgkqhkiG9w0BAQUFAAOCAQEANeMpauUvXVSOKVCUn5kaFOSPeCpilKInZ57Q +zxpeR+nBsqTP3UEaBU6bS+5Kb1VSsyShNwrrZHYqLizz/Tt1kL/6cdjHPTfStQWVYrmm3ok9Nns4 +d0iXrKYgjy6myQzCsplFAMfOEVEiIuCl6rYVSAlk6l5PdPcFPseKUgzbFbS9bZvlxrFUaKnjaZC2 +mqUPuLk/IH2uSrW4nOQdtqvmlKXBx4Ot2/Unhw4EbNX/3aBd7YdStysVAq45pmp06drE57xNNB6p +XE0zX5IJL4hmXXeXxx12E6nV5fEWCRE11azbJHFwLJhWC9kXtNHjUStedejV0NxPNO3CBWaAocvm +Mw== +-----END CERTIFICATE----- + +GeoTrust Universal CA +===================== +-----BEGIN CERTIFICATE----- +MIIFaDCCA1CgAwIBAgIBATANBgkqhkiG9w0BAQUFADBFMQswCQYDVQQGEwJVUzEWMBQGA1UEChMN +R2VvVHJ1c3QgSW5jLjEeMBwGA1UEAxMVR2VvVHJ1c3QgVW5pdmVyc2FsIENBMB4XDTA0MDMwNDA1 +MDAwMFoXDTI5MDMwNDA1MDAwMFowRTELMAkGA1UEBhMCVVMxFjAUBgNVBAoTDUdlb1RydXN0IElu +Yy4xHjAcBgNVBAMTFUdlb1RydXN0IFVuaXZlcnNhbCBDQTCCAiIwDQYJKoZIhvcNAQEBBQADggIP +ADCCAgoCggIBAKYVVaCjxuAfjJ0hUNfBvitbtaSeodlyWL0AG0y/YckUHUWCq8YdgNY96xCcOq9t +JPi8cQGeBvV8Xx7BDlXKg5pZMK4ZyzBIle0iN430SppyZj6tlcDgFgDgEB8rMQ7XlFTTQjOgNB0e +RXbdT8oYN+yFFXoZCPzVx5zw8qkuEKmS5j1YPakWaDwvdSEYfyh3peFhF7em6fgemdtzbvQKoiFs +7tqqhZJmr/Z6a4LauiIINQ/PQvE1+mrufislzDoR5G2vc7J2Ha3QsnhnGqQ5HFELZ1aD/ThdDc7d +8Lsrlh/eezJS/R27tQahsiFepdaVaH/wmZ7cRQg+59IJDTWU3YBOU5fXtQlEIGQWFwMCTFMNaN7V +qnJNk22CDtucvc+081xdVHppCZbW2xHBjXWotM85yM48vCR85mLK4b19p71XZQvk/iXttmkQ3Cga +Rr0BHdCXteGYO8A3ZNY9lO4L4fUorgtWv3GLIylBjobFS1J72HGrH4oVpjuDWtdYAVHGTEHZf9hB +Z3KiKN9gg6meyHv8U3NyWfWTehd2Ds735VzZC1U0oqpbtWpU5xPKV+yXbfReBi9Fi1jUIxaS5BZu +KGNZMN9QAZxjiRqf2xeUgnA3wySemkfWWspOqGmJch+RbNt+nhutxx9z3SxPGWX9f5NAEC7S8O08 +ni4oPmkmM8V7AgMBAAGjYzBhMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYEFNq7LqqwDLiIJlF0 +XG0D08DYj3rWMB8GA1UdIwQYMBaAFNq7LqqwDLiIJlF0XG0D08DYj3rWMA4GA1UdDwEB/wQEAwIB +hjANBgkqhkiG9w0BAQUFAAOCAgEAMXjmx7XfuJRAyXHEqDXsRh3ChfMoWIawC/yOsjmPRFWrZIRc +aanQmjg8+uUfNeVE44B5lGiku8SfPeE0zTBGi1QrlaXv9z+ZhP015s8xxtxqv6fXIwjhmF7DWgh2 +qaavdy+3YL1ERmrvl/9zlcGO6JP7/TG37FcREUWbMPEaiDnBTzynANXH/KttgCJwpQzgXQQpAvvL +oJHRfNbDflDVnVi+QTjruXU8FdmbyUqDWcDaU/0zuzYYm4UPFd3uLax2k7nZAY1IEKj79TiG8dsK +xr2EoyNB3tZ3b4XUhRxQ4K5RirqNPnbiucon8l+f725ZDQbYKxek0nxru18UGkiPGkzns0ccjkxF +KyDuSN/n3QmOGKjaQI2SJhFTYXNd673nxE0pN2HrrDktZy4W1vUAg4WhzH92xH3kt0tm7wNFYGm2 +DFKWkoRepqO1pD4r2czYG0eq8kTaT/kD6PAUyz/zg97QwVTjt+gKN02LIFkDMBmhLMi9ER/frslK +xfMnZmaGrGiR/9nmUxwPi1xpZQomyB40w11Re9epnAahNt3ViZS82eQtDF4JbAiXfKM9fJP/P6EU +p8+1Xevb2xzEdt+Iub1FBZUbrvxGakyvSOPOrg/SfuvmbJxPgWp6ZKy7PtXny3YuxadIwVyQD8vI +P/rmMuGNG2+k5o7Y+SlIis5z/iw= +-----END CERTIFICATE----- + +GeoTrust Universal CA 2 +======================= +-----BEGIN CERTIFICATE----- +MIIFbDCCA1SgAwIBAgIBATANBgkqhkiG9w0BAQUFADBHMQswCQYDVQQGEwJVUzEWMBQGA1UEChMN +R2VvVHJ1c3QgSW5jLjEgMB4GA1UEAxMXR2VvVHJ1c3QgVW5pdmVyc2FsIENBIDIwHhcNMDQwMzA0 +MDUwMDAwWhcNMjkwMzA0MDUwMDAwWjBHMQswCQYDVQQGEwJVUzEWMBQGA1UEChMNR2VvVHJ1c3Qg +SW5jLjEgMB4GA1UEAxMXR2VvVHJ1c3QgVW5pdmVyc2FsIENBIDIwggIiMA0GCSqGSIb3DQEBAQUA +A4ICDwAwggIKAoICAQCzVFLByT7y2dyxUxpZKeexw0Uo5dfR7cXFS6GqdHtXr0om/Nj1XqduGdt0 +DE81WzILAePb63p3NeqqWuDW6KFXlPCQo3RWlEQwAx5cTiuFJnSCegx2oG9NzkEtoBUGFF+3Qs17 +j1hhNNwqCPkuwwGmIkQcTAeC5lvO0Ep8BNMZcyfwqph/Lq9O64ceJHdqXbboW0W63MOhBW9Wjo8Q +JqVJwy7XQYci4E+GymC16qFjwAGXEHm9ADwSbSsVsaxLse4YuU6W3Nx2/zu+z18DwPw76L5GG//a +QMJS9/7jOvdqdzXQ2o3rXhhqMcceujwbKNZrVMaqW9eiLBsZzKIC9ptZvTdrhrVtgrrY6slWvKk2 +WP0+GfPtDCapkzj4T8FdIgbQl+rhrcZV4IErKIM6+vR7IVEAvlI4zs1meaj0gVbi0IMJR1FbUGrP +20gaXT73y/Zl92zxlfgCOzJWgjl6W70viRu/obTo/3+NjN8D8WBOWBFM66M/ECuDmgFz2ZRthAAn +ZqzwcEAJQpKtT5MNYQlRJNiS1QuUYbKHsu3/mjX/hVTK7URDrBs8FmtISgocQIgfksILAAX/8sgC +SqSqqcyZlpwvWOB94b67B9xfBHJcMTTD7F8t4D1kkCLm0ey4Lt1ZrtmhN79UNdxzMk+MBB4zsslG +8dhcyFVQyWi9qLo2CQIDAQABo2MwYTAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBR281Xh+qQ2 ++/CfXGJx7Tz0RzgQKzAfBgNVHSMEGDAWgBR281Xh+qQ2+/CfXGJx7Tz0RzgQKzAOBgNVHQ8BAf8E +BAMCAYYwDQYJKoZIhvcNAQEFBQADggIBAGbBxiPz2eAubl/oz66wsCVNK/g7WJtAJDday6sWSf+z +dXkzoS9tcBc0kf5nfo/sm+VegqlVHy/c1FEHEv6sFj4sNcZj/NwQ6w2jqtB8zNHQL1EuxBRa3ugZ +4T7GzKQp5y6EqgYweHZUcyiYWTjgAA1i00J9IZ+uPTqM1fp3DRgrFg5fNuH8KrUwJM/gYwx7WBr+ +mbpCErGR9Hxo4sjoryzqyX6uuyo9DRXcNJW2GHSoag/HtPQTxORb7QrSpJdMKu0vbBKJPfEncKpq +A1Ihn0CoZ1Dy81of398j9tx4TuaYT1U6U+Pv8vSfx3zYWK8pIpe44L2RLrB27FcRz+8pRPPphXpg +Y+RdM4kX2TGq2tbzGDVyz4crL2MjhF2EjD9XoIj8mZEoJmmZ1I+XRL6O1UixpCgp8RW04eWe3fiP +pm8m1wk8OhwRDqZsN/etRIcsKMfYdIKz0G9KV7s1KSegi+ghp4dkNl3M2Basx7InQJJVOCiNUW7d +FGdTbHFcJoRNdVq2fmBWqU2t+5sel/MN2dKXVHfaPRK34B7vCAas+YWH6aLcr34YEoP9VhdBLtUp +gn2Z9DH2canPLAEnpQW5qrJITirvn5NSUZU8UnOOVkwXQMAJKOSLakhT2+zNVVXxxvjpoixMptEm +X36vWkzaH6byHCx+rgIW0lbQL1dTR+iS +-----END CERTIFICATE----- + +Visa eCommerce Root +=================== +-----BEGIN CERTIFICATE----- +MIIDojCCAoqgAwIBAgIQE4Y1TR0/BvLB+WUF1ZAcYjANBgkqhkiG9w0BAQUFADBrMQswCQYDVQQG +EwJVUzENMAsGA1UEChMEVklTQTEvMC0GA1UECxMmVmlzYSBJbnRlcm5hdGlvbmFsIFNlcnZpY2Ug +QXNzb2NpYXRpb24xHDAaBgNVBAMTE1Zpc2EgZUNvbW1lcmNlIFJvb3QwHhcNMDIwNjI2MDIxODM2 +WhcNMjIwNjI0MDAxNjEyWjBrMQswCQYDVQQGEwJVUzENMAsGA1UEChMEVklTQTEvMC0GA1UECxMm +VmlzYSBJbnRlcm5hdGlvbmFsIFNlcnZpY2UgQXNzb2NpYXRpb24xHDAaBgNVBAMTE1Zpc2EgZUNv +bW1lcmNlIFJvb3QwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCvV95WHm6h2mCxlCfL +F9sHP4CFT8icttD0b0/Pmdjh28JIXDqsOTPHH2qLJj0rNfVIsZHBAk4ElpF7sDPwsRROEW+1QK8b +RaVK7362rPKgH1g/EkZgPI2h4H3PVz4zHvtH8aoVlwdVZqW1LS7YgFmypw23RuwhY/81q6UCzyr0 +TP579ZRdhE2o8mCP2w4lPJ9zcc+U30rq299yOIzzlr3xF7zSujtFWsan9sYXiwGd/BmoKoMWuDpI +/k4+oKsGGelT84ATB+0tvz8KPFUgOSwsAGl0lUq8ILKpeeUYiZGo3BxN77t+Nwtd/jmliFKMAGzs +GHxBvfaLdXe6YJ2E5/4tAgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEG +MB0GA1UdDgQWBBQVOIMPPyw/cDMezUb+B4wg4NfDtzANBgkqhkiG9w0BAQUFAAOCAQEAX/FBfXxc +CLkr4NWSR/pnXKUTwwMhmytMiUbPWU3J/qVAtmPN3XEolWcRzCSs00Rsca4BIGsDoo8Ytyk6feUW +YFN4PMCvFYP3j1IzJL1kk5fui/fbGKhtcbP3LBfQdCVp9/5rPJS+TUtBjE7ic9DjkCJzQ83z7+pz +zkWKsKZJ/0x9nXGIxHYdkFsd7v3M9+79YKWxehZx0RbQfBI8bGmX265fOZpwLwU8GUYEmSA20GBu +YQa7FkKMcPcw++DbZqMAAb3mLNqRX6BGi01qnD093QVG/na/oAo85ADmJ7f/hC3euiInlhBx6yLt +398znM/jra6O1I7mT1GvFpLgXPYHDw== +-----END CERTIFICATE----- + +Comodo AAA Services root +======================== +-----BEGIN CERTIFICATE----- +MIIEMjCCAxqgAwIBAgIBATANBgkqhkiG9w0BAQUFADB7MQswCQYDVQQGEwJHQjEbMBkGA1UECAwS +R3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHDAdTYWxmb3JkMRowGAYDVQQKDBFDb21vZG8gQ0Eg +TGltaXRlZDEhMB8GA1UEAwwYQUFBIENlcnRpZmljYXRlIFNlcnZpY2VzMB4XDTA0MDEwMTAwMDAw +MFoXDTI4MTIzMTIzNTk1OVowezELMAkGA1UEBhMCR0IxGzAZBgNVBAgMEkdyZWF0ZXIgTWFuY2hl +c3RlcjEQMA4GA1UEBwwHU2FsZm9yZDEaMBgGA1UECgwRQ29tb2RvIENBIExpbWl0ZWQxITAfBgNV +BAMMGEFBQSBDZXJ0aWZpY2F0ZSBTZXJ2aWNlczCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC +ggEBAL5AnfRu4ep2hxxNRUSOvkbIgwadwSr+GB+O5AL686tdUIoWMQuaBtDFcCLNSS1UY8y2bmhG +C1Pqy0wkwLxyTurxFa70VJoSCsN6sjNg4tqJVfMiWPPe3M/vg4aijJRPn2jymJBGhCfHdr/jzDUs +i14HZGWCwEiwqJH5YZ92IFCokcdmtet4YgNW8IoaE+oxox6gmf049vYnMlhvB/VruPsUK6+3qszW +Y19zjNoFmag4qMsXeDZRrOme9Hg6jc8P2ULimAyrL58OAd7vn5lJ8S3frHRNG5i1R8XlKdH5kBjH +Ypy+g8cmez6KJcfA3Z3mNWgQIJ2P2N7Sw4ScDV7oL8kCAwEAAaOBwDCBvTAdBgNVHQ4EFgQUoBEK +Iz6W8Qfs4q8p74Klf9AwpLQwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wewYDVR0f +BHQwcjA4oDagNIYyaHR0cDovL2NybC5jb21vZG9jYS5jb20vQUFBQ2VydGlmaWNhdGVTZXJ2aWNl +cy5jcmwwNqA0oDKGMGh0dHA6Ly9jcmwuY29tb2RvLm5ldC9BQUFDZXJ0aWZpY2F0ZVNlcnZpY2Vz +LmNybDANBgkqhkiG9w0BAQUFAAOCAQEACFb8AvCb6P+k+tZ7xkSAzk/ExfYAWMymtrwUSWgEdujm +7l3sAg9g1o1QGE8mTgHj5rCl7r+8dFRBv/38ErjHT1r0iWAFf2C3BUrz9vHCv8S5dIa2LX1rzNLz +Rt0vxuBqw8M0Ayx9lt1awg6nCpnBBYurDC/zXDrPbDdVCYfeU0BsWO/8tqtlbgT2G9w84FoVxp7Z +8VlIMCFlA2zs6SFz7JsDoeA3raAVGI/6ugLOpyypEBMs1OUIJqsil2D4kF501KKaU73yqWjgom7C +12yxow+ev+to51byrvLjKzg6CYG1a4XXvi3tPxq3smPi9WIsgtRqAEFQ8TmDn5XpNpaYbg== +-----END CERTIFICATE----- + +QuoVadis Root CA +================ +-----BEGIN CERTIFICATE----- +MIIF0DCCBLigAwIBAgIEOrZQizANBgkqhkiG9w0BAQUFADB/MQswCQYDVQQGEwJCTTEZMBcGA1UE +ChMQUXVvVmFkaXMgTGltaXRlZDElMCMGA1UECxMcUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0 +eTEuMCwGA1UEAxMlUXVvVmFkaXMgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0wMTAz +MTkxODMzMzNaFw0yMTAzMTcxODMzMzNaMH8xCzAJBgNVBAYTAkJNMRkwFwYDVQQKExBRdW9WYWRp +cyBMaW1pdGVkMSUwIwYDVQQLExxSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MS4wLAYDVQQD +EyVRdW9WYWRpcyBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIIBIjANBgkqhkiG9w0BAQEF +AAOCAQ8AMIIBCgKCAQEAv2G1lVO6V/z68mcLOhrfEYBklbTRvM16z/Ypli4kVEAkOPcahdxYTMuk +J0KX0J+DisPkBgNbAKVRHnAEdOLB1Dqr1607BxgFjv2DrOpm2RgbaIr1VxqYuvXtdj182d6UajtL +F8HVj71lODqV0D1VNk7feVcxKh7YWWVJWCCYfqtffp/p1k3sg3Spx2zY7ilKhSoGFPlU5tPaZQeL +YzcS19Dsw3sgQUSj7cugF+FxZc4dZjH3dgEZyH0DWLaVSR2mEiboxgx24ONmy+pdpibu5cxfvWen +AScOospUxbF6lR1xHkopigPcakXBpBlebzbNw6Kwt/5cOOJSvPhEQ+aQuwIDAQABo4ICUjCCAk4w +PQYIKwYBBQUHAQEEMTAvMC0GCCsGAQUFBzABhiFodHRwczovL29jc3AucXVvdmFkaXNvZmZzaG9y +ZS5jb20wDwYDVR0TAQH/BAUwAwEB/zCCARoGA1UdIASCAREwggENMIIBCQYJKwYBBAG+WAABMIH7 +MIHUBggrBgEFBQcCAjCBxxqBxFJlbGlhbmNlIG9uIHRoZSBRdW9WYWRpcyBSb290IENlcnRpZmlj +YXRlIGJ5IGFueSBwYXJ0eSBhc3N1bWVzIGFjY2VwdGFuY2Ugb2YgdGhlIHRoZW4gYXBwbGljYWJs +ZSBzdGFuZGFyZCB0ZXJtcyBhbmQgY29uZGl0aW9ucyBvZiB1c2UsIGNlcnRpZmljYXRpb24gcHJh +Y3RpY2VzLCBhbmQgdGhlIFF1b1ZhZGlzIENlcnRpZmljYXRlIFBvbGljeS4wIgYIKwYBBQUHAgEW +Fmh0dHA6Ly93d3cucXVvdmFkaXMuYm0wHQYDVR0OBBYEFItLbe3TKbkGGew5Oanwl4Rqy+/fMIGu +BgNVHSMEgaYwgaOAFItLbe3TKbkGGew5Oanwl4Rqy+/foYGEpIGBMH8xCzAJBgNVBAYTAkJNMRkw +FwYDVQQKExBRdW9WYWRpcyBMaW1pdGVkMSUwIwYDVQQLExxSb290IENlcnRpZmljYXRpb24gQXV0 +aG9yaXR5MS4wLAYDVQQDEyVRdW9WYWRpcyBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5ggQ6 +tlCLMA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQUFAAOCAQEAitQUtf70mpKnGdSkfnIYj9lo +fFIk3WdvOXrEql494liwTXCYhGHoG+NpGA7O+0dQoE7/8CQfvbLO9Sf87C9TqnN7Az10buYWnuul +LsS/VidQK2K6vkscPFVcQR0kvoIgR13VRH56FmjffU1RcHhXHTMe/QKZnAzNCgVPx7uOpHX6Sm2x +gI4JVrmcGmD+XcHXetwReNDWXcG31a0ymQM6isxUJTkxgXsTIlG6Rmyhu576BGxJJnSP0nPrzDCi +5upZIof4l/UO/erMkqQWxFIY6iHOsfHmhIHluqmGKPJDWl0Snawe2ajlCmqnf6CHKc/yiU3U7MXi +5nrQNiOKSnQ2+Q== +-----END CERTIFICATE----- + +QuoVadis Root CA 2 +================== +-----BEGIN CERTIFICATE----- +MIIFtzCCA5+gAwIBAgICBQkwDQYJKoZIhvcNAQEFBQAwRTELMAkGA1UEBhMCQk0xGTAXBgNVBAoT +EFF1b1ZhZGlzIExpbWl0ZWQxGzAZBgNVBAMTElF1b1ZhZGlzIFJvb3QgQ0EgMjAeFw0wNjExMjQx +ODI3MDBaFw0zMTExMjQxODIzMzNaMEUxCzAJBgNVBAYTAkJNMRkwFwYDVQQKExBRdW9WYWRpcyBM +aW1pdGVkMRswGQYDVQQDExJRdW9WYWRpcyBSb290IENBIDIwggIiMA0GCSqGSIb3DQEBAQUAA4IC +DwAwggIKAoICAQCaGMpLlA0ALa8DKYrwD4HIrkwZhR0In6spRIXzL4GtMh6QRr+jhiYaHv5+HBg6 +XJxgFyo6dIMzMH1hVBHL7avg5tKifvVrbxi3Cgst/ek+7wrGsxDp3MJGF/hd/aTa/55JWpzmM+Yk +lvc/ulsrHHo1wtZn/qtmUIttKGAr79dgw8eTvI02kfN/+NsRE8Scd3bBrrcCaoF6qUWD4gXmuVbB +lDePSHFjIuwXZQeVikvfj8ZaCuWw419eaxGrDPmF60Tp+ARz8un+XJiM9XOva7R+zdRcAitMOeGy +lZUtQofX1bOQQ7dsE/He3fbE+Ik/0XX1ksOR1YqI0JDs3G3eicJlcZaLDQP9nL9bFqyS2+r+eXyt +66/3FsvbzSUr5R/7mp/iUcw6UwxI5g69ybR2BlLmEROFcmMDBOAENisgGQLodKcftslWZvB1Jdxn +wQ5hYIizPtGo/KPaHbDRsSNU30R2be1B2MGyIrZTHN81Hdyhdyox5C315eXbyOD/5YDXC2Og/zOh +D7osFRXql7PSorW+8oyWHhqPHWykYTe5hnMz15eWniN9gqRMgeKh0bpnX5UHoycR7hYQe7xFSkyy +BNKr79X9DFHOUGoIMfmR2gyPZFwDwzqLID9ujWc9Otb+fVuIyV77zGHcizN300QyNQliBJIWENie +J0f7OyHj+OsdWwIDAQABo4GwMIGtMA8GA1UdEwEB/wQFMAMBAf8wCwYDVR0PBAQDAgEGMB0GA1Ud +DgQWBBQahGK8SEwzJQTU7tD2A8QZRtGUazBuBgNVHSMEZzBlgBQahGK8SEwzJQTU7tD2A8QZRtGU +a6FJpEcwRTELMAkGA1UEBhMCQk0xGTAXBgNVBAoTEFF1b1ZhZGlzIExpbWl0ZWQxGzAZBgNVBAMT +ElF1b1ZhZGlzIFJvb3QgQ0EgMoICBQkwDQYJKoZIhvcNAQEFBQADggIBAD4KFk2fBluornFdLwUv +Z+YTRYPENvbzwCYMDbVHZF34tHLJRqUDGCdViXh9duqWNIAXINzng/iN/Ae42l9NLmeyhP3ZRPx3 +UIHmfLTJDQtyU/h2BwdBR5YM++CCJpNVjP4iH2BlfF/nJrP3MpCYUNQ3cVX2kiF495V5+vgtJodm +VjB3pjd4M1IQWK4/YY7yarHvGH5KWWPKjaJW1acvvFYfzznB4vsKqBUsfU16Y8Zsl0Q80m/DShcK ++JDSV6IZUaUtl0HaB0+pUNqQjZRG4T7wlP0QADj1O+hA4bRuVhogzG9Yje0uRY/W6ZM/57Es3zrW +IozchLsib9D45MY56QSIPMO661V6bYCZJPVsAfv4l7CUW+v90m/xd2gNNWQjrLhVoQPRTUIZ3Ph1 +WVaj+ahJefivDrkRoHy3au000LYmYjgahwz46P0u05B/B5EqHdZ+XIWDmbA4CD/pXvk1B+TJYm5X +f6dQlfe6yJvmjqIBxdZmv3lh8zwc4bmCXF2gw+nYSL0ZohEUGW6yhhtoPkg3Goi3XZZenMfvJ2II +4pEZXNLxId26F0KCl3GBUzGpn/Z9Yr9y4aOTHcyKJloJONDO1w2AFrR4pTqHTI2KpdVGl/IsELm8 +VCLAAVBpQ570su9t+Oza8eOx79+Rj1QqCyXBJhnEUhAFZdWCEOrCMc0u +-----END CERTIFICATE----- + +QuoVadis Root CA 3 +================== +-----BEGIN CERTIFICATE----- +MIIGnTCCBIWgAwIBAgICBcYwDQYJKoZIhvcNAQEFBQAwRTELMAkGA1UEBhMCQk0xGTAXBgNVBAoT +EFF1b1ZhZGlzIExpbWl0ZWQxGzAZBgNVBAMTElF1b1ZhZGlzIFJvb3QgQ0EgMzAeFw0wNjExMjQx +OTExMjNaFw0zMTExMjQxOTA2NDRaMEUxCzAJBgNVBAYTAkJNMRkwFwYDVQQKExBRdW9WYWRpcyBM +aW1pdGVkMRswGQYDVQQDExJRdW9WYWRpcyBSb290IENBIDMwggIiMA0GCSqGSIb3DQEBAQUAA4IC +DwAwggIKAoICAQDMV0IWVJzmmNPTTe7+7cefQzlKZbPoFog02w1ZkXTPkrgEQK0CSzGrvI2RaNgg +DhoB4hp7Thdd4oq3P5kazethq8Jlph+3t723j/z9cI8LoGe+AaJZz3HmDyl2/7FWeUUrH556VOij +KTVopAFPD6QuN+8bv+OPEKhyq1hX51SGyMnzW9os2l2ObjyjPtr7guXd8lyyBTNvijbO0BNO/79K +DDRMpsMhvVAEVeuxu537RR5kFd5VAYwCdrXLoT9CabwvvWhDFlaJKjdhkf2mrk7AyxRllDdLkgbv +BNDInIjbC3uBr7E9KsRlOni27tyAsdLTmZw67mtaa7ONt9XOnMK+pUsvFrGeaDsGb659n/je7Mwp +p5ijJUMv7/FfJuGITfhebtfZFG4ZM2mnO4SJk8RTVROhUXhA+LjJou57ulJCg54U7QVSWllWp5f8 +nT8KKdjcT5EOE7zelaTfi5m+rJsziO+1ga8bxiJTyPbH7pcUsMV8eFLI8M5ud2CEpukqdiDtWAEX +MJPpGovgc2PZapKUSU60rUqFxKMiMPwJ7Wgic6aIDFUhWMXhOp8q3crhkODZc6tsgLjoC2SToJyM +Gf+z0gzskSaHirOi4XCPLArlzW1oUevaPwV/izLmE1xr/l9A4iLItLRkT9a6fUg+qGkM17uGcclz +uD87nSVL2v9A6wIDAQABo4IBlTCCAZEwDwYDVR0TAQH/BAUwAwEB/zCB4QYDVR0gBIHZMIHWMIHT +BgkrBgEEAb5YAAMwgcUwgZMGCCsGAQUFBwICMIGGGoGDQW55IHVzZSBvZiB0aGlzIENlcnRpZmlj +YXRlIGNvbnN0aXR1dGVzIGFjY2VwdGFuY2Ugb2YgdGhlIFF1b1ZhZGlzIFJvb3QgQ0EgMyBDZXJ0 +aWZpY2F0ZSBQb2xpY3kgLyBDZXJ0aWZpY2F0aW9uIFByYWN0aWNlIFN0YXRlbWVudC4wLQYIKwYB +BQUHAgEWIWh0dHA6Ly93d3cucXVvdmFkaXNnbG9iYWwuY29tL2NwczALBgNVHQ8EBAMCAQYwHQYD +VR0OBBYEFPLAE+CCQz777i9nMpY1XNu4ywLQMG4GA1UdIwRnMGWAFPLAE+CCQz777i9nMpY1XNu4 +ywLQoUmkRzBFMQswCQYDVQQGEwJCTTEZMBcGA1UEChMQUXVvVmFkaXMgTGltaXRlZDEbMBkGA1UE +AxMSUXVvVmFkaXMgUm9vdCBDQSAzggIFxjANBgkqhkiG9w0BAQUFAAOCAgEAT62gLEz6wPJv92ZV +qyM07ucp2sNbtrCD2dDQ4iH782CnO11gUyeim/YIIirnv6By5ZwkajGxkHon24QRiSemd1o417+s +hvzuXYO8BsbRd2sPbSQvS3pspweWyuOEn62Iix2rFo1bZhfZFvSLgNLd+LJ2w/w4E6oM3kJpK27z +POuAJ9v1pkQNn1pVWQvVDVJIxa6f8i+AxeoyUDUSly7B4f/xI4hROJ/yZlZ25w9Rl6VSDE1JUZU2 +Pb+iSwwQHYaZTKrzchGT5Or2m9qoXadNt54CrnMAyNojA+j56hl0YgCUyyIgvpSnWbWCar6ZeXqp +8kokUvd0/bpO5qgdAm6xDYBEwa7TIzdfu4V8K5Iu6H6li92Z4b8nby1dqnuH/grdS/yO9SbkbnBC +bjPsMZ57k8HkyWkaPcBrTiJt7qtYTcbQQcEr6k8Sh17rRdhs9ZgC06DYVYoGmRmioHfRMJ6szHXu +g/WwYjnPbFfiTNKRCw51KBuav/0aQ/HKd/s7j2G4aSgWQgRecCocIdiP4b0jWy10QJLZYxkNc91p +vGJHvOB0K7Lrfb5BG7XARsWhIstfTsEokt4YutUqKLsRixeTmJlglFwjz1onl14LBQaTNx47aTbr +qZ5hHY8y2o4M1nQ+ewkk2gF3R8Q7zTSMmfXK4SVhM7JZG+Ju1zdXtg2pEto= +-----END CERTIFICATE----- + +Security Communication Root CA +============================== +-----BEGIN CERTIFICATE----- +MIIDWjCCAkKgAwIBAgIBADANBgkqhkiG9w0BAQUFADBQMQswCQYDVQQGEwJKUDEYMBYGA1UEChMP +U0VDT00gVHJ1c3QubmV0MScwJQYDVQQLEx5TZWN1cml0eSBDb21tdW5pY2F0aW9uIFJvb3RDQTEw +HhcNMDMwOTMwMDQyMDQ5WhcNMjMwOTMwMDQyMDQ5WjBQMQswCQYDVQQGEwJKUDEYMBYGA1UEChMP +U0VDT00gVHJ1c3QubmV0MScwJQYDVQQLEx5TZWN1cml0eSBDb21tdW5pY2F0aW9uIFJvb3RDQTEw +ggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCzs/5/022x7xZ8V6UMbXaKL0u/ZPtM7orw +8yl89f/uKuDp6bpbZCKamm8sOiZpUQWZJtzVHGpxxpp9Hp3dfGzGjGdnSj74cbAZJ6kJDKaVv0uM +DPpVmDvY6CKhS3E4eayXkmmziX7qIWgGmBSWh9JhNrxtJ1aeV+7AwFb9Ms+k2Y7CI9eNqPPYJayX +5HA49LY6tJ07lyZDo6G8SVlyTCMwhwFY9k6+HGhWZq/NQV3Is00qVUarH9oe4kA92819uZKAnDfd +DJZkndwi92SL32HeFZRSFaB9UslLqCHJxrHty8OVYNEP8Ktw+N/LTX7s1vqr2b1/VPKl6Xn62dZ2 +JChzAgMBAAGjPzA9MB0GA1UdDgQWBBSgc0mZaNyFW2XjmygvV5+9M7wHSDALBgNVHQ8EBAMCAQYw +DwYDVR0TAQH/BAUwAwEB/zANBgkqhkiG9w0BAQUFAAOCAQEAaECpqLvkT115swW1F7NgE+vGkl3g +0dNq/vu+m22/xwVtWSDEHPC32oRYAmP6SBbvT6UL90qY8j+eG61Ha2POCEfrUj94nK9NrvjVT8+a +mCoQQTlSxN3Zmw7vkwGusi7KaEIkQmywszo+zenaSMQVy+n5Bw+SUEmK3TGXX8npN6o7WWWXlDLJ +s58+OmJYxUmtYg5xpTKqL8aJdkNAExNnPaJUJRDL8Try2frbSVa7pv6nQTXD4IhhyYjH3zYQIphZ +6rBK+1YWc26sTfcioU+tHXotRSflMMFe8toTyyVCUZVHA4xsIcx0Qu1T/zOLjw9XARYvz6buyXAi +FL39vmwLAw== +-----END CERTIFICATE----- + +Sonera Class 2 Root CA +====================== +-----BEGIN CERTIFICATE----- +MIIDIDCCAgigAwIBAgIBHTANBgkqhkiG9w0BAQUFADA5MQswCQYDVQQGEwJGSTEPMA0GA1UEChMG +U29uZXJhMRkwFwYDVQQDExBTb25lcmEgQ2xhc3MyIENBMB4XDTAxMDQwNjA3Mjk0MFoXDTIxMDQw +NjA3Mjk0MFowOTELMAkGA1UEBhMCRkkxDzANBgNVBAoTBlNvbmVyYTEZMBcGA1UEAxMQU29uZXJh +IENsYXNzMiBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAJAXSjWdyvANlsdE+hY3 +/Ei9vX+ALTU74W+oZ6m/AxxNjG8yR9VBaKQTBME1DJqEQ/xcHf+Js+gXGM2RX/uJ4+q/Tl18GybT +dXnt5oTjV+WtKcT0OijnpXuENmmz/V52vaMtmdOQTiMofRhj8VQ7Jp12W5dCsv+u8E7s3TmVToMG +f+dJQMjFAbJUWmYdPfz56TwKnoG4cPABi+QjVHzIrviQHgCWctRUz2EjvOr7nQKV0ba5cTppCD8P +tOFCx4j1P5iop7oc4HFx71hXgVB6XGt0Rg6DA5jDjqhu8nYybieDwnPz3BjotJPqdURrBGAgcVeH +nfO+oJAjPYok4doh28MCAwEAAaMzMDEwDwYDVR0TAQH/BAUwAwEB/zARBgNVHQ4ECgQISqCqWITT +XjwwCwYDVR0PBAQDAgEGMA0GCSqGSIb3DQEBBQUAA4IBAQBazof5FnIVV0sd2ZvnoiYw7JNn39Yt +0jSv9zilzqsWuasvfDXLrNAPtEwr/IDva4yRXzZ299uzGxnq9LIR/WFxRL8oszodv7ND6J+/3DEI +cbCdjdY0RzKQxmUk96BKfARzjzlvF4xytb1LyHr4e4PDKE6cCepnP7JnBBvDFNr450kkkdAdavph +Oe9r5yF1BgfYErQhIHBCcYHaPJo2vqZbDWpsmh+Re/n570K6Tk6ezAyNlNzZRZxe7EJQY670XcSx +EtzKO6gunRRaBXW37Ndj4ro1tgQIkejanZz2ZrUYrAqmVCY0M9IbwdR/GjqOC6oybtv8TyWf2TLH +llpwrN9M +-----END CERTIFICATE----- + +XRamp Global CA Root +==================== +-----BEGIN CERTIFICATE----- +MIIEMDCCAxigAwIBAgIQUJRs7Bjq1ZxN1ZfvdY+grTANBgkqhkiG9w0BAQUFADCBgjELMAkGA1UE +BhMCVVMxHjAcBgNVBAsTFXd3dy54cmFtcHNlY3VyaXR5LmNvbTEkMCIGA1UEChMbWFJhbXAgU2Vj +dXJpdHkgU2VydmljZXMgSW5jMS0wKwYDVQQDEyRYUmFtcCBHbG9iYWwgQ2VydGlmaWNhdGlvbiBB +dXRob3JpdHkwHhcNMDQxMTAxMTcxNDA0WhcNMzUwMTAxMDUzNzE5WjCBgjELMAkGA1UEBhMCVVMx +HjAcBgNVBAsTFXd3dy54cmFtcHNlY3VyaXR5LmNvbTEkMCIGA1UEChMbWFJhbXAgU2VjdXJpdHkg +U2VydmljZXMgSW5jMS0wKwYDVQQDEyRYUmFtcCBHbG9iYWwgQ2VydGlmaWNhdGlvbiBBdXRob3Jp +dHkwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCYJB69FbS638eMpSe2OAtp87ZOqCwu +IR1cRN8hXX4jdP5efrRKt6atH67gBhbim1vZZ3RrXYCPKZ2GG9mcDZhtdhAoWORlsH9KmHmf4MMx +foArtYzAQDsRhtDLooY2YKTVMIJt2W7QDxIEM5dfT2Fa8OT5kavnHTu86M/0ay00fOJIYRyO82FE +zG+gSqmUsE3a56k0enI4qEHMPJQRfevIpoy3hsvKMzvZPTeL+3o+hiznc9cKV6xkmxnr9A8ECIqs +AxcZZPRaJSKNNCyy9mgdEm3Tih4U2sSPpuIjhdV6Db1q4Ons7Be7QhtnqiXtRYMh/MHJfNViPvry +xS3T/dRlAgMBAAGjgZ8wgZwwEwYJKwYBBAGCNxQCBAYeBABDAEEwCwYDVR0PBAQDAgGGMA8GA1Ud +EwEB/wQFMAMBAf8wHQYDVR0OBBYEFMZPoj0GY4QJnM5i5ASsjVy16bYbMDYGA1UdHwQvMC0wK6Ap +oCeGJWh0dHA6Ly9jcmwueHJhbXBzZWN1cml0eS5jb20vWEdDQS5jcmwwEAYJKwYBBAGCNxUBBAMC +AQEwDQYJKoZIhvcNAQEFBQADggEBAJEVOQMBG2f7Shz5CmBbodpNl2L5JFMn14JkTpAuw0kbK5rc +/Kh4ZzXxHfARvbdI4xD2Dd8/0sm2qlWkSLoC295ZLhVbO50WfUfXN+pfTXYSNrsf16GBBEYgoyxt +qZ4Bfj8pzgCT3/3JknOJiWSe5yvkHJEs0rnOfc5vMZnT5r7SHpDwCRR5XCOrTdLaIR9NmXmd4c8n +nxCbHIgNsIpkQTG4DmyQJKSbXHGPurt+HBvbaoAPIbzp26a3QPSyi6mx5O+aGtA9aZnuqCij4Tyz +8LIRnM98QObd50N9otg6tamN8jSZxNQQ4Qb9CYQQO+7ETPTsJ3xCwnR8gooJybQDJbw= +-----END CERTIFICATE----- + +Go Daddy Class 2 CA +=================== +-----BEGIN CERTIFICATE----- +MIIEADCCAuigAwIBAgIBADANBgkqhkiG9w0BAQUFADBjMQswCQYDVQQGEwJVUzEhMB8GA1UEChMY +VGhlIEdvIERhZGR5IEdyb3VwLCBJbmMuMTEwLwYDVQQLEyhHbyBEYWRkeSBDbGFzcyAyIENlcnRp +ZmljYXRpb24gQXV0aG9yaXR5MB4XDTA0MDYyOTE3MDYyMFoXDTM0MDYyOTE3MDYyMFowYzELMAkG +A1UEBhMCVVMxITAfBgNVBAoTGFRoZSBHbyBEYWRkeSBHcm91cCwgSW5jLjExMC8GA1UECxMoR28g +RGFkZHkgQ2xhc3MgMiBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTCCASAwDQYJKoZIhvcNAQEBBQAD +ggENADCCAQgCggEBAN6d1+pXGEmhW+vXX0iG6r7d/+TvZxz0ZWizV3GgXne77ZtJ6XCAPVYYYwhv +2vLM0D9/AlQiVBDYsoHUwHU9S3/Hd8M+eKsaA7Ugay9qK7HFiH7Eux6wwdhFJ2+qN1j3hybX2C32 +qRe3H3I2TqYXP2WYktsqbl2i/ojgC95/5Y0V4evLOtXiEqITLdiOr18SPaAIBQi2XKVlOARFmR6j +YGB0xUGlcmIbYsUfb18aQr4CUWWoriMYavx4A6lNf4DD+qta/KFApMoZFv6yyO9ecw3ud72a9nmY +vLEHZ6IVDd2gWMZEewo+YihfukEHU1jPEX44dMX4/7VpkI+EdOqXG68CAQOjgcAwgb0wHQYDVR0O +BBYEFNLEsNKR1EwRcbNhyz2h/t2oatTjMIGNBgNVHSMEgYUwgYKAFNLEsNKR1EwRcbNhyz2h/t2o +atTjoWekZTBjMQswCQYDVQQGEwJVUzEhMB8GA1UEChMYVGhlIEdvIERhZGR5IEdyb3VwLCBJbmMu +MTEwLwYDVQQLEyhHbyBEYWRkeSBDbGFzcyAyIENlcnRpZmljYXRpb24gQXV0aG9yaXR5ggEAMAwG +A1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEFBQADggEBADJL87LKPpH8EsahB4yOd6AzBhRckB4Y9wim +PQoZ+YeAEW5p5JYXMP80kWNyOO7MHAGjHZQopDH2esRU1/blMVgDoszOYtuURXO1v0XJJLXVggKt +I3lpjbi2Tc7PTMozI+gciKqdi0FuFskg5YmezTvacPd+mSYgFFQlq25zheabIZ0KbIIOqPjCDPoQ +HmyW74cNxA9hi63ugyuV+I6ShHI56yDqg+2DzZduCLzrTia2cyvk0/ZM/iZx4mERdEr/VxqHD3VI +Ls9RaRegAhJhldXRQLIQTO7ErBBDpqWeCtWVYpoNz4iCxTIM5CufReYNnyicsbkqWletNw+vHX/b +vZ8= +-----END CERTIFICATE----- + +Starfield Class 2 CA +==================== +-----BEGIN CERTIFICATE----- +MIIEDzCCAvegAwIBAgIBADANBgkqhkiG9w0BAQUFADBoMQswCQYDVQQGEwJVUzElMCMGA1UEChMc +U3RhcmZpZWxkIFRlY2hub2xvZ2llcywgSW5jLjEyMDAGA1UECxMpU3RhcmZpZWxkIENsYXNzIDIg +Q2VydGlmaWNhdGlvbiBBdXRob3JpdHkwHhcNMDQwNjI5MTczOTE2WhcNMzQwNjI5MTczOTE2WjBo +MQswCQYDVQQGEwJVUzElMCMGA1UEChMcU3RhcmZpZWxkIFRlY2hub2xvZ2llcywgSW5jLjEyMDAG +A1UECxMpU3RhcmZpZWxkIENsYXNzIDIgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkwggEgMA0GCSqG +SIb3DQEBAQUAA4IBDQAwggEIAoIBAQC3Msj+6XGmBIWtDBFk385N78gDGIc/oav7PKaf8MOh2tTY +bitTkPskpD6E8J7oX+zlJ0T1KKY/e97gKvDIr1MvnsoFAZMej2YcOadN+lq2cwQlZut3f+dZxkqZ +JRRU6ybH838Z1TBwj6+wRir/resp7defqgSHo9T5iaU0X9tDkYI22WY8sbi5gv2cOj4QyDvvBmVm +epsZGD3/cVE8MC5fvj13c7JdBmzDI1aaK4UmkhynArPkPw2vCHmCuDY96pzTNbO8acr1zJ3o/WSN +F4Azbl5KXZnJHoe0nRrA1W4TNSNe35tfPe/W93bC6j67eA0cQmdrBNj41tpvi/JEoAGrAgEDo4HF +MIHCMB0GA1UdDgQWBBS/X7fRzt0fhvRbVazc1xDCDqmI5zCBkgYDVR0jBIGKMIGHgBS/X7fRzt0f +hvRbVazc1xDCDqmI56FspGowaDELMAkGA1UEBhMCVVMxJTAjBgNVBAoTHFN0YXJmaWVsZCBUZWNo +bm9sb2dpZXMsIEluYy4xMjAwBgNVBAsTKVN0YXJmaWVsZCBDbGFzcyAyIENlcnRpZmljYXRpb24g +QXV0aG9yaXR5ggEAMAwGA1UdEwQFMAMBAf8wDQYJKoZIhvcNAQEFBQADggEBAAWdP4id0ckaVaGs +afPzWdqbAYcaT1epoXkJKtv3L7IezMdeatiDh6GX70k1PncGQVhiv45YuApnP+yz3SFmH8lU+nLM +PUxA2IGvd56Deruix/U0F47ZEUD0/CwqTRV/p2JdLiXTAAsgGh1o+Re49L2L7ShZ3U0WixeDyLJl +xy16paq8U4Zt3VekyvggQQto8PT7dL5WXXp59fkdheMtlb71cZBDzI0fmgAKhynpVSJYACPq4xJD +KVtHCN2MQWplBqjlIapBtJUhlbl90TSrE9atvNziPTnNvT51cKEYWQPJIrSPnNVeKtelttQKbfi3 +QBFGmh95DmK/D5fs4C8fF5Q= +-----END CERTIFICATE----- + +Taiwan GRCA +=========== +-----BEGIN CERTIFICATE----- +MIIFcjCCA1qgAwIBAgIQH51ZWtcvwgZEpYAIaeNe9jANBgkqhkiG9w0BAQUFADA/MQswCQYDVQQG +EwJUVzEwMC4GA1UECgwnR292ZXJubWVudCBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4X +DTAyMTIwNTEzMjMzM1oXDTMyMTIwNTEzMjMzM1owPzELMAkGA1UEBhMCVFcxMDAuBgNVBAoMJ0dv +dmVybm1lbnQgUm9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTCCAiIwDQYJKoZIhvcNAQEBBQAD +ggIPADCCAgoCggIBAJoluOzMonWoe/fOW1mKydGGEghU7Jzy50b2iPN86aXfTEc2pBsBHH8eV4qN +w8XRIePaJD9IK/ufLqGU5ywck9G/GwGHU5nOp/UKIXZ3/6m3xnOUT0b3EEk3+qhZSV1qgQdW8or5 +BtD3cCJNtLdBuTK4sfCxw5w/cP1T3YGq2GN49thTbqGsaoQkclSGxtKyyhwOeYHWtXBiCAEuTk8O +1RGvqa/lmr/czIdtJuTJV6L7lvnM4T9TjGxMfptTCAtsF/tnyMKtsc2AtJfcdgEWFelq16TheEfO +htX7MfP6Mb40qij7cEwdScevLJ1tZqa2jWR+tSBqnTuBto9AAGdLiYa4zGX+FVPpBMHWXx1E1wov +J5pGfaENda1UhhXcSTvxls4Pm6Dso3pdvtUqdULle96ltqqvKKyskKw4t9VoNSZ63Pc78/1Fm9G7 +Q3hub/FCVGqY8A2tl+lSXunVanLeavcbYBT0peS2cWeqH+riTcFCQP5nRhc4L0c/cZyu5SHKYS1t +B6iEfC3uUSXxY5Ce/eFXiGvviiNtsea9P63RPZYLhY3Naye7twWb7LuRqQoHEgKXTiCQ8P8NHuJB +O9NAOueNXdpm5AKwB1KYXA6OM5zCppX7VRluTI6uSw+9wThNXo+EHWbNxWCWtFJaBYmOlXqYwZE8 +lSOyDvR5tMl8wUohAgMBAAGjajBoMB0GA1UdDgQWBBTMzO/MKWCkO7GStjz6MmKPrCUVOzAMBgNV +HRMEBTADAQH/MDkGBGcqBwAEMTAvMC0CAQAwCQYFKw4DAhoFADAHBgVnKgMAAAQUA5vwIhP/lSg2 +09yewDL7MTqKUWUwDQYJKoZIhvcNAQEFBQADggIBAECASvomyc5eMN1PhnR2WPWus4MzeKR6dBcZ +TulStbngCnRiqmjKeKBMmo4sIy7VahIkv9Ro04rQ2JyftB8M3jh+Vzj8jeJPXgyfqzvS/3WXy6Tj +Zwj/5cAWtUgBfen5Cv8b5Wppv3ghqMKnI6mGq3ZW6A4M9hPdKmaKZEk9GhiHkASfQlK3T8v+R0F2 +Ne//AHY2RTKbxkaFXeIksB7jSJaYV0eUVXoPQbFEJPPB/hprv4j9wabak2BegUqZIJxIZhm1AHlU +D7gsL0u8qV1bYH+Mh6XgUmMqvtg7hUAV/h62ZT/FS9p+tXo1KaMuephgIqP0fSdOLeq0dDzpD6Qz +DxARvBMB1uUO07+1EqLhRSPAzAhuYbeJq4PjJB7mXQfnHyA+z2fI56wwbSdLaG5LKlwCCDTb+Hbk +Z6MmnD+iMsJKxYEYMRBWqoTvLQr/uB930r+lWKBi5NdLkXWNiYCYfm3LU05er/ayl4WXudpVBrkk +7tfGOB5jGxI7leFYrPLfhNVfmS8NVVvmONsuP3LpSIXLuykTjx44VbnzssQwmSNOXfJIoRIM3BKQ +CZBUkQM8R+XVyWXgt0t97EfTsws+rZ7QdAAO671RrcDeLMDDav7v3Aun+kbfYNucpllQdSNpc5Oy ++fwC00fmcc4QAu4njIT/rEUNE1yDMuAlpYYsfPQS +-----END CERTIFICATE----- + +DigiCert Assured ID Root CA +=========================== +-----BEGIN CERTIFICATE----- +MIIDtzCCAp+gAwIBAgIQDOfg5RfYRv6P5WD8G/AwOTANBgkqhkiG9w0BAQUFADBlMQswCQYDVQQG +EwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSQw +IgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3QgQ0EwHhcNMDYxMTEwMDAwMDAwWhcNMzEx +MTEwMDAwMDAwWjBlMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQL +ExB3d3cuZGlnaWNlcnQuY29tMSQwIgYDVQQDExtEaWdpQ2VydCBBc3N1cmVkIElEIFJvb3QgQ0Ew +ggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCtDhXO5EOAXLGH87dg+XESpa7cJpSIqvTO +9SA5KFhgDPiA2qkVlTJhPLWxKISKityfCgyDF3qPkKyK53lTXDGEKvYPmDI2dsze3Tyoou9q+yHy +UmHfnyDXH+Kx2f4YZNISW1/5WBg1vEfNoTb5a3/UsDg+wRvDjDPZ2C8Y/igPs6eD1sNuRMBhNZYW +/lmci3Zt1/GiSw0r/wty2p5g0I6QNcZ4VYcgoc/lbQrISXwxmDNsIumH0DJaoroTghHtORedmTpy +oeb6pNnVFzF1roV9Iq4/AUaG9ih5yLHa5FcXxH4cDrC0kqZWs72yl+2qp/C3xag/lRbQ/6GW6whf +GHdPAgMBAAGjYzBhMA4GA1UdDwEB/wQEAwIBhjAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBRF +66Kv9JLLgjEtUYunpyGd823IDzAfBgNVHSMEGDAWgBRF66Kv9JLLgjEtUYunpyGd823IDzANBgkq +hkiG9w0BAQUFAAOCAQEAog683+Lt8ONyc3pklL/3cmbYMuRCdWKuh+vy1dneVrOfzM4UKLkNl2Bc +EkxY5NM9g0lFWJc1aRqoR+pWxnmrEthngYTffwk8lOa4JiwgvT2zKIn3X/8i4peEH+ll74fg38Fn +SbNd67IJKusm7Xi+fT8r87cmNW1fiQG2SVufAQWbqz0lwcy2f8Lxb4bG+mRo64EtlOtCt/qMHt1i +8b5QZ7dsvfPxH2sMNgcWfzd8qVttevESRmCD1ycEvkvOl77DZypoEd+A5wwzZr8TDRRu838fYxAe ++o0bJW1sj6W3YQGx0qMmoRBxna3iw/nDmVG3KwcIzi7mULKn+gpFL6Lw8g== +-----END CERTIFICATE----- + +DigiCert Global Root CA +======================= +-----BEGIN CERTIFICATE----- +MIIDrzCCApegAwIBAgIQCDvgVpBCRrGhdWrJWZHHSjANBgkqhkiG9w0BAQUFADBhMQswCQYDVQQG +EwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSAw +HgYDVQQDExdEaWdpQ2VydCBHbG9iYWwgUm9vdCBDQTAeFw0wNjExMTAwMDAwMDBaFw0zMTExMTAw +MDAwMDBaMGExCzAJBgNVBAYTAlVTMRUwEwYDVQQKEwxEaWdpQ2VydCBJbmMxGTAXBgNVBAsTEHd3 +dy5kaWdpY2VydC5jb20xIDAeBgNVBAMTF0RpZ2lDZXJ0IEdsb2JhbCBSb290IENBMIIBIjANBgkq +hkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA4jvhEXLeqKTTo1eqUKKPC3eQyaKl7hLOllsBCSDMAZOn +TjC3U/dDxGkAV53ijSLdhwZAAIEJzs4bg7/fzTtxRuLWZscFs3YnFo97nh6Vfe63SKMI2tavegw5 +BmV/Sl0fvBf4q77uKNd0f3p4mVmFaG5cIzJLv07A6Fpt43C/dxC//AH2hdmoRBBYMql1GNXRor5H +4idq9Joz+EkIYIvUX7Q6hL+hqkpMfT7PT19sdl6gSzeRntwi5m3OFBqOasv+zbMUZBfHWymeMr/y +7vrTC0LUq7dBMtoM1O/4gdW7jVg/tRvoSSiicNoxBN33shbyTApOB6jtSj1etX+jkMOvJwIDAQAB +o2MwYTAOBgNVHQ8BAf8EBAMCAYYwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUA95QNVbRTLtm +8KPiGxvDl7I90VUwHwYDVR0jBBgwFoAUA95QNVbRTLtm8KPiGxvDl7I90VUwDQYJKoZIhvcNAQEF +BQADggEBAMucN6pIExIK+t1EnE9SsPTfrgT1eXkIoyQY/EsrhMAtudXH/vTBH1jLuG2cenTnmCmr +EbXjcKChzUyImZOMkXDiqw8cvpOp/2PV5Adg06O/nVsJ8dWO41P0jmP6P6fbtGbfYmbW0W5BjfIt +tep3Sp+dWOIrWcBAI+0tKIJFPnlUkiaY4IBIqDfv8NZ5YBberOgOzW6sRBc4L0na4UU+Krk2U886 +UAb3LujEV0lsYSEY1QSteDwsOoBrp+uvFRTp2InBuThs4pFsiv9kuXclVzDAGySj4dzp30d8tbQk +CAUw7C29C79Fv1C5qfPrmAESrciIxpg0X40KPMbp1ZWVbd4= +-----END CERTIFICATE----- + +DigiCert High Assurance EV Root CA +================================== +-----BEGIN CERTIFICATE----- +MIIDxTCCAq2gAwIBAgIQAqxcJmoLQJuPC3nyrkYldzANBgkqhkiG9w0BAQUFADBsMQswCQYDVQQG +EwJVUzEVMBMGA1UEChMMRGlnaUNlcnQgSW5jMRkwFwYDVQQLExB3d3cuZGlnaWNlcnQuY29tMSsw +KQYDVQQDEyJEaWdpQ2VydCBIaWdoIEFzc3VyYW5jZSBFViBSb290IENBMB4XDTA2MTExMDAwMDAw +MFoXDTMxMTExMDAwMDAwMFowbDELMAkGA1UEBhMCVVMxFTATBgNVBAoTDERpZ2lDZXJ0IEluYzEZ +MBcGA1UECxMQd3d3LmRpZ2ljZXJ0LmNvbTErMCkGA1UEAxMiRGlnaUNlcnQgSGlnaCBBc3N1cmFu +Y2UgRVYgUm9vdCBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMbM5XPm+9S75S0t +Mqbf5YE/yc0lSbZxKsPVlDRnogocsF9ppkCxxLeyj9CYpKlBWTrT3JTWPNt0OKRKzE0lgvdKpVMS +OO7zSW1xkX5jtqumX8OkhPhPYlG++MXs2ziS4wblCJEMxChBVfvLWokVfnHoNb9Ncgk9vjo4UFt3 +MRuNs8ckRZqnrG0AFFoEt7oT61EKmEFBIk5lYYeBQVCmeVyJ3hlKV9Uu5l0cUyx+mM0aBhakaHPQ +NAQTXKFx01p8VdteZOE3hzBWBOURtCmAEvF5OYiiAhF8J2a3iLd48soKqDirCmTCv2ZdlYTBoSUe +h10aUAsgEsxBu24LUTi4S8sCAwEAAaNjMGEwDgYDVR0PAQH/BAQDAgGGMA8GA1UdEwEB/wQFMAMB +Af8wHQYDVR0OBBYEFLE+w2kD+L9HAdSYJhoIAu9jZCvDMB8GA1UdIwQYMBaAFLE+w2kD+L9HAdSY +JhoIAu9jZCvDMA0GCSqGSIb3DQEBBQUAA4IBAQAcGgaX3NecnzyIZgYIVyHbIUf4KmeqvxgydkAQ +V8GK83rZEWWONfqe/EW1ntlMMUu4kehDLI6zeM7b41N5cdblIZQB2lWHmiRk9opmzN6cN82oNLFp +myPInngiK3BD41VHMWEZ71jFhS9OMPagMRYjyOfiZRYzy78aG6A9+MpeizGLYAiJLQwGXFK3xPkK +mNEVX58Svnw2Yzi9RKR/5CYrCsSXaQ3pjOLAEFe4yHYSkVXySGnYvCoCWw9E1CAx2/S6cCZdkGCe +vEsXCS+0yx5DaMkHJ8HSXPfqIbloEpw8nL+e/IBcm2PN7EeqJSdnoDfzAIJ9VNep+OkuE6N36B9K +-----END CERTIFICATE----- + +Certplus Class 2 Primary CA +=========================== +-----BEGIN CERTIFICATE----- +MIIDkjCCAnqgAwIBAgIRAIW9S/PY2uNp9pTXX8OlRCMwDQYJKoZIhvcNAQEFBQAwPTELMAkGA1UE +BhMCRlIxETAPBgNVBAoTCENlcnRwbHVzMRswGQYDVQQDExJDbGFzcyAyIFByaW1hcnkgQ0EwHhcN +OTkwNzA3MTcwNTAwWhcNMTkwNzA2MjM1OTU5WjA9MQswCQYDVQQGEwJGUjERMA8GA1UEChMIQ2Vy +dHBsdXMxGzAZBgNVBAMTEkNsYXNzIDIgUHJpbWFyeSBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEP +ADCCAQoCggEBANxQltAS+DXSCHh6tlJw/W/uz7kRy1134ezpfgSN1sxvc0NXYKwzCkTsA18cgCSR +5aiRVhKC9+Ar9NuuYS6JEI1rbLqzAr3VNsVINyPi8Fo3UjMXEuLRYE2+L0ER4/YXJQyLkcAbmXuZ +Vg2v7tK8R1fjeUl7NIknJITesezpWE7+Tt9avkGtrAjFGA7v0lPubNCdEgETjdyAYveVqUSISnFO +YFWe2yMZeVYHDD9jC1yw4r5+FfyUM1hBOHTE4Y+L3yasH7WLO7dDWWuwJKZtkIvEcupdM5i3y95e +e++U8Rs+yskhwcWYAqqi9lt3m/V+llU0HGdpwPFC40es/CgcZlUCAwEAAaOBjDCBiTAPBgNVHRME +CDAGAQH/AgEKMAsGA1UdDwQEAwIBBjAdBgNVHQ4EFgQU43Mt38sOKAze3bOkynm4jrvoMIkwEQYJ +YIZIAYb4QgEBBAQDAgEGMDcGA1UdHwQwMC4wLKAqoCiGJmh0dHA6Ly93d3cuY2VydHBsdXMuY29t +L0NSTC9jbGFzczIuY3JsMA0GCSqGSIb3DQEBBQUAA4IBAQCnVM+IRBnL39R/AN9WM2K191EBkOvD +P9GIROkkXe/nFL0gt5o8AP5tn9uQ3Nf0YtaLcF3n5QRIqWh8yfFC82x/xXp8HVGIutIKPidd3i1R +TtMTZGnkLuPT55sJmabglZvOGtd/vjzOUrMRFcEPF80Du5wlFbqidon8BvEY0JNLDnyCt6X09l/+ +7UCmnYR0ObncHoUW2ikbhiMAybuJfm6AiB4vFLQDJKgybwOaRywwvlbGp0ICcBvqQNi6BQNwB6SW +//1IMwrh3KWBkJtN3X3n57LNXMhqlfil9o3EXXgIvnsG1knPGTZQIy4I5p4FTUcY1Rbpsda2ENW7 +l7+ijrRU +-----END CERTIFICATE----- + +DST Root CA X3 +============== +-----BEGIN CERTIFICATE----- +MIIDSjCCAjKgAwIBAgIQRK+wgNajJ7qJMDmGLvhAazANBgkqhkiG9w0BAQUFADA/MSQwIgYDVQQK +ExtEaWdpdGFsIFNpZ25hdHVyZSBUcnVzdCBDby4xFzAVBgNVBAMTDkRTVCBSb290IENBIFgzMB4X +DTAwMDkzMDIxMTIxOVoXDTIxMDkzMDE0MDExNVowPzEkMCIGA1UEChMbRGlnaXRhbCBTaWduYXR1 +cmUgVHJ1c3QgQ28uMRcwFQYDVQQDEw5EU1QgUm9vdCBDQSBYMzCCASIwDQYJKoZIhvcNAQEBBQAD +ggEPADCCAQoCggEBAN+v6ZdQCINXtMxiZfaQguzH0yxrMMpb7NnDfcdAwRgUi+DoM3ZJKuM/IUmT +rE4Orz5Iy2Xu/NMhD2XSKtkyj4zl93ewEnu1lcCJo6m67XMuegwGMoOifooUMM0RoOEqOLl5CjH9 +UL2AZd+3UWODyOKIYepLYYHsUmu5ouJLGiifSKOeDNoJjj4XLh7dIN9bxiqKqy69cK3FCxolkHRy +xXtqqzTWMIn/5WgTe1QLyNau7Fqckh49ZLOMxt+/yUFw7BZy1SbsOFU5Q9D8/RhcQPGX69Wam40d +utolucbY38EVAjqr2m7xPi71XAicPNaDaeQQmxkqtilX4+U9m5/wAl0CAwEAAaNCMEAwDwYDVR0T +AQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFMSnsaR7LHH62+FLkHX/xBVghYkQ +MA0GCSqGSIb3DQEBBQUAA4IBAQCjGiybFwBcqR7uKGY3Or+Dxz9LwwmglSBd49lZRNI+DT69ikug +dB/OEIKcdBodfpga3csTS7MgROSR6cz8faXbauX+5v3gTt23ADq1cEmv8uXrAvHRAosZy5Q6XkjE +GB5YGV8eAlrwDPGxrancWYaLbumR9YbK+rlmM6pZW87ipxZzR8srzJmwN0jP41ZL9c8PDHIyh8bw +RLtTcm1D9SZImlJnt1ir/md2cXjbDaJWFBM5JDGFoqgCWjBH4d1QB7wCCZAA62RjYJsWvIjJEubS +fZGL+T0yjWW06XyxV3bqxbYoOb8VZRzI9neWagqNdwvYkQsEjgfbKbYK7p2CNTUQ +-----END CERTIFICATE----- + +SwissSign Gold CA - G2 +====================== +-----BEGIN CERTIFICATE----- +MIIFujCCA6KgAwIBAgIJALtAHEP1Xk+wMA0GCSqGSIb3DQEBBQUAMEUxCzAJBgNVBAYTAkNIMRUw +EwYDVQQKEwxTd2lzc1NpZ24gQUcxHzAdBgNVBAMTFlN3aXNzU2lnbiBHb2xkIENBIC0gRzIwHhcN +MDYxMDI1MDgzMDM1WhcNMzYxMDI1MDgzMDM1WjBFMQswCQYDVQQGEwJDSDEVMBMGA1UEChMMU3dp +c3NTaWduIEFHMR8wHQYDVQQDExZTd2lzc1NpZ24gR29sZCBDQSAtIEcyMIICIjANBgkqhkiG9w0B +AQEFAAOCAg8AMIICCgKCAgEAr+TufoskDhJuqVAtFkQ7kpJcyrhdhJJCEyq8ZVeCQD5XJM1QiyUq +t2/876LQwB8CJEoTlo8jE+YoWACjR8cGp4QjK7u9lit/VcyLwVcfDmJlD909Vopz2q5+bbqBHH5C +jCA12UNNhPqE21Is8w4ndwtrvxEvcnifLtg+5hg3Wipy+dpikJKVyh+c6bM8K8vzARO/Ws/BtQpg +vd21mWRTuKCWs2/iJneRjOBiEAKfNA+k1ZIzUd6+jbqEemA8atufK+ze3gE/bk3lUIbLtK/tREDF +ylqM2tIrfKjuvqblCqoOpd8FUrdVxyJdMmqXl2MT28nbeTZ7hTpKxVKJ+STnnXepgv9VHKVxaSvR +AiTysybUa9oEVeXBCsdtMDeQKuSeFDNeFhdVxVu1yzSJkvGdJo+hB9TGsnhQ2wwMC3wLjEHXuend +jIj3o02yMszYF9rNt85mndT9Xv+9lz4pded+p2JYryU0pUHHPbwNUMoDAw8IWh+Vc3hiv69yFGkO +peUDDniOJihC8AcLYiAQZzlG+qkDzAQ4embvIIO1jEpWjpEA/I5cgt6IoMPiaG59je883WX0XaxR +7ySArqpWl2/5rX3aYT+YdzylkbYcjCbaZaIJbcHiVOO5ykxMgI93e2CaHt+28kgeDrpOVG2Y4OGi +GqJ3UM/EY5LsRxmd6+ZrzsECAwEAAaOBrDCBqTAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/BAUw +AwEB/zAdBgNVHQ4EFgQUWyV7lqRlUX64OfPAeGZe6Drn8O4wHwYDVR0jBBgwFoAUWyV7lqRlUX64 +OfPAeGZe6Drn8O4wRgYDVR0gBD8wPTA7BglghXQBWQECAQEwLjAsBggrBgEFBQcCARYgaHR0cDov +L3JlcG9zaXRvcnkuc3dpc3NzaWduLmNvbS8wDQYJKoZIhvcNAQEFBQADggIBACe645R88a7A3hfm +5djV9VSwg/S7zV4Fe0+fdWavPOhWfvxyeDgD2StiGwC5+OlgzczOUYrHUDFu4Up+GC9pWbY9ZIEr +44OE5iKHjn3g7gKZYbge9LgriBIWhMIxkziWMaa5O1M/wySTVltpkuzFwbs4AOPsF6m43Md8AYOf +Mke6UiI0HTJ6CVanfCU2qT1L2sCCbwq7EsiHSycR+R4tx5M/nttfJmtS2S6K8RTGRI0Vqbe/vd6m +Gu6uLftIdxf+u+yvGPUqUfA5hJeVbG4bwyvEdGB5JbAKJ9/fXtI5z0V9QkvfsywexcZdylU6oJxp +mo/a77KwPJ+HbBIrZXAVUjEaJM9vMSNQH4xPjyPDdEFjHFWoFN0+4FFQz/EbMFYOkrCChdiDyyJk +vC24JdVUorgG6q2SpCSgwYa1ShNqR88uC1aVVMvOmttqtKay20EIhid392qgQmwLOM7XdVAyksLf +KzAiSNDVQTglXaTpXZ/GlHXQRf0wl0OPkKsKx4ZzYEppLd6leNcG2mqeSz53OiATIgHQv2ieY2Br +NU0LbbqhPcCT4H8js1WtciVORvnSFu+wZMEBnunKoGqYDs/YYPIvSbjkQuE4NRb0yG5P94FW6Lqj +viOvrv1vA+ACOzB2+httQc8Bsem4yWb02ybzOqR08kkkW8mw0FfB+j564ZfJ +-----END CERTIFICATE----- + +SwissSign Silver CA - G2 +======================== +-----BEGIN CERTIFICATE----- +MIIFvTCCA6WgAwIBAgIITxvUL1S7L0swDQYJKoZIhvcNAQEFBQAwRzELMAkGA1UEBhMCQ0gxFTAT +BgNVBAoTDFN3aXNzU2lnbiBBRzEhMB8GA1UEAxMYU3dpc3NTaWduIFNpbHZlciBDQSAtIEcyMB4X +DTA2MTAyNTA4MzI0NloXDTM2MTAyNTA4MzI0NlowRzELMAkGA1UEBhMCQ0gxFTATBgNVBAoTDFN3 +aXNzU2lnbiBBRzEhMB8GA1UEAxMYU3dpc3NTaWduIFNpbHZlciBDQSAtIEcyMIICIjANBgkqhkiG +9w0BAQEFAAOCAg8AMIICCgKCAgEAxPGHf9N4Mfc4yfjDmUO8x/e8N+dOcbpLj6VzHVxumK4DV644 +N0MvFz0fyM5oEMF4rhkDKxD6LHmD9ui5aLlV8gREpzn5/ASLHvGiTSf5YXu6t+WiE7brYT7QbNHm ++/pe7R20nqA1W6GSy/BJkv6FCgU+5tkL4k+73JU3/JHpMjUi0R86TieFnbAVlDLaYQ1HTWBCrpJH +6INaUFjpiou5XaHc3ZlKHzZnu0jkg7Y360g6rw9njxcH6ATK72oxh9TAtvmUcXtnZLi2kUpCe2Uu +MGoM9ZDulebyzYLs2aFK7PayS+VFheZteJMELpyCbTapxDFkH4aDCyr0NQp4yVXPQbBH6TCfmb5h +qAaEuSh6XzjZG6k4sIN/c8HDO0gqgg8hm7jMqDXDhBuDsz6+pJVpATqJAHgE2cn0mRmrVn5bi4Y5 +FZGkECwJMoBgs5PAKrYYC51+jUnyEEp/+dVGLxmSo5mnJqy7jDzmDrxHB9xzUfFwZC8I+bRHHTBs +ROopN4WSaGa8gzj+ezku01DwH/teYLappvonQfGbGHLy9YR0SslnxFSuSGTfjNFusB3hB48IHpmc +celM2KX3RxIfdNFRnobzwqIjQAtz20um53MGjMGg6cFZrEb65i/4z3GcRm25xBWNOHkDRUjvxF3X +CO6HOSKGsg0PWEP3calILv3q1h8CAwEAAaOBrDCBqTAOBgNVHQ8BAf8EBAMCAQYwDwYDVR0TAQH/ +BAUwAwEB/zAdBgNVHQ4EFgQUF6DNweRBtjpbO8tFnb0cwpj6hlgwHwYDVR0jBBgwFoAUF6DNweRB +tjpbO8tFnb0cwpj6hlgwRgYDVR0gBD8wPTA7BglghXQBWQEDAQEwLjAsBggrBgEFBQcCARYgaHR0 +cDovL3JlcG9zaXRvcnkuc3dpc3NzaWduLmNvbS8wDQYJKoZIhvcNAQEFBQADggIBAHPGgeAn0i0P +4JUw4ppBf1AsX19iYamGamkYDHRJ1l2E6kFSGG9YrVBWIGrGvShpWJHckRE1qTodvBqlYJ7YH39F +kWnZfrt4csEGDyrOj4VwYaygzQu4OSlWhDJOhrs9xCrZ1x9y7v5RoSJBsXECYxqCsGKrXlcSH9/L +3XWgwF15kIwb4FDm3jH+mHtwX6WQ2K34ArZv02DdQEsixT2tOnqfGhpHkXkzuoLcMmkDlm4fS/Bx +/uNncqCxv1yL5PqZIseEuRuNI5c/7SXgz2W79WEE790eslpBIlqhn10s6FvJbakMDHiqYMZWjwFa +DGi8aRl5xB9+lwW/xekkUV7U1UtT7dkjWjYDZaPBA61BMPNGG4WQr2W11bHkFlt4dR2Xem1ZqSqP +e97Dh4kQmUlzeMg9vVE1dCrV8X5pGyq7O70luJpaPXJhkGaH7gzWTdQRdAtq/gsD/KNVV4n+Ssuu +WxcFyPKNIzFTONItaj+CuY0IavdeQXRuwxF+B6wpYJE/OMpXEA29MC/HpeZBoNquBYeaoKRlbEwJ +DIm6uNO5wJOKMPqN5ZprFQFOZ6raYlY+hAhm0sQ2fac+EPyI4NSA5QC9qvNOBqN6avlicuMJT+ub +DgEj8Z+7fNzcbBGXJbLytGMU0gYqZ4yD9c7qB9iaah7s5Aq7KkzrCWA5zspi2C5u +-----END CERTIFICATE----- + +GeoTrust Primary Certification Authority +======================================== +-----BEGIN CERTIFICATE----- +MIIDfDCCAmSgAwIBAgIQGKy1av1pthU6Y2yv2vrEoTANBgkqhkiG9w0BAQUFADBYMQswCQYDVQQG +EwJVUzEWMBQGA1UEChMNR2VvVHJ1c3QgSW5jLjExMC8GA1UEAxMoR2VvVHJ1c3QgUHJpbWFyeSBD +ZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0wNjExMjcwMDAwMDBaFw0zNjA3MTYyMzU5NTlaMFgx +CzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1HZW9UcnVzdCBJbmMuMTEwLwYDVQQDEyhHZW9UcnVzdCBQ +cmltYXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIB +CgKCAQEAvrgVe//UfH1nrYNke8hCUy3f9oQIIGHWAVlqnEQRr+92/ZV+zmEwu3qDXwK9AWbK7hWN +b6EwnL2hhZ6UOvNWiAAxz9juapYC2e0DjPt1befquFUWBRaa9OBesYjAZIVcFU2Ix7e64HXprQU9 +nceJSOC7KMgD4TCTZF5SwFlwIjVXiIrxlQqD17wxcwE07e9GceBrAqg1cmuXm2bgyxx5X9gaBGge +RwLmnWDiNpcB3841kt++Z8dtd1k7j53WkBWUvEI0EME5+bEnPn7WinXFsq+W06Lem+SYvn3h6YGt +tm/81w7a4DSwDRp35+MImO9Y+pyEtzavwt+s0vQQBnBxNQIDAQABo0IwQDAPBgNVHRMBAf8EBTAD +AQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQULNVQQZcVi/CPNmFbSvtr2ZnJM5IwDQYJKoZI +hvcNAQEFBQADggEBAFpwfyzdtzRP9YZRqSa+S7iq8XEN3GHHoOo0Hnp3DwQ16CePbJC/kRYkRj5K +Ts4rFtULUh38H2eiAkUxT87z+gOneZ1TatnaYzr4gNfTmeGl4b7UVXGYNTq+k+qurUKykG/g/CFN +NWMziUnWm07Kx+dOCQD32sfvmWKZd7aVIl6KoKv0uHiYyjgZmclynnjNS6yvGaBzEi38wkG6gZHa +Floxt/m0cYASSJlyc1pZU8FjUjPtp8nSOQJw+uCxQmYpqptR7TBUIhRf2asdweSU8Pj1K/fqynhG +1riR/aYNKxoUAT6A8EKglQdebc3MS6RFjasS6LPeWuWgfOgPIh1a6Vk= +-----END CERTIFICATE----- + +thawte Primary Root CA +====================== +-----BEGIN CERTIFICATE----- +MIIEIDCCAwigAwIBAgIQNE7VVyDV7exJ9C/ON9srbTANBgkqhkiG9w0BAQUFADCBqTELMAkGA1UE +BhMCVVMxFTATBgNVBAoTDHRoYXd0ZSwgSW5jLjEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2 +aWNlcyBEaXZpc2lvbjE4MDYGA1UECxMvKGMpIDIwMDYgdGhhd3RlLCBJbmMuIC0gRm9yIGF1dGhv +cml6ZWQgdXNlIG9ubHkxHzAdBgNVBAMTFnRoYXd0ZSBQcmltYXJ5IFJvb3QgQ0EwHhcNMDYxMTE3 +MDAwMDAwWhcNMzYwNzE2MjM1OTU5WjCBqTELMAkGA1UEBhMCVVMxFTATBgNVBAoTDHRoYXd0ZSwg +SW5jLjEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2aWNlcyBEaXZpc2lvbjE4MDYGA1UECxMv +KGMpIDIwMDYgdGhhd3RlLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxHzAdBgNVBAMT +FnRoYXd0ZSBQcmltYXJ5IFJvb3QgQ0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCs +oPD7gFnUnMekz52hWXMJEEUMDSxuaPFsW0hoSVk3/AszGcJ3f8wQLZU0HObrTQmnHNK4yZc2AreJ +1CRfBsDMRJSUjQJib+ta3RGNKJpchJAQeg29dGYvajig4tVUROsdB58Hum/u6f1OCyn1PoSgAfGc +q/gcfomk6KHYcWUNo1F77rzSImANuVud37r8UVsLr5iy6S7pBOhih94ryNdOwUxkHt3Ph1i6Sk/K +aAcdHJ1KxtUvkcx8cXIcxcBn6zL9yZJclNqFwJu/U30rCfSMnZEfl2pSy94JNqR32HuHUETVPm4p +afs5SSYeCaWAe0At6+gnhcn+Yf1+5nyXHdWdAgMBAAGjQjBAMA8GA1UdEwEB/wQFMAMBAf8wDgYD +VR0PAQH/BAQDAgEGMB0GA1UdDgQWBBR7W0XPr87Lev0xkhpqtvNG61dIUDANBgkqhkiG9w0BAQUF +AAOCAQEAeRHAS7ORtvzw6WfUDW5FvlXok9LOAz/t2iWwHVfLHjp2oEzsUHboZHIMpKnxuIvW1oeE +uzLlQRHAd9mzYJ3rG9XRbkREqaYB7FViHXe4XI5ISXycO1cRrK1zN44veFyQaEfZYGDm/Ac9IiAX +xPcW6cTYcvnIc3zfFi8VqT79aie2oetaupgf1eNNZAqdE8hhuvU5HIe6uL17In/2/qxAeeWsEG89 +jxt5dovEN7MhGITlNgDrYyCZuen+MwS7QcjBAvlEYyCegc5C09Y/LHbTY5xZ3Y+m4Q6gLkH3LpVH +z7z9M/P2C2F+fpErgUfCJzDupxBdN49cOSvkBPB7jVaMaA== +-----END CERTIFICATE----- + +VeriSign Class 3 Public Primary Certification Authority - G5 +============================================================ +-----BEGIN CERTIFICATE----- +MIIE0zCCA7ugAwIBAgIQGNrRniZ96LtKIVjNzGs7SjANBgkqhkiG9w0BAQUFADCByjELMAkGA1UE +BhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZWZXJpU2lnbiBUcnVzdCBO +ZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNiBWZXJpU2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVk +IHVzZSBvbmx5MUUwQwYDVQQDEzxWZXJpU2lnbiBDbGFzcyAzIFB1YmxpYyBQcmltYXJ5IENlcnRp +ZmljYXRpb24gQXV0aG9yaXR5IC0gRzUwHhcNMDYxMTA4MDAwMDAwWhcNMzYwNzE2MjM1OTU5WjCB +yjELMAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZWZXJpU2ln +biBUcnVzdCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNiBWZXJpU2lnbiwgSW5jLiAtIEZvciBh +dXRob3JpemVkIHVzZSBvbmx5MUUwQwYDVQQDEzxWZXJpU2lnbiBDbGFzcyAzIFB1YmxpYyBQcmlt +YXJ5IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IC0gRzUwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAw +ggEKAoIBAQCvJAgIKXo1nmAMqudLO07cfLw8RRy7K+D+KQL5VwijZIUVJ/XxrcgxiV0i6CqqpkKz +j/i5Vbext0uz/o9+B1fs70PbZmIVYc9gDaTY3vjgw2IIPVQT60nKWVSFJuUrjxuf6/WhkcIzSdhD +Y2pSS9KP6HBRTdGJaXvHcPaz3BJ023tdS1bTlr8Vd6Gw9KIl8q8ckmcY5fQGBO+QueQA5N06tRn/ +Arr0PO7gi+s3i+z016zy9vA9r911kTMZHRxAy3QkGSGT2RT+rCpSx4/VBEnkjWNHiDxpg8v+R70r +fk/Fla4OndTRQ8Bnc+MUCH7lP59zuDMKz10/NIeWiu5T6CUVAgMBAAGjgbIwga8wDwYDVR0TAQH/ +BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwbQYIKwYBBQUHAQwEYTBfoV2gWzBZMFcwVRYJaW1hZ2Uv +Z2lmMCEwHzAHBgUrDgMCGgQUj+XTGoasjY5rw8+AatRIGCx7GS4wJRYjaHR0cDovL2xvZ28udmVy +aXNpZ24uY29tL3ZzbG9nby5naWYwHQYDVR0OBBYEFH/TZafC3ey78DAJ80M5+gKvMzEzMA0GCSqG +SIb3DQEBBQUAA4IBAQCTJEowX2LP2BqYLz3q3JktvXf2pXkiOOzEp6B4Eq1iDkVwZMXnl2YtmAl+ +X6/WzChl8gGqCBpH3vn5fJJaCGkgDdk+bW48DW7Y5gaRQBi5+MHt39tBquCWIMnNZBU4gcmU7qKE +KQsTb47bDN0lAtukixlE0kF6BWlKWE9gyn6CagsCqiUXObXbf+eEZSqVir2G3l6BFoMtEMze/aiC +Km0oHw0LxOXnGiYZ4fQRbxC1lfznQgUy286dUV4otp6F01vvpX1FQHKOtw5rDgb7MzVIcbidJ4vE +ZV8NhnacRHr2lVz2XTIIM6RUthg/aFzyQkqFOFSDX9HoLPKsEdao7WNq +-----END CERTIFICATE----- + +SecureTrust CA +============== +-----BEGIN CERTIFICATE----- +MIIDuDCCAqCgAwIBAgIQDPCOXAgWpa1Cf/DrJxhZ0DANBgkqhkiG9w0BAQUFADBIMQswCQYDVQQG +EwJVUzEgMB4GA1UEChMXU2VjdXJlVHJ1c3QgQ29ycG9yYXRpb24xFzAVBgNVBAMTDlNlY3VyZVRy +dXN0IENBMB4XDTA2MTEwNzE5MzExOFoXDTI5MTIzMTE5NDA1NVowSDELMAkGA1UEBhMCVVMxIDAe +BgNVBAoTF1NlY3VyZVRydXN0IENvcnBvcmF0aW9uMRcwFQYDVQQDEw5TZWN1cmVUcnVzdCBDQTCC +ASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAKukgeWVzfX2FI7CT8rU4niVWJxB4Q2ZQCQX +OZEzZum+4YOvYlyJ0fwkW2Gz4BERQRwdbvC4u/jep4G6pkjGnx29vo6pQT64lO0pGtSO0gMdA+9t +DWccV9cGrcrI9f4Or2YlSASWC12juhbDCE/RRvgUXPLIXgGZbf2IzIaowW8xQmxSPmjL8xk037uH +GFaAJsTQ3MBv396gwpEWoGQRS0S8Hvbn+mPeZqx2pHGj7DaUaHp3pLHnDi+BeuK1cobvomuL8A/b +01k/unK8RCSc43Oz969XL0Imnal0ugBS8kvNU3xHCzaFDmapCJcWNFfBZveA4+1wVMeT4C4oFVmH +ursCAwEAAaOBnTCBmjATBgkrBgEEAYI3FAIEBh4EAEMAQTALBgNVHQ8EBAMCAYYwDwYDVR0TAQH/ +BAUwAwEB/zAdBgNVHQ4EFgQUQjK2FvoE/f5dS3rD/fdMQB1aQ68wNAYDVR0fBC0wKzApoCegJYYj +aHR0cDovL2NybC5zZWN1cmV0cnVzdC5jb20vU1RDQS5jcmwwEAYJKwYBBAGCNxUBBAMCAQAwDQYJ +KoZIhvcNAQEFBQADggEBADDtT0rhWDpSclu1pqNlGKa7UTt36Z3q059c4EVlew3KW+JwULKUBRSu +SceNQQcSc5R+DCMh/bwQf2AQWnL1mA6s7Ll/3XpvXdMc9P+IBWlCqQVxyLesJugutIxq/3HcuLHf +mbx8IVQr5Fiiu1cprp6poxkmD5kuCLDv/WnPmRoJjeOnnyvJNjR7JLN4TJUXpAYmHrZkUjZfYGfZ +nMUFdAvnZyPSCPyI6a6Lf+Ew9Dd+/cYy2i2eRDAwbO4H3tI0/NL/QPZL9GZGBlSm8jIKYyYwa5vR +3ItHuuG51WLQoqD0ZwV4KWMabwTW+MZMo5qxN7SN5ShLHZ4swrhovO0C7jE= +-----END CERTIFICATE----- + +Secure Global CA +================ +-----BEGIN CERTIFICATE----- +MIIDvDCCAqSgAwIBAgIQB1YipOjUiolN9BPI8PjqpTANBgkqhkiG9w0BAQUFADBKMQswCQYDVQQG +EwJVUzEgMB4GA1UEChMXU2VjdXJlVHJ1c3QgQ29ycG9yYXRpb24xGTAXBgNVBAMTEFNlY3VyZSBH +bG9iYWwgQ0EwHhcNMDYxMTA3MTk0MjI4WhcNMjkxMjMxMTk1MjA2WjBKMQswCQYDVQQGEwJVUzEg +MB4GA1UEChMXU2VjdXJlVHJ1c3QgQ29ycG9yYXRpb24xGTAXBgNVBAMTEFNlY3VyZSBHbG9iYWwg +Q0EwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCvNS7YrGxVaQZx5RNoJLNP2MwhR/jx +YDiJiQPpvepeRlMJ3Fz1Wuj3RSoC6zFh1ykzTM7HfAo3fg+6MpjhHZevj8fcyTiW89sa/FHtaMbQ +bqR8JNGuQsiWUGMu4P51/pinX0kuleM5M2SOHqRfkNJnPLLZ/kG5VacJjnIFHovdRIWCQtBJwB1g +8NEXLJXr9qXBkqPFwqcIYA1gBBCWeZ4WNOaptvolRTnIHmX5k/Wq8VLcmZg9pYYaDDUz+kulBAYV +HDGA76oYa8J719rO+TMg1fW9ajMtgQT7sFzUnKPiXB3jqUJ1XnvUd+85VLrJChgbEplJL4hL/VBi +0XPnj3pDAgMBAAGjgZ0wgZowEwYJKwYBBAGCNxQCBAYeBABDAEEwCwYDVR0PBAQDAgGGMA8GA1Ud +EwEB/wQFMAMBAf8wHQYDVR0OBBYEFK9EBMJBfkiD2045AuzshHrmzsmkMDQGA1UdHwQtMCswKaAn +oCWGI2h0dHA6Ly9jcmwuc2VjdXJldHJ1c3QuY29tL1NHQ0EuY3JsMBAGCSsGAQQBgjcVAQQDAgEA +MA0GCSqGSIb3DQEBBQUAA4IBAQBjGghAfaReUw132HquHw0LURYD7xh8yOOvaliTFGCRsoTciE6+ +OYo68+aCiV0BN7OrJKQVDpI1WkpEXk5X+nXOH0jOZvQ8QCaSmGwb7iRGDBezUqXbpZGRzzfTb+cn +CDpOGR86p1hcF895P4vkp9MmI50mD1hp/Ed+stCNi5O/KU9DaXR2Z0vPB4zmAve14bRDtUstFJ/5 +3CYNv6ZHdAbYiNE6KTCEztI5gGIbqMdXSbxqVVFnFUq+NQfk1XWYN3kwFNspnWzFacxHVaIw98xc +f8LDmBxrThaA63p4ZUWiABqvDA1VZDRIuJK58bRQKfJPIx/abKwfROHdI3hRW8cW +-----END CERTIFICATE----- + +COMODO Certification Authority +============================== +-----BEGIN CERTIFICATE----- +MIIEHTCCAwWgAwIBAgIQToEtioJl4AsC7j41AkblPTANBgkqhkiG9w0BAQUFADCBgTELMAkGA1UE +BhMCR0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEaMBgG +A1UEChMRQ09NT0RPIENBIExpbWl0ZWQxJzAlBgNVBAMTHkNPTU9ETyBDZXJ0aWZpY2F0aW9uIEF1 +dGhvcml0eTAeFw0wNjEyMDEwMDAwMDBaFw0yOTEyMzEyMzU5NTlaMIGBMQswCQYDVQQGEwJHQjEb +MBkGA1UECBMSR3JlYXRlciBNYW5jaGVzdGVyMRAwDgYDVQQHEwdTYWxmb3JkMRowGAYDVQQKExFD +T01PRE8gQ0EgTGltaXRlZDEnMCUGA1UEAxMeQ09NT0RPIENlcnRpZmljYXRpb24gQXV0aG9yaXR5 +MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA0ECLi3LjkRv3UcEbVASY06m/weaKXTuH ++7uIzg3jLz8GlvCiKVCZrts7oVewdFFxze1CkU1B/qnI2GqGd0S7WWaXUF601CxwRM/aN5VCaTww +xHGzUvAhTaHYujl8HJ6jJJ3ygxaYqhZ8Q5sVW7euNJH+1GImGEaaP+vB+fGQV+useg2L23IwambV +4EajcNxo2f8ESIl33rXp+2dtQem8Ob0y2WIC8bGoPW43nOIv4tOiJovGuFVDiOEjPqXSJDlqR6sA +1KGzqSX+DT+nHbrTUcELpNqsOO9VUCQFZUaTNE8tja3G1CEZ0o7KBWFxB3NH5YoZEr0ETc5OnKVI +rLsm9wIDAQABo4GOMIGLMB0GA1UdDgQWBBQLWOWLxkwVN6RAqTCpIb5HNlpW/zAOBgNVHQ8BAf8E +BAMCAQYwDwYDVR0TAQH/BAUwAwEB/zBJBgNVHR8EQjBAMD6gPKA6hjhodHRwOi8vY3JsLmNvbW9k +b2NhLmNvbS9DT01PRE9DZXJ0aWZpY2F0aW9uQXV0aG9yaXR5LmNybDANBgkqhkiG9w0BAQUFAAOC +AQEAPpiem/Yb6dc5t3iuHXIYSdOH5EOC6z/JqvWote9VfCFSZfnVDeFs9D6Mk3ORLgLETgdxb8CP +OGEIqB6BCsAvIC9Bi5HcSEW88cbeunZrM8gALTFGTO3nnc+IlP8zwFboJIYmuNg4ON8qa90SzMc/ +RxdMosIGlgnW2/4/PEZB31jiVg88O8EckzXZOFKs7sjsLjBOlDW0JB9LeGna8gI4zJVSk/BwJVmc +IGfE7vmLV2H0knZ9P4SNVbfo5azV8fUZVqZa+5Acr5Pr5RzUZ5ddBA6+C4OmF4O5MBKgxTMVBbkN ++8cFduPYSo38NBejxiEovjBFMR7HeL5YYTisO+IBZQ== +-----END CERTIFICATE----- + +Network Solutions Certificate Authority +======================================= +-----BEGIN CERTIFICATE----- +MIID5jCCAs6gAwIBAgIQV8szb8JcFuZHFhfjkDFo4DANBgkqhkiG9w0BAQUFADBiMQswCQYDVQQG +EwJVUzEhMB8GA1UEChMYTmV0d29yayBTb2x1dGlvbnMgTC5MLkMuMTAwLgYDVQQDEydOZXR3b3Jr +IFNvbHV0aW9ucyBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwHhcNMDYxMjAxMDAwMDAwWhcNMjkxMjMx +MjM1OTU5WjBiMQswCQYDVQQGEwJVUzEhMB8GA1UEChMYTmV0d29yayBTb2x1dGlvbnMgTC5MLkMu +MTAwLgYDVQQDEydOZXR3b3JrIFNvbHV0aW9ucyBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkwggEiMA0G +CSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDkvH6SMG3G2I4rC7xGzuAnlt7e+foS0zwzc7MEL7xx +jOWftiJgPl9dzgn/ggwbmlFQGiaJ3dVhXRncEg8tCqJDXRfQNJIg6nPPOCwGJgl6cvf6UDL4wpPT +aaIjzkGxzOTVHzbRijr4jGPiFFlp7Q3Tf2vouAPlT2rlmGNpSAW+Lv8ztumXWWn4Zxmuk2GWRBXT +crA/vGp97Eh/jcOrqnErU2lBUzS1sLnFBgrEsEX1QV1uiUV7PTsmjHTC5dLRfbIR1PtYMiKagMnc +/Qzpf14Dl847ABSHJ3A4qY5usyd2mFHgBeMhqxrVhSI8KbWaFsWAqPS7azCPL0YCorEMIuDTAgMB +AAGjgZcwgZQwHQYDVR0OBBYEFCEwyfsA106Y2oeqKtCnLrFAMadMMA4GA1UdDwEB/wQEAwIBBjAP +BgNVHRMBAf8EBTADAQH/MFIGA1UdHwRLMEkwR6BFoEOGQWh0dHA6Ly9jcmwubmV0c29sc3NsLmNv +bS9OZXR3b3JrU29sdXRpb25zQ2VydGlmaWNhdGVBdXRob3JpdHkuY3JsMA0GCSqGSIb3DQEBBQUA +A4IBAQC7rkvnt1frf6ott3NHhWrB5KUd5Oc86fRZZXe1eltajSU24HqXLjjAV2CDmAaDn7l2em5Q +4LqILPxFzBiwmZVRDuwduIj/h1AcgsLj4DKAv6ALR8jDMe+ZZzKATxcheQxpXN5eNK4CtSbqUN9/ +GGUsyfJj4akH/nxxH2szJGoeBfcFaMBqEssuXmHLrijTfsK0ZpEmXzwuJF/LWA/rKOyvEZbz3Htv +wKeI8lN3s2Berq4o2jUsbzRF0ybh3uxbTydrFny9RAQYgrOJeRcQcT16ohZO9QHNpGxlaKFJdlxD +ydi8NmdspZS11My5vWo1ViHe2MPr+8ukYEywVaCge1ey +-----END CERTIFICATE----- + +COMODO ECC Certification Authority +================================== +-----BEGIN CERTIFICATE----- +MIICiTCCAg+gAwIBAgIQH0evqmIAcFBUTAGem2OZKjAKBggqhkjOPQQDAzCBhTELMAkGA1UEBhMC +R0IxGzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEaMBgGA1UE +ChMRQ09NT0RPIENBIExpbWl0ZWQxKzApBgNVBAMTIkNPTU9ETyBFQ0MgQ2VydGlmaWNhdGlvbiBB +dXRob3JpdHkwHhcNMDgwMzA2MDAwMDAwWhcNMzgwMTE4MjM1OTU5WjCBhTELMAkGA1UEBhMCR0Ix +GzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEaMBgGA1UEChMR +Q09NT0RPIENBIExpbWl0ZWQxKzApBgNVBAMTIkNPTU9ETyBFQ0MgQ2VydGlmaWNhdGlvbiBBdXRo +b3JpdHkwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAAQDR3svdcmCFYX7deSRFtSrYpn1PlILBs5BAH+X +4QokPB0BBO490o0JlwzgdeT6+3eKKvUDYEs2ixYjFq0JcfRK9ChQtP6IHG4/bC8vCVlbpVsLM5ni +wz2J+Wos77LTBumjQjBAMB0GA1UdDgQWBBR1cacZSBm8nZ3qQUfflMRId5nTeTAOBgNVHQ8BAf8E +BAMCAQYwDwYDVR0TAQH/BAUwAwEB/zAKBggqhkjOPQQDAwNoADBlAjEA7wNbeqy3eApyt4jf/7VG +FAkK+qDmfQjGGoe9GKhzvSbKYAydzpmfz1wPMOG+FDHqAjAU9JM8SaczepBGR7NjfRObTrdvGDeA +U/7dIOA1mjbRxwG55tzd8/8dLDoWV9mSOdY= +-----END CERTIFICATE----- + +OISTE WISeKey Global Root GA CA +=============================== +-----BEGIN CERTIFICATE----- +MIID8TCCAtmgAwIBAgIQQT1yx/RrH4FDffHSKFTfmjANBgkqhkiG9w0BAQUFADCBijELMAkGA1UE +BhMCQ0gxEDAOBgNVBAoTB1dJU2VLZXkxGzAZBgNVBAsTEkNvcHlyaWdodCAoYykgMjAwNTEiMCAG +A1UECxMZT0lTVEUgRm91bmRhdGlvbiBFbmRvcnNlZDEoMCYGA1UEAxMfT0lTVEUgV0lTZUtleSBH +bG9iYWwgUm9vdCBHQSBDQTAeFw0wNTEyMTExNjAzNDRaFw0zNzEyMTExNjA5NTFaMIGKMQswCQYD +VQQGEwJDSDEQMA4GA1UEChMHV0lTZUtleTEbMBkGA1UECxMSQ29weXJpZ2h0IChjKSAyMDA1MSIw +IAYDVQQLExlPSVNURSBGb3VuZGF0aW9uIEVuZG9yc2VkMSgwJgYDVQQDEx9PSVNURSBXSVNlS2V5 +IEdsb2JhbCBSb290IEdBIENBMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAy0+zAJs9 +Nt350UlqaxBJH+zYK7LG+DKBKUOVTJoZIyEVRd7jyBxRVVuuk+g3/ytr6dTqvirdqFEr12bDYVxg +Asj1znJ7O7jyTmUIms2kahnBAbtzptf2w93NvKSLtZlhuAGio9RN1AU9ka34tAhxZK9w8RxrfvbD +d50kc3vkDIzh2TbhmYsFmQvtRTEJysIA2/dyoJaqlYfQjse2YXMNdmaM3Bu0Y6Kff5MTMPGhJ9vZ +/yxViJGg4E8HsChWjBgbl0SOid3gF27nKu+POQoxhILYQBRJLnpB5Kf+42TMwVlxSywhp1t94B3R +LoGbw9ho972WG6xwsRYUC9tguSYBBQIDAQABo1EwTzALBgNVHQ8EBAMCAYYwDwYDVR0TAQH/BAUw +AwEB/zAdBgNVHQ4EFgQUswN+rja8sHnR3JQmthG+IbJphpQwEAYJKwYBBAGCNxUBBAMCAQAwDQYJ +KoZIhvcNAQEFBQADggEBAEuh/wuHbrP5wUOxSPMowB0uyQlB+pQAHKSkq0lPjz0e701vvbyk9vIm +MMkQyh2I+3QZH4VFvbBsUfk2ftv1TDI6QU9bR8/oCy22xBmddMVHxjtqD6wU2zz0c5ypBd8A3HR4 ++vg1YFkCExh8vPtNsCBtQ7tgMHpnM1zFmdH4LTlSc/uMqpclXHLZCB6rTjzjgTGfA6b7wP4piFXa +hNVQA7bihKOmNqoROgHhGEvWRGizPflTdISzRpFGlgC3gCy24eMQ4tui5yiPAZZiFj4A4xylNoEY +okxSdsARo27mHbrjWr42U8U+dY+GaSlYU7Wcu2+fXMUY7N0v4ZjJ/L7fCg0= +-----END CERTIFICATE----- + +Certigna +======== +-----BEGIN CERTIFICATE----- +MIIDqDCCApCgAwIBAgIJAP7c4wEPyUj/MA0GCSqGSIb3DQEBBQUAMDQxCzAJBgNVBAYTAkZSMRIw +EAYDVQQKDAlEaGlteW90aXMxETAPBgNVBAMMCENlcnRpZ25hMB4XDTA3MDYyOTE1MTMwNVoXDTI3 +MDYyOTE1MTMwNVowNDELMAkGA1UEBhMCRlIxEjAQBgNVBAoMCURoaW15b3RpczERMA8GA1UEAwwI +Q2VydGlnbmEwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQDIaPHJ1tazNHUmgh7stL7q +XOEm7RFHYeGifBZ4QCHkYJ5ayGPhxLGWkv8YbWkj4Sti993iNi+RB7lIzw7sebYs5zRLcAglozyH +GxnygQcPOJAZ0xH+hrTy0V4eHpbNgGzOOzGTtvKg0KmVEn2lmsxryIRWijOp5yIVUxbwzBfsV1/p +ogqYCd7jX5xv3EjjhQsVWqa6n6xI4wmy9/Qy3l40vhx4XUJbzg4ij02Q130yGLMLLGq/jj8UEYkg +DncUtT2UCIf3JR7VsmAA7G8qKCVuKj4YYxclPz5EIBb2JsglrgVKtOdjLPOMFlN+XPsRGgjBRmKf +Irjxwo1p3Po6WAbfAgMBAAGjgbwwgbkwDwYDVR0TAQH/BAUwAwEB/zAdBgNVHQ4EFgQUGu3+QTmQ +tCRZvgHyUtVF9lo53BEwZAYDVR0jBF0wW4AUGu3+QTmQtCRZvgHyUtVF9lo53BGhOKQ2MDQxCzAJ +BgNVBAYTAkZSMRIwEAYDVQQKDAlEaGlteW90aXMxETAPBgNVBAMMCENlcnRpZ25hggkA/tzjAQ/J +SP8wDgYDVR0PAQH/BAQDAgEGMBEGCWCGSAGG+EIBAQQEAwIABzANBgkqhkiG9w0BAQUFAAOCAQEA +hQMeknH2Qq/ho2Ge6/PAD/Kl1NqV5ta+aDY9fm4fTIrv0Q8hbV6lUmPOEvjvKtpv6zf+EwLHyzs+ +ImvaYS5/1HI93TDhHkxAGYwP15zRgzB7mFncfca5DClMoTOi62c6ZYTTluLtdkVwj7Ur3vkj1klu +PBS1xp81HlDQwY9qcEQCYsuuHWhBp6pX6FOqB9IG9tUUBguRA3UsbHK1YZWaDYu5Def131TN3ubY +1gkIl2PlwS6wt0QmwCbAr1UwnjvVNioZBPRcHv/PLLf/0P2HQBHVESO7SMAhqaQoLf0V+LBOK/Qw +WyH8EZE0vkHve52Xdf+XlcCWWC/qu0bXu+TZLg== +-----END CERTIFICATE----- + +Deutsche Telekom Root CA 2 +========================== +-----BEGIN CERTIFICATE----- +MIIDnzCCAoegAwIBAgIBJjANBgkqhkiG9w0BAQUFADBxMQswCQYDVQQGEwJERTEcMBoGA1UEChMT +RGV1dHNjaGUgVGVsZWtvbSBBRzEfMB0GA1UECxMWVC1UZWxlU2VjIFRydXN0IENlbnRlcjEjMCEG +A1UEAxMaRGV1dHNjaGUgVGVsZWtvbSBSb290IENBIDIwHhcNOTkwNzA5MTIxMTAwWhcNMTkwNzA5 +MjM1OTAwWjBxMQswCQYDVQQGEwJERTEcMBoGA1UEChMTRGV1dHNjaGUgVGVsZWtvbSBBRzEfMB0G +A1UECxMWVC1UZWxlU2VjIFRydXN0IENlbnRlcjEjMCEGA1UEAxMaRGV1dHNjaGUgVGVsZWtvbSBS +b290IENBIDIwggEiMA0GCSqGSIb3DQEBAQUAA4IBDwAwggEKAoIBAQCrC6M14IspFLEUha88EOQ5 +bzVdSq7d6mGNlUn0b2SjGmBmpKlAIoTZ1KXleJMOaAGtuU1cOs7TuKhCQN/Po7qCWWqSG6wcmtoI +KyUn+WkjR/Hg6yx6m/UTAtB+NHzCnjwAWav12gz1MjwrrFDa1sPeg5TKqAyZMg4ISFZbavva4VhY +AUlfckE8FQYBjl2tqriTtM2e66foai1SNNs671x1Udrb8zH57nGYMsRUFUQM+ZtV7a3fGAigo4aK +Se5TBY8ZTNXeWHmb0mocQqvF1afPaA+W5OFhmHZhyJF81j4A4pFQh+GdCuatl9Idxjp9y7zaAzTV +jlsB9WoHtxa2bkp/AgMBAAGjQjBAMB0GA1UdDgQWBBQxw3kbuvVT1xfgiXotF2wKsyudMzAPBgNV +HRMECDAGAQH/AgEFMA4GA1UdDwEB/wQEAwIBBjANBgkqhkiG9w0BAQUFAAOCAQEAlGRZrTlk5ynr +E/5aw4sTV8gEJPB0d8Bg42f76Ymmg7+Wgnxu1MM9756AbrsptJh6sTtU6zkXR34ajgv8HzFZMQSy +zhfzLMdiNlXiItiJVbSYSKpk+tYcNthEeFpaIzpXl/V6ME+un2pMSyuOoAPjPuCp1NJ70rOo4nI8 +rZ7/gFnkm0W09juwzTkZmDLl6iFhkOQxIY40sfcvNUqFENrnijchvllj4PKFiDFT1FQUhXB59C4G +dyd1Lx+4ivn+xbrYNuSD7Odlt79jWvNGr4GUN9RBjNYj1h7P9WgbRGOiWrqnNVmh5XAFmw4jV5mU +Cm26OWMohpLzGITY+9HPBVZkVw== +-----END CERTIFICATE----- + +Cybertrust Global Root +====================== +-----BEGIN CERTIFICATE----- +MIIDoTCCAomgAwIBAgILBAAAAAABD4WqLUgwDQYJKoZIhvcNAQEFBQAwOzEYMBYGA1UEChMPQ3li +ZXJ0cnVzdCwgSW5jMR8wHQYDVQQDExZDeWJlcnRydXN0IEdsb2JhbCBSb290MB4XDTA2MTIxNTA4 +MDAwMFoXDTIxMTIxNTA4MDAwMFowOzEYMBYGA1UEChMPQ3liZXJ0cnVzdCwgSW5jMR8wHQYDVQQD +ExZDeWJlcnRydXN0IEdsb2JhbCBSb290MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA ++Mi8vRRQZhP/8NN57CPytxrHjoXxEnOmGaoQ25yiZXRadz5RfVb23CO21O1fWLE3TdVJDm71aofW +0ozSJ8bi/zafmGWgE07GKmSb1ZASzxQG9Dvj1Ci+6A74q05IlG2OlTEQXO2iLb3VOm2yHLtgwEZL +AfVJrn5GitB0jaEMAs7u/OePuGtm839EAL9mJRQr3RAwHQeWP032a7iPt3sMpTjr3kfb1V05/Iin +89cqdPHoWqI7n1C6poxFNcJQZZXcY4Lv3b93TZxiyWNzFtApD0mpSPCzqrdsxacwOUBdrsTiXSZT +8M4cIwhhqJQZugRiQOwfOHB3EgZxpzAYXSUnpQIDAQABo4GlMIGiMA4GA1UdDwEB/wQEAwIBBjAP +BgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBS2CHsNesysIEyGVjJez6tuhS1wVzA/BgNVHR8EODA2 +MDSgMqAwhi5odHRwOi8vd3d3Mi5wdWJsaWMtdHJ1c3QuY29tL2NybC9jdC9jdHJvb3QuY3JsMB8G +A1UdIwQYMBaAFLYIew16zKwgTIZWMl7Pq26FLXBXMA0GCSqGSIb3DQEBBQUAA4IBAQBW7wojoFRO +lZfJ+InaRcHUowAl9B8Tq7ejhVhpwjCt2BWKLePJzYFa+HMjWqd8BfP9IjsO0QbE2zZMcwSO5bAi +5MXzLqXZI+O4Tkogp24CJJ8iYGd7ix1yCcUxXOl5n4BHPa2hCwcUPUf/A2kaDAtE52Mlp3+yybh2 +hO0j9n0Hq0V+09+zv+mKts2oomcrUtW3ZfA5TGOgkXmTUg9U3YO7n9GPp1Nzw8v/MOx8BLjYRB+T +X3EJIrduPuocA06dGiBh+4E37F78CkWr1+cXVdCg6mCbpvbjjFspwgZgFJ0tl0ypkxWdYcQBX0jW +WL1WMRJOEcgh4LMRkWXbtKaIOM5V +-----END CERTIFICATE----- + +ePKI Root Certification Authority +================================= +-----BEGIN CERTIFICATE----- +MIIFsDCCA5igAwIBAgIQFci9ZUdcr7iXAF7kBtK8nTANBgkqhkiG9w0BAQUFADBeMQswCQYDVQQG +EwJUVzEjMCEGA1UECgwaQ2h1bmdod2EgVGVsZWNvbSBDby4sIEx0ZC4xKjAoBgNVBAsMIWVQS0kg +Um9vdCBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eTAeFw0wNDEyMjAwMjMxMjdaFw0zNDEyMjAwMjMx +MjdaMF4xCzAJBgNVBAYTAlRXMSMwIQYDVQQKDBpDaHVuZ2h3YSBUZWxlY29tIENvLiwgTHRkLjEq +MCgGA1UECwwhZVBLSSBSb290IENlcnRpZmljYXRpb24gQXV0aG9yaXR5MIICIjANBgkqhkiG9w0B +AQEFAAOCAg8AMIICCgKCAgEA4SUP7o3biDN1Z82tH306Tm2d0y8U82N0ywEhajfqhFAHSyZbCUNs +IZ5qyNUD9WBpj8zwIuQf5/dqIjG3LBXy4P4AakP/h2XGtRrBp0xtInAhijHyl3SJCRImHJ7K2RKi +lTza6We/CKBk49ZCt0Xvl/T29de1ShUCWH2YWEtgvM3XDZoTM1PRYfl61dd4s5oz9wCGzh1NlDiv +qOx4UXCKXBCDUSH3ET00hl7lSM2XgYI1TBnsZfZrxQWh7kcT1rMhJ5QQCtkkO7q+RBNGMD+XPNjX +12ruOzjjK9SXDrkb5wdJfzcq+Xd4z1TtW0ado4AOkUPB1ltfFLqfpo0kR0BZv3I4sjZsN/+Z0V0O +WQqraffAsgRFelQArr5T9rXn4fg8ozHSqf4hUmTFpmfwdQcGlBSBVcYn5AGPF8Fqcde+S/uUWH1+ +ETOxQvdibBjWzwloPn9s9h6PYq2lY9sJpx8iQkEeb5mKPtf5P0B6ebClAZLSnT0IFaUQAS2zMnao +lQ2zepr7BxB4EW/hj8e6DyUadCrlHJhBmd8hh+iVBmoKs2pHdmX2Os+PYhcZewoozRrSgx4hxyy/ +vv9haLdnG7t4TY3OZ+XkwY63I2binZB1NJipNiuKmpS5nezMirH4JYlcWrYvjB9teSSnUmjDhDXi +Zo1jDiVN1Rmy5nk3pyKdVDECAwEAAaNqMGgwHQYDVR0OBBYEFB4M97Zn8uGSJglFwFU5Lnc/Qkqi +MAwGA1UdEwQFMAMBAf8wOQYEZyoHAAQxMC8wLQIBADAJBgUrDgMCGgUAMAcGBWcqAwAABBRFsMLH +ClZ87lt4DJX5GFPBphzYEDANBgkqhkiG9w0BAQUFAAOCAgEACbODU1kBPpVJufGBuvl2ICO1J2B0 +1GqZNF5sAFPZn/KmsSQHRGoqxqWOeBLoR9lYGxMqXnmbnwoqZ6YlPwZpVnPDimZI+ymBV3QGypzq +KOg4ZyYr8dW1P2WT+DZdjo2NQCCHGervJ8A9tDkPJXtoUHRVnAxZfVo9QZQlUgjgRywVMRnVvwdV +xrsStZf0X4OFunHB2WyBEXYKCrC/gpf36j36+uwtqSiUO1bd0lEursC9CBWMd1I0ltabrNMdjmEP +NXubrjlpC2JgQCA2j6/7Nu4tCEoduL+bXPjqpRugc6bY+G7gMwRfaKonh+3ZwZCc7b3jajWvY9+r +GNm65ulK6lCKD2GTHuItGeIwlDWSXQ62B68ZgI9HkFFLLk3dheLSClIKF5r8GrBQAuUBo2M3IUxE +xJtRmREOc5wGj1QupyheRDmHVi03vYVElOEMSyycw5KFNGHLD7ibSkNS/jQ6fbjpKdx2qcgw+BRx +gMYeNkh0IkFch4LoGHGLQYlE535YW6i4jRPpp2zDR+2zGp1iro2C6pSe3VkQw63d4k3jMdXH7Ojy +sP6SHhYKGvzZ8/gntsm+HbRsZJB/9OTEW9c3rkIO3aQab3yIVMUWbuF6aC74Or8NpDyJO3inTmOD +BCEIZ43ygknQW/2xzQ+DhNQ+IIX3Sj0rnP0qCglN6oH4EZw= +-----END CERTIFICATE----- + +certSIGN ROOT CA +================ +-----BEGIN CERTIFICATE----- +MIIDODCCAiCgAwIBAgIGIAYFFnACMA0GCSqGSIb3DQEBBQUAMDsxCzAJBgNVBAYTAlJPMREwDwYD +VQQKEwhjZXJ0U0lHTjEZMBcGA1UECxMQY2VydFNJR04gUk9PVCBDQTAeFw0wNjA3MDQxNzIwMDRa +Fw0zMTA3MDQxNzIwMDRaMDsxCzAJBgNVBAYTAlJPMREwDwYDVQQKEwhjZXJ0U0lHTjEZMBcGA1UE +CxMQY2VydFNJR04gUk9PVCBDQTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBALczuX7I +JUqOtdu0KBuqV5Do0SLTZLrTk+jUrIZhQGpgV2hUhE28alQCBf/fm5oqrl0Hj0rDKH/v+yv6efHH +rfAQUySQi2bJqIirr1qjAOm+ukbuW3N7LBeCgV5iLKECZbO9xSsAfsT8AzNXDe3i+s5dRdY4zTW2 +ssHQnIFKquSyAVwdj1+ZxLGt24gh65AIgoDzMKND5pCCrlUoSe1b16kQOA7+j0xbm0bqQfWwCHTD +0IgztnzXdN/chNFDDnU5oSVAKOp4yw4sLjmdjItuFhwvJoIQ4uNllAoEwF73XVv4EOLQunpL+943 +AAAaWyjj0pxzPjKHmKHJUS/X3qwzs08CAwEAAaNCMEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8B +Af8EBAMCAcYwHQYDVR0OBBYEFOCMm9slSbPxfIbWskKHC9BroNnkMA0GCSqGSIb3DQEBBQUAA4IB +AQA+0hyJLjX8+HXd5n9liPRyTMks1zJO890ZeUe9jjtbkw9QSSQTaxQGcu8J06Gh40CEyecYMnQ8 +SG4Pn0vU9x7Tk4ZkVJdjclDVVc/6IJMCopvDI5NOFlV2oHB5bc0hH88vLbwZ44gx+FkagQnIl6Z0 +x2DEW8xXjrJ1/RsCCdtZb3KTafcxQdaIOL+Hsr0Wefmq5L6IJd1hJyMctTEHBDa0GpC9oHRxUIlt +vBTjD4au8as+x6AJzKNI0eDbZOeStc+vckNwi/nDhDwTqn6Sm1dTk/pwwpEOMfmbZ13pljheX7Nz +TogVZ96edhBiIL5VaZVDADlN9u6wWk5JRFRYX0KD +-----END CERTIFICATE----- + +GeoTrust Primary Certification Authority - G3 +============================================= +-----BEGIN CERTIFICATE----- +MIID/jCCAuagAwIBAgIQFaxulBmyeUtB9iepwxgPHzANBgkqhkiG9w0BAQsFADCBmDELMAkGA1UE +BhMCVVMxFjAUBgNVBAoTDUdlb1RydXN0IEluYy4xOTA3BgNVBAsTMChjKSAyMDA4IEdlb1RydXN0 +IEluYy4gLSBGb3IgYXV0aG9yaXplZCB1c2Ugb25seTE2MDQGA1UEAxMtR2VvVHJ1c3QgUHJpbWFy +eSBDZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEczMB4XDTA4MDQwMjAwMDAwMFoXDTM3MTIwMTIz +NTk1OVowgZgxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1HZW9UcnVzdCBJbmMuMTkwNwYDVQQLEzAo +YykgMjAwOCBHZW9UcnVzdCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxNjA0BgNVBAMT +LUdlb1RydXN0IFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgLSBHMzCCASIwDQYJKoZI +hvcNAQEBBQADggEPADCCAQoCggEBANziXmJYHTNXOTIz+uvLh4yn1ErdBojqZI4xmKU4kB6Yzy5j +K/BGvESyiaHAKAxJcCGVn2TAppMSAmUmhsalifD614SgcK9PGpc/BkTVyetyEH3kMSj7HGHmKAdE +c5IiaacDiGydY8hS2pgn5whMcD60yRLBxWeDXTPzAxHsatBT4tG6NmCUgLthY2xbF37fQJQeqw3C +IShwiP/WJmxsYAQlTlV+fe+/lEjetx3dcI0FX4ilm/LC7urRQEFtYjgdVgbFA0dRIBn8exALDmKu +dlW/X3e+PkkBUz2YJQN2JFodtNuJ6nnltrM7P7pMKEF/BqxqjsHQ9gUdfeZChuOl1UcCAwEAAaNC +MEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFMR5yo6hTgMdHNxr +2zFblD4/MH8tMA0GCSqGSIb3DQEBCwUAA4IBAQAtxRPPVoB7eni9n64smefv2t+UXglpp+duaIy9 +cr5HqQ6XErhK8WTTOd8lNNTBzU6B8A8ExCSzNJbGpqow32hhc9f5joWJ7w5elShKKiePEI4ufIbE +Ap7aDHdlDkQNkv39sxY2+hENHYwOB4lqKVb3cvTdFZx3NWZXqxNT2I7BQMXXExZacse3aQHEerGD +AWh9jUGhlBjBJVz88P6DAod8DQ3PLghcSkANPuyBYeYk28rgDi0Hsj5W3I31QYUHSJsMC8tJP33s +t/3LjWeJGqvtux6jAAgIFyqCXDFdRootD4abdNlF+9RAsXqqaC2Gspki4cErx5z481+oghLrGREt +-----END CERTIFICATE----- + +thawte Primary Root CA - G2 +=========================== +-----BEGIN CERTIFICATE----- +MIICiDCCAg2gAwIBAgIQNfwmXNmET8k9Jj1Xm67XVjAKBggqhkjOPQQDAzCBhDELMAkGA1UEBhMC +VVMxFTATBgNVBAoTDHRoYXd0ZSwgSW5jLjE4MDYGA1UECxMvKGMpIDIwMDcgdGhhd3RlLCBJbmMu +IC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxJDAiBgNVBAMTG3RoYXd0ZSBQcmltYXJ5IFJvb3Qg +Q0EgLSBHMjAeFw0wNzExMDUwMDAwMDBaFw0zODAxMTgyMzU5NTlaMIGEMQswCQYDVQQGEwJVUzEV +MBMGA1UEChMMdGhhd3RlLCBJbmMuMTgwNgYDVQQLEy8oYykgMjAwNyB0aGF3dGUsIEluYy4gLSBG +b3IgYXV0aG9yaXplZCB1c2Ugb25seTEkMCIGA1UEAxMbdGhhd3RlIFByaW1hcnkgUm9vdCBDQSAt +IEcyMHYwEAYHKoZIzj0CAQYFK4EEACIDYgAEotWcgnuVnfFSeIf+iha/BebfowJPDQfGAFG6DAJS +LSKkQjnE/o/qycG+1E3/n3qe4rF8mq2nhglzh9HnmuN6papu+7qzcMBniKI11KOasf2twu8x+qi5 +8/sIxpHR+ymVo0IwQDAPBgNVHRMBAf8EBTADAQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQU +mtgAMADna3+FGO6Lts6KDPgR4bswCgYIKoZIzj0EAwMDaQAwZgIxAN344FdHW6fmCsO99YCKlzUN +G4k8VIZ3KMqh9HneteY4sPBlcIx/AlTCv//YoT7ZzwIxAMSNlPzcU9LcnXgWHxUzI1NS41oxXZ3K +rr0TKUQNJ1uo52icEvdYPy5yAlejj6EULg== +-----END CERTIFICATE----- + +thawte Primary Root CA - G3 +=========================== +-----BEGIN CERTIFICATE----- +MIIEKjCCAxKgAwIBAgIQYAGXt0an6rS0mtZLL/eQ+zANBgkqhkiG9w0BAQsFADCBrjELMAkGA1UE +BhMCVVMxFTATBgNVBAoTDHRoYXd0ZSwgSW5jLjEoMCYGA1UECxMfQ2VydGlmaWNhdGlvbiBTZXJ2 +aWNlcyBEaXZpc2lvbjE4MDYGA1UECxMvKGMpIDIwMDggdGhhd3RlLCBJbmMuIC0gRm9yIGF1dGhv +cml6ZWQgdXNlIG9ubHkxJDAiBgNVBAMTG3RoYXd0ZSBQcmltYXJ5IFJvb3QgQ0EgLSBHMzAeFw0w +ODA0MDIwMDAwMDBaFw0zNzEyMDEyMzU5NTlaMIGuMQswCQYDVQQGEwJVUzEVMBMGA1UEChMMdGhh +d3RlLCBJbmMuMSgwJgYDVQQLEx9DZXJ0aWZpY2F0aW9uIFNlcnZpY2VzIERpdmlzaW9uMTgwNgYD +VQQLEy8oYykgMjAwOCB0aGF3dGUsIEluYy4gLSBGb3IgYXV0aG9yaXplZCB1c2Ugb25seTEkMCIG +A1UEAxMbdGhhd3RlIFByaW1hcnkgUm9vdCBDQSAtIEczMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8A +MIIBCgKCAQEAsr8nLPvb2FvdeHsbnndmgcs+vHyu86YnmjSjaDFxODNi5PNxZnmxqWWjpYvVj2At +P0LMqmsywCPLLEHd5N/8YZzic7IilRFDGF/Eth9XbAoFWCLINkw6fKXRz4aviKdEAhN0cXMKQlkC ++BsUa0Lfb1+6a4KinVvnSr0eAXLbS3ToO39/fR8EtCab4LRarEc9VbjXsCZSKAExQGbY2SS99irY +7CFJXJv2eul/VTV+lmuNk5Mny5K76qxAwJ/C+IDPXfRa3M50hqY+bAtTyr2SzhkGcuYMXDhpxwTW +vGzOW/b3aJzcJRVIiKHpqfiYnODz1TEoYRFsZ5aNOZnLwkUkOQIDAQABo0IwQDAPBgNVHRMBAf8E +BTADAQH/MA4GA1UdDwEB/wQEAwIBBjAdBgNVHQ4EFgQUrWyqlGCc7eT/+j4KdCtjA/e2Wb8wDQYJ +KoZIhvcNAQELBQADggEBABpA2JVlrAmSicY59BDlqQ5mU1143vokkbvnRFHfxhY0Cu9qRFHqKweK +A3rD6z8KLFIWoCtDuSWQP3CpMyVtRRooOyfPqsMpQhvfO0zAMzRbQYi/aytlryjvsvXDqmbOe1bu +t8jLZ8HJnBoYuMTDSQPxYA5QzUbF83d597YV4Djbxy8ooAw/dyZ02SUS2jHaGh7cKUGRIjxpp7sC +8rZcJwOJ9Abqm+RyguOhCcHpABnTPtRwa7pxpqpYrvS76Wy274fMm7v/OeZWYdMKp8RcTGB7BXcm +er/YB1IsYvdwY9k5vG8cwnncdimvzsUsZAReiDZuMdRAGmI0Nj81Aa6sY6A= +-----END CERTIFICATE----- + +GeoTrust Primary Certification Authority - G2 +============================================= +-----BEGIN CERTIFICATE----- +MIICrjCCAjWgAwIBAgIQPLL0SAoA4v7rJDteYD7DazAKBggqhkjOPQQDAzCBmDELMAkGA1UEBhMC +VVMxFjAUBgNVBAoTDUdlb1RydXN0IEluYy4xOTA3BgNVBAsTMChjKSAyMDA3IEdlb1RydXN0IElu +Yy4gLSBGb3IgYXV0aG9yaXplZCB1c2Ugb25seTE2MDQGA1UEAxMtR2VvVHJ1c3QgUHJpbWFyeSBD +ZXJ0aWZpY2F0aW9uIEF1dGhvcml0eSAtIEcyMB4XDTA3MTEwNTAwMDAwMFoXDTM4MDExODIzNTk1 +OVowgZgxCzAJBgNVBAYTAlVTMRYwFAYDVQQKEw1HZW9UcnVzdCBJbmMuMTkwNwYDVQQLEzAoYykg +MjAwNyBHZW9UcnVzdCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNlIG9ubHkxNjA0BgNVBAMTLUdl +b1RydXN0IFByaW1hcnkgQ2VydGlmaWNhdGlvbiBBdXRob3JpdHkgLSBHMjB2MBAGByqGSM49AgEG +BSuBBAAiA2IABBWx6P0DFUPlrOuHNxFi79KDNlJ9RVcLSo17VDs6bl8VAsBQps8lL33KSLjHUGMc +KiEIfJo22Av+0SbFWDEwKCXzXV2juLaltJLtbCyf691DiaI8S0iRHVDsJt/WYC69IaNCMEAwDwYD +VR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFBVfNVdRVfslsq0DafwBo/q+ +EVXVMAoGCCqGSM49BAMDA2cAMGQCMGSWWaboCd6LuvpaiIjwH5HTRqjySkwCY/tsXzjbLkGTqQ7m +ndwxHLKgpxgceeHHNgIwOlavmnRs9vuD4DPTCF+hnMJbn0bWtsuRBmOiBuczrD6ogRLQy7rQkgu2 +npaqBA+K +-----END CERTIFICATE----- + +VeriSign Universal Root Certification Authority +=============================================== +-----BEGIN CERTIFICATE----- +MIIEuTCCA6GgAwIBAgIQQBrEZCGzEyEDDrvkEhrFHTANBgkqhkiG9w0BAQsFADCBvTELMAkGA1UE +BhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZWZXJpU2lnbiBUcnVzdCBO +ZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwOCBWZXJpU2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVk +IHVzZSBvbmx5MTgwNgYDVQQDEy9WZXJpU2lnbiBVbml2ZXJzYWwgUm9vdCBDZXJ0aWZpY2F0aW9u +IEF1dGhvcml0eTAeFw0wODA0MDIwMDAwMDBaFw0zNzEyMDEyMzU5NTlaMIG9MQswCQYDVQQGEwJV +UzEXMBUGA1UEChMOVmVyaVNpZ24sIEluYy4xHzAdBgNVBAsTFlZlcmlTaWduIFRydXN0IE5ldHdv +cmsxOjA4BgNVBAsTMShjKSAyMDA4IFZlcmlTaWduLCBJbmMuIC0gRm9yIGF1dGhvcml6ZWQgdXNl +IG9ubHkxODA2BgNVBAMTL1ZlcmlTaWduIFVuaXZlcnNhbCBSb290IENlcnRpZmljYXRpb24gQXV0 +aG9yaXR5MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAx2E3XrEBNNti1xWb/1hajCMj +1mCOkdeQmIN65lgZOIzF9uVkhbSicfvtvbnazU0AtMgtc6XHaXGVHzk8skQHnOgO+k1KxCHfKWGP +MiJhgsWHH26MfF8WIFFE0XBPV+rjHOPMee5Y2A7Cs0WTwCznmhcrewA3ekEzeOEz4vMQGn+HLL72 +9fdC4uW/h2KJXwBL38Xd5HVEMkE6HnFuacsLdUYI0crSK5XQz/u5QGtkjFdN/BMReYTtXlT2NJ8I +AfMQJQYXStrxHXpma5hgZqTZ79IugvHw7wnqRMkVauIDbjPTrJ9VAMf2CGqUuV/c4DPxhGD5WycR +tPwW8rtWaoAljQIDAQABo4GyMIGvMA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMG0G +CCsGAQUFBwEMBGEwX6FdoFswWTBXMFUWCWltYWdlL2dpZjAhMB8wBwYFKw4DAhoEFI/l0xqGrI2O +a8PPgGrUSBgsexkuMCUWI2h0dHA6Ly9sb2dvLnZlcmlzaWduLmNvbS92c2xvZ28uZ2lmMB0GA1Ud +DgQWBBS2d/ppSEefUxLVwuoHMnYH0ZcHGTANBgkqhkiG9w0BAQsFAAOCAQEASvj4sAPmLGd75JR3 +Y8xuTPl9Dg3cyLk1uXBPY/ok+myDjEedO2Pzmvl2MpWRsXe8rJq+seQxIcaBlVZaDrHC1LGmWazx +Y8u4TB1ZkErvkBYoH1quEPuBUDgMbMzxPcP1Y+Oz4yHJJDnp/RVmRvQbEdBNc6N9Rvk97ahfYtTx +P/jgdFcrGJ2BtMQo2pSXpXDrrB2+BxHw1dvd5Yzw1TKwg+ZX4o+/vqGqvz0dtdQ46tewXDpPaj+P +wGZsY6rp2aQW9IHRlRQOfc2VNNnSj3BzgXucfr2YYdhFh5iQxeuGMMY1v/D/w1WIg0vvBZIGcfK4 +mJO37M2CYfE45k+XmCpajQ== +-----END CERTIFICATE----- + +VeriSign Class 3 Public Primary Certification Authority - G4 +============================================================ +-----BEGIN CERTIFICATE----- +MIIDhDCCAwqgAwIBAgIQL4D+I4wOIg9IZxIokYesszAKBggqhkjOPQQDAzCByjELMAkGA1UEBhMC +VVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZWZXJpU2lnbiBUcnVzdCBOZXR3 +b3JrMTowOAYDVQQLEzEoYykgMjAwNyBWZXJpU2lnbiwgSW5jLiAtIEZvciBhdXRob3JpemVkIHVz +ZSBvbmx5MUUwQwYDVQQDEzxWZXJpU2lnbiBDbGFzcyAzIFB1YmxpYyBQcmltYXJ5IENlcnRpZmlj +YXRpb24gQXV0aG9yaXR5IC0gRzQwHhcNMDcxMTA1MDAwMDAwWhcNMzgwMTE4MjM1OTU5WjCByjEL +MAkGA1UEBhMCVVMxFzAVBgNVBAoTDlZlcmlTaWduLCBJbmMuMR8wHQYDVQQLExZWZXJpU2lnbiBU +cnVzdCBOZXR3b3JrMTowOAYDVQQLEzEoYykgMjAwNyBWZXJpU2lnbiwgSW5jLiAtIEZvciBhdXRo +b3JpemVkIHVzZSBvbmx5MUUwQwYDVQQDEzxWZXJpU2lnbiBDbGFzcyAzIFB1YmxpYyBQcmltYXJ5 +IENlcnRpZmljYXRpb24gQXV0aG9yaXR5IC0gRzQwdjAQBgcqhkjOPQIBBgUrgQQAIgNiAASnVnp8 +Utpkmw4tXNherJI9/gHmGUo9FANL+mAnINmDiWn6VMaaGF5VKmTeBvaNSjutEDxlPZCIBIngMGGz +rl0Bp3vefLK+ymVhAIau2o970ImtTR1ZmkGxvEeA3J5iw/mjgbIwga8wDwYDVR0TAQH/BAUwAwEB +/zAOBgNVHQ8BAf8EBAMCAQYwbQYIKwYBBQUHAQwEYTBfoV2gWzBZMFcwVRYJaW1hZ2UvZ2lmMCEw +HzAHBgUrDgMCGgQUj+XTGoasjY5rw8+AatRIGCx7GS4wJRYjaHR0cDovL2xvZ28udmVyaXNpZ24u +Y29tL3ZzbG9nby5naWYwHQYDVR0OBBYEFLMWkf3upm7ktS5Jj4d4gYDs5bG1MAoGCCqGSM49BAMD +A2gAMGUCMGYhDBgmYFo4e1ZC4Kf8NoRRkSAsdk1DPcQdhCPQrNZ8NQbOzWm9kA3bbEhCHQ6qQgIx +AJw9SDkjOVgaFRJZap7v1VmyHVIsmXHNxynfGyphe3HR3vPA5Q06Sqotp9iGKt0uEA== +-----END CERTIFICATE----- + +NetLock Arany (Class Gold) Főtanúsítvány +======================================== +-----BEGIN CERTIFICATE----- +MIIEFTCCAv2gAwIBAgIGSUEs5AAQMA0GCSqGSIb3DQEBCwUAMIGnMQswCQYDVQQGEwJIVTERMA8G +A1UEBwwIQnVkYXBlc3QxFTATBgNVBAoMDE5ldExvY2sgS2Z0LjE3MDUGA1UECwwuVGFuw7pzw610 +dsOhbnlraWFkw7NrIChDZXJ0aWZpY2F0aW9uIFNlcnZpY2VzKTE1MDMGA1UEAwwsTmV0TG9jayBB +cmFueSAoQ2xhc3MgR29sZCkgRsWRdGFuw7pzw610dsOhbnkwHhcNMDgxMjExMTUwODIxWhcNMjgx +MjA2MTUwODIxWjCBpzELMAkGA1UEBhMCSFUxETAPBgNVBAcMCEJ1ZGFwZXN0MRUwEwYDVQQKDAxO +ZXRMb2NrIEtmdC4xNzA1BgNVBAsMLlRhbsO6c8OtdHbDoW55a2lhZMOzayAoQ2VydGlmaWNhdGlv +biBTZXJ2aWNlcykxNTAzBgNVBAMMLE5ldExvY2sgQXJhbnkgKENsYXNzIEdvbGQpIEbFkXRhbsO6 +c8OtdHbDoW55MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAxCRec75LbRTDofTjl5Bu +0jBFHjzuZ9lk4BqKf8owyoPjIMHj9DrTlF8afFttvzBPhCf2nx9JvMaZCpDyD/V/Q4Q3Y1GLeqVw +/HpYzY6b7cNGbIRwXdrzAZAj/E4wqX7hJ2Pn7WQ8oLjJM2P+FpD/sLj916jAwJRDC7bVWaaeVtAk +H3B5r9s5VA1lddkVQZQBr17s9o3x/61k/iCa11zr/qYfCGSji3ZVrR47KGAuhyXoqq8fxmRGILdw +fzzeSNuWU7c5d+Qa4scWhHaXWy+7GRWF+GmF9ZmnqfI0p6m2pgP8b4Y9VHx2BJtr+UBdADTHLpl1 +neWIA6pN+APSQnbAGwIDAKiLo0UwQzASBgNVHRMBAf8ECDAGAQH/AgEEMA4GA1UdDwEB/wQEAwIB +BjAdBgNVHQ4EFgQUzPpnk/C2uNClwB7zU/2MU9+D15YwDQYJKoZIhvcNAQELBQADggEBAKt/7hwW +qZw8UQCgwBEIBaeZ5m8BiFRhbvG5GK1Krf6BQCOUL/t1fC8oS2IkgYIL9WHxHG64YTjrgfpioTta +YtOUZcTh5m2C+C8lcLIhJsFyUR+MLMOEkMNaj7rP9KdlpeuY0fsFskZ1FSNqb4VjMIDw1Z4fKRzC +bLBQWV2QWzuoDTDPv31/zvGdg73JRm4gpvlhUbohL3u+pRVjodSVh/GeufOJ8z2FuLjbvrW5Kfna +NwUASZQDhETnv0Mxz3WLJdH0pmT1kvarBes96aULNmLazAZfNou2XjG4Kvte9nHfRCaexOYNkbQu +dZWAUWpLMKawYqGT8ZvYzsRjdT9ZR7E= +-----END CERTIFICATE----- + +Staat der Nederlanden Root CA - G2 +================================== +-----BEGIN CERTIFICATE----- +MIIFyjCCA7KgAwIBAgIEAJiWjDANBgkqhkiG9w0BAQsFADBaMQswCQYDVQQGEwJOTDEeMBwGA1UE +CgwVU3RhYXQgZGVyIE5lZGVybGFuZGVuMSswKQYDVQQDDCJTdGFhdCBkZXIgTmVkZXJsYW5kZW4g +Um9vdCBDQSAtIEcyMB4XDTA4MDMyNjExMTgxN1oXDTIwMDMyNTExMDMxMFowWjELMAkGA1UEBhMC +TkwxHjAcBgNVBAoMFVN0YWF0IGRlciBOZWRlcmxhbmRlbjErMCkGA1UEAwwiU3RhYXQgZGVyIE5l +ZGVybGFuZGVuIFJvb3QgQ0EgLSBHMjCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAMVZ +5291qj5LnLW4rJ4L5PnZyqtdj7U5EILXr1HgO+EASGrP2uEGQxGZqhQlEq0i6ABtQ8SpuOUfiUtn +vWFI7/3S4GCI5bkYYCjDdyutsDeqN95kWSpGV+RLufg3fNU254DBtvPUZ5uW6M7XxgpT0GtJlvOj +CwV3SPcl5XCsMBQgJeN/dVrlSPhOewMHBPqCYYdu8DvEpMfQ9XQ+pV0aCPKbJdL2rAQmPlU6Yiil +e7Iwr/g3wtG61jj99O9JMDeZJiFIhQGp5Rbn3JBV3w/oOM2ZNyFPXfUib2rFEhZgF1XyZWampzCR +OME4HYYEhLoaJXhena/MUGDWE4dS7WMfbWV9whUYdMrhfmQpjHLYFhN9C0lK8SgbIHRrxT3dsKpI +CT0ugpTNGmXZK4iambwYfp/ufWZ8Pr2UuIHOzZgweMFvZ9C+X+Bo7d7iscksWXiSqt8rYGPy5V65 +48r6f1CGPqI0GAwJaCgRHOThuVw+R7oyPxjMW4T182t0xHJ04eOLoEq9jWYv6q012iDTiIJh8BIi +trzQ1aTsr1SIJSQ8p22xcik/Plemf1WvbibG/ufMQFxRRIEKeN5KzlW/HdXZt1bv8Hb/C3m1r737 +qWmRRpdogBQ2HbN/uymYNqUg+oJgYjOk7Na6B6duxc8UpufWkjTYgfX8HV2qXB72o007uPc5AgMB +AAGjgZcwgZQwDwYDVR0TAQH/BAUwAwEB/zBSBgNVHSAESzBJMEcGBFUdIAAwPzA9BggrBgEFBQcC +ARYxaHR0cDovL3d3dy5wa2lvdmVyaGVpZC5ubC9wb2xpY2llcy9yb290LXBvbGljeS1HMjAOBgNV +HQ8BAf8EBAMCAQYwHQYDVR0OBBYEFJFoMocVHYnitfGsNig0jQt8YojrMA0GCSqGSIb3DQEBCwUA +A4ICAQCoQUpnKpKBglBu4dfYszk78wIVCVBR7y29JHuIhjv5tLySCZa59sCrI2AGeYwRTlHSeYAz ++51IvuxBQ4EffkdAHOV6CMqqi3WtFMTC6GY8ggen5ieCWxjmD27ZUD6KQhgpxrRW/FYQoAUXvQwj +f/ST7ZwaUb7dRUG/kSS0H4zpX897IZmflZ85OkYcbPnNe5yQzSipx6lVu6xiNGI1E0sUOlWDuYaN +kqbG9AclVMwWVxJKgnjIFNkXgiYtXSAfea7+1HAWFpWD2DU5/1JddRwWxRNVz0fMdWVSSt7wsKfk +CpYL+63C4iWEst3kvX5ZbJvw8NjnyvLplzh+ib7M+zkXYT9y2zqR2GUBGR2tUKRXCnxLvJxxcypF +URmFzI79R6d0lR2o0a9OF7FpJsKqeFdbxU2n5Z4FF5TKsl+gSRiNNOkmbEgeqmiSBeGCc1qb3Adb +CG19ndeNIdn8FCCqwkXfP+cAslHkwvgFuXkajDTznlvkN1trSt8sV4pAWja63XVECDdCcAz+3F4h +oKOKwJCcaNpQ5kUQR3i2TtJlycM33+FCY7BXN0Ute4qcvwXqZVUz9zkQxSgqIXobisQk+T8VyJoV +IPVVYpbtbZNQvOSqeK3Zywplh6ZmwcSBo3c6WB4L7oOLnR7SUqTMHW+wmG2UMbX4cQrcufx9MmDm +66+KAQ== +-----END CERTIFICATE----- + +Hongkong Post Root CA 1 +======================= +-----BEGIN CERTIFICATE----- +MIIDMDCCAhigAwIBAgICA+gwDQYJKoZIhvcNAQEFBQAwRzELMAkGA1UEBhMCSEsxFjAUBgNVBAoT +DUhvbmdrb25nIFBvc3QxIDAeBgNVBAMTF0hvbmdrb25nIFBvc3QgUm9vdCBDQSAxMB4XDTAzMDUx +NTA1MTMxNFoXDTIzMDUxNTA0NTIyOVowRzELMAkGA1UEBhMCSEsxFjAUBgNVBAoTDUhvbmdrb25n +IFBvc3QxIDAeBgNVBAMTF0hvbmdrb25nIFBvc3QgUm9vdCBDQSAxMIIBIjANBgkqhkiG9w0BAQEF +AAOCAQ8AMIIBCgKCAQEArP84tulmAknjorThkPlAj3n54r15/gK97iSSHSL22oVyaf7XPwnU3ZG1 +ApzQjVrhVcNQhrkpJsLj2aDxaQMoIIBFIi1WpztUlVYiWR8o3x8gPW2iNr4joLFutbEnPzlTCeqr +auh0ssJlXI6/fMN4hM2eFvz1Lk8gKgifd/PFHsSaUmYeSF7jEAaPIpjhZY4bXSNmO7ilMlHIhqqh +qZ5/dpTCpmy3QfDVyAY45tQM4vM7TG1QjMSDJ8EThFk9nnV0ttgCXjqQesBCNnLsak3c78QA3xMY +V18meMjWCnl3v/evt3a5pQuEF10Q6m/hq5URX208o1xNg1vysxmKgIsLhwIDAQABoyYwJDASBgNV +HRMBAf8ECDAGAQH/AgEDMA4GA1UdDwEB/wQEAwIBxjANBgkqhkiG9w0BAQUFAAOCAQEADkbVPK7i +h9legYsCmEEIjEy82tvuJxuC52pF7BaLT4Wg87JwvVqWuspube5Gi27nKi6Wsxkz67SfqLI37pio +l7Yutmcn1KZJ/RyTZXaeQi/cImyaT/JaFTmxcdcrUehtHJjA2Sr0oYJ71clBoiMBdDhViw+5Lmei +IAQ32pwL0xch4I+XeTRvhEgCIDMb5jREn5Fw9IBehEPCKdJsEhTkYY2sEJCehFC78JZvRZ+K88ps +T/oROhUVRsPNH4NbLUES7VBnQRM9IauUiqpOfMGx+6fWtScvl6tu4B3i0RwsH0Ti/L6RoZz71ilT +c4afU9hDDl3WY4JxHYB0yvbiAmvZWg== +-----END CERTIFICATE----- + +SecureSign RootCA11 +=================== +-----BEGIN CERTIFICATE----- +MIIDbTCCAlWgAwIBAgIBATANBgkqhkiG9w0BAQUFADBYMQswCQYDVQQGEwJKUDErMCkGA1UEChMi +SmFwYW4gQ2VydGlmaWNhdGlvbiBTZXJ2aWNlcywgSW5jLjEcMBoGA1UEAxMTU2VjdXJlU2lnbiBS +b290Q0ExMTAeFw0wOTA0MDgwNDU2NDdaFw0yOTA0MDgwNDU2NDdaMFgxCzAJBgNVBAYTAkpQMSsw +KQYDVQQKEyJKYXBhbiBDZXJ0aWZpY2F0aW9uIFNlcnZpY2VzLCBJbmMuMRwwGgYDVQQDExNTZWN1 +cmVTaWduIFJvb3RDQTExMIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEA/XeqpRyQBTvL +TJszi1oURaTnkBbR31fSIRCkF/3frNYfp+TbfPfs37gD2pRY/V1yfIw/XwFndBWW4wI8h9uuywGO +wvNmxoVF9ALGOrVisq/6nL+k5tSAMJjzDbaTj6nU2DbysPyKyiyhFTOVMdrAG/LuYpmGYz+/3ZMq +g6h2uRMft85OQoWPIucuGvKVCbIFtUROd6EgvanyTgp9UK31BQ1FT0Zx/Sg+U/sE2C3XZR1KG/rP +O7AxmjVuyIsG0wCR8pQIZUyxNAYAeoni8McDWc/V1uinMrPmmECGxc0nEovMe863ETxiYAcjPitA +bpSACW22s293bzUIUPsCh8U+iQIDAQABo0IwQDAdBgNVHQ4EFgQUW/hNT7KlhtQ60vFjmqC+CfZX +t94wDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQEFBQADggEBAKCh +OBZmLqdWHyGcBvod7bkixTgm2E5P7KN/ed5GIaGHd48HCJqypMWvDzKYC3xmKbabfSVSSUOrTC4r +bnpwrxYO4wJs+0LmGJ1F2FXI6Dvd5+H0LgscNFxsWEr7jIhQX5Ucv+2rIrVls4W6ng+4reV6G4pQ +Oh29Dbx7VFALuUKvVaAYga1lme++5Jy/xIWrQbJUb9wlze144o4MjQlJ3WN7WmmWAiGovVJZ6X01 +y8hSyn+B/tlr0/cR7SXf+Of5pPpyl4RTDaXQMhhRdlkUbA/r7F+AjHVDg8OFmP9Mni0N5HeDk061 +lgeLKBObjBmNQSdJQO7e5iNEOdyhIta6A/I= +-----END CERTIFICATE----- + +Microsec e-Szigno Root CA 2009 +============================== +-----BEGIN CERTIFICATE----- +MIIECjCCAvKgAwIBAgIJAMJ+QwRORz8ZMA0GCSqGSIb3DQEBCwUAMIGCMQswCQYDVQQGEwJIVTER +MA8GA1UEBwwIQnVkYXBlc3QxFjAUBgNVBAoMDU1pY3Jvc2VjIEx0ZC4xJzAlBgNVBAMMHk1pY3Jv +c2VjIGUtU3ppZ25vIFJvb3QgQ0EgMjAwOTEfMB0GCSqGSIb3DQEJARYQaW5mb0BlLXN6aWduby5o +dTAeFw0wOTA2MTYxMTMwMThaFw0yOTEyMzAxMTMwMThaMIGCMQswCQYDVQQGEwJIVTERMA8GA1UE +BwwIQnVkYXBlc3QxFjAUBgNVBAoMDU1pY3Jvc2VjIEx0ZC4xJzAlBgNVBAMMHk1pY3Jvc2VjIGUt +U3ppZ25vIFJvb3QgQ0EgMjAwOTEfMB0GCSqGSIb3DQEJARYQaW5mb0BlLXN6aWduby5odTCCASIw +DQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAOn4j/NjrdqG2KfgQvvPkd6mJviZpWNwrZuuyjNA +fW2WbqEORO7hE52UQlKavXWFdCyoDh2Tthi3jCyoz/tccbna7P7ofo/kLx2yqHWH2Leh5TvPmUpG +0IMZfcChEhyVbUr02MelTTMuhTlAdX4UfIASmFDHQWe4oIBhVKZsTh/gnQ4H6cm6M+f+wFUoLAKA +pxn1ntxVUwOXewdI/5n7N4okxFnMUBBjjqqpGrCEGob5X7uxUG6k0QrM1XF+H6cbfPVTbiJfyyvm +1HxdrtbCxkzlBQHZ7Vf8wSN5/PrIJIOV87VqUQHQd9bpEqH5GoP7ghu5sJf0dgYzQ0mg/wu1+rUC +AwEAAaOBgDB+MA8GA1UdEwEB/wQFMAMBAf8wDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBTLD8bf +QkPMPcu1SCOhGnqmKrs0aDAfBgNVHSMEGDAWgBTLD8bfQkPMPcu1SCOhGnqmKrs0aDAbBgNVHREE +FDASgRBpbmZvQGUtc3ppZ25vLmh1MA0GCSqGSIb3DQEBCwUAA4IBAQDJ0Q5eLtXMs3w+y/w9/w0o +lZMEyL/azXm4Q5DwpL7v8u8hmLzU1F0G9u5C7DBsoKqpyvGvivo/C3NqPuouQH4frlRheesuCDfX +I/OMn74dseGkddug4lQUsbocKaQY9hK6ohQU4zE1yED/t+AFdlfBHFny+L/k7SViXITwfn4fs775 +tyERzAMBVnCnEJIeGzSBHq2cGsMEPO0CYdYeBvNfOofyK/FFh+U9rNHHV4S9a67c2Pm2G2JwCz02 +yULyMtd6YebS2z3PyKnJm9zbWETXbzivf3jTo60adbocwTZ8jx5tHMN1Rq41Bab2XD0h7lbwyYIi +LXpUq3DDfSJlgnCW +-----END CERTIFICATE----- + +GlobalSign Root CA - R3 +======================= +-----BEGIN CERTIFICATE----- +MIIDXzCCAkegAwIBAgILBAAAAAABIVhTCKIwDQYJKoZIhvcNAQELBQAwTDEgMB4GA1UECxMXR2xv +YmFsU2lnbiBSb290IENBIC0gUjMxEzARBgNVBAoTCkdsb2JhbFNpZ24xEzARBgNVBAMTCkdsb2Jh +bFNpZ24wHhcNMDkwMzE4MTAwMDAwWhcNMjkwMzE4MTAwMDAwWjBMMSAwHgYDVQQLExdHbG9iYWxT +aWduIFJvb3QgQ0EgLSBSMzETMBEGA1UEChMKR2xvYmFsU2lnbjETMBEGA1UEAxMKR2xvYmFsU2ln +bjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAMwldpB5BngiFvXAg7aEyiie/QV2EcWt +iHL8RgJDx7KKnQRfJMsuS+FggkbhUqsMgUdwbN1k0ev1LKMPgj0MK66X17YUhhB5uzsTgHeMCOFJ +0mpiLx9e+pZo34knlTifBtc+ycsmWQ1z3rDI6SYOgxXG71uL0gRgykmmKPZpO/bLyCiR5Z2KYVc3 +rHQU3HTgOu5yLy6c+9C7v/U9AOEGM+iCK65TpjoWc4zdQQ4gOsC0p6Hpsk+QLjJg6VfLuQSSaGjl +OCZgdbKfd/+RFO+uIEn8rUAVSNECMWEZXriX7613t2Saer9fwRPvm2L7DWzgVGkWqQPabumDk3F2 +xmmFghcCAwEAAaNCMEAwDgYDVR0PAQH/BAQDAgEGMA8GA1UdEwEB/wQFMAMBAf8wHQYDVR0OBBYE +FI/wS3+oLkUkrk1Q+mOai97i3Ru8MA0GCSqGSIb3DQEBCwUAA4IBAQBLQNvAUKr+yAzv95ZURUm7 +lgAJQayzE4aGKAczymvmdLm6AC2upArT9fHxD4q/c2dKg8dEe3jgr25sbwMpjjM5RcOO5LlXbKr8 +EpbsU8Yt5CRsuZRj+9xTaGdWPoO4zzUhw8lo/s7awlOqzJCK6fBdRoyV3XpYKBovHd7NADdBj+1E +bddTKJd+82cEHhXXipa0095MJ6RMG3NzdvQXmcIfeg7jLQitChws/zyrVQ4PkX4268NXSb7hLi18 +YIvDQVETI53O9zJrlAGomecsMx86OyXShkDOOyyGeMlhLxS67ttVb9+E7gUJTb0o2HLO02JQZR7r +kpeDMdmztcpHWD9f +-----END CERTIFICATE----- + +Autoridad de Certificacion Firmaprofesional CIF A62634068 +========================================================= +-----BEGIN CERTIFICATE----- +MIIGFDCCA/ygAwIBAgIIU+w77vuySF8wDQYJKoZIhvcNAQEFBQAwUTELMAkGA1UEBhMCRVMxQjBA +BgNVBAMMOUF1dG9yaWRhZCBkZSBDZXJ0aWZpY2FjaW9uIEZpcm1hcHJvZmVzaW9uYWwgQ0lGIEE2 +MjYzNDA2ODAeFw0wOTA1MjAwODM4MTVaFw0zMDEyMzEwODM4MTVaMFExCzAJBgNVBAYTAkVTMUIw +QAYDVQQDDDlBdXRvcmlkYWQgZGUgQ2VydGlmaWNhY2lvbiBGaXJtYXByb2Zlc2lvbmFsIENJRiBB +NjI2MzQwNjgwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDKlmuO6vj78aI14H9M2uDD +Utd9thDIAl6zQyrET2qyyhxdKJp4ERppWVevtSBC5IsP5t9bpgOSL/UR5GLXMnE42QQMcas9UX4P +B99jBVzpv5RvwSmCwLTaUbDBPLutN0pcyvFLNg4kq7/DhHf9qFD0sefGL9ItWY16Ck6WaVICqjaY +7Pz6FIMMNx/Jkjd/14Et5cS54D40/mf0PmbR0/RAz15iNA9wBj4gGFrO93IbJWyTdBSTo3OxDqqH +ECNZXyAFGUftaI6SEspd/NYrspI8IM/hX68gvqB2f3bl7BqGYTM+53u0P6APjqK5am+5hyZvQWyI +plD9amML9ZMWGxmPsu2bm8mQ9QEM3xk9Dz44I8kvjwzRAv4bVdZO0I08r0+k8/6vKtMFnXkIoctX +MbScyJCyZ/QYFpM6/EfY0XiWMR+6KwxfXZmtY4laJCB22N/9q06mIqqdXuYnin1oKaPnirjaEbsX +LZmdEyRG98Xi2J+Of8ePdG1asuhy9azuJBCtLxTa/y2aRnFHvkLfuwHb9H/TKI8xWVvTyQKmtFLK +bpf7Q8UIJm+K9Lv9nyiqDdVF8xM6HdjAeI9BZzwelGSuewvF6NkBiDkal4ZkQdU7hwxu+g/GvUgU +vzlN1J5Bto+WHWOWk9mVBngxaJ43BjuAiUVhOSPHG0SjFeUc+JIwuwIDAQABo4HvMIHsMBIGA1Ud +EwEB/wQIMAYBAf8CAQEwDgYDVR0PAQH/BAQDAgEGMB0GA1UdDgQWBBRlzeurNR4APn7VdMActHNH +DhpkLzCBpgYDVR0gBIGeMIGbMIGYBgRVHSAAMIGPMC8GCCsGAQUFBwIBFiNodHRwOi8vd3d3LmZp +cm1hcHJvZmVzaW9uYWwuY29tL2NwczBcBggrBgEFBQcCAjBQHk4AUABhAHMAZQBvACAAZABlACAA +bABhACAAQgBvAG4AYQBuAG8AdgBhACAANAA3ACAAQgBhAHIAYwBlAGwAbwBuAGEAIAAwADgAMAAx +ADcwDQYJKoZIhvcNAQEFBQADggIBABd9oPm03cXF661LJLWhAqvdpYhKsg9VSytXjDvlMd3+xDLx +51tkljYyGOylMnfX40S2wBEqgLk9am58m9Ot/MPWo+ZkKXzR4Tgegiv/J2Wv+xYVxC5xhOW1//qk +R71kMrv2JYSiJ0L1ILDCExARzRAVukKQKtJE4ZYm6zFIEv0q2skGz3QeqUvVhyj5eTSSPi5E6PaP +T481PyWzOdxjKpBrIF/EUhJOlywqrJ2X3kjyo2bbwtKDlaZmp54lD+kLM5FlClrD2VQS3a/DTg4f +Jl4N3LON7NWBcN7STyQF82xO9UxJZo3R/9ILJUFI/lGExkKvgATP0H5kSeTy36LssUzAKh3ntLFl +osS88Zj0qnAHY7S42jtM+kAiMFsRpvAFDsYCA0irhpuF3dvd6qJ2gHN99ZwExEWN57kci57q13XR +crHedUTnQn3iV2t93Jm8PYMo6oCTjcVMZcFwgbg4/EMxsvYDNEeyrPsiBsse3RdHHF9mudMaotoR +saS8I8nkvof/uZS2+F0gStRf571oe2XyFR7SOqkt6dhrJKyXWERHrVkY8SFlcN7ONGCoQPHzPKTD +KCOM/iczQ0CgFzzr6juwcqajuUpLXhZI9LK8yIySxZ2frHI2vDSANGupi5LAuBft7HZT9SQBjLMi +6Et8Vcad+qMUu2WFbm5PEn4KPJ2V +-----END CERTIFICATE----- + +Izenpe.com +========== +-----BEGIN CERTIFICATE----- +MIIF8TCCA9mgAwIBAgIQALC3WhZIX7/hy/WL1xnmfTANBgkqhkiG9w0BAQsFADA4MQswCQYDVQQG +EwJFUzEUMBIGA1UECgwLSVpFTlBFIFMuQS4xEzARBgNVBAMMCkl6ZW5wZS5jb20wHhcNMDcxMjEz +MTMwODI4WhcNMzcxMjEzMDgyNzI1WjA4MQswCQYDVQQGEwJFUzEUMBIGA1UECgwLSVpFTlBFIFMu +QS4xEzARBgNVBAMMCkl6ZW5wZS5jb20wggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDJ +03rKDx6sp4boFmVqscIbRTJxldn+EFvMr+eleQGPicPK8lVx93e+d5TzcqQsRNiekpsUOqHnJJAK +ClaOxdgmlOHZSOEtPtoKct2jmRXagaKH9HtuJneJWK3W6wyyQXpzbm3benhB6QiIEn6HLmYRY2xU ++zydcsC8Lv/Ct90NduM61/e0aL6i9eOBbsFGb12N4E3GVFWJGjMxCrFXuaOKmMPsOzTFlUFpfnXC +PCDFYbpRR6AgkJOhkEvzTnyFRVSa0QUmQbC1TR0zvsQDyCV8wXDbO/QJLVQnSKwv4cSsPsjLkkxT +OTcj7NMB+eAJRE1NZMDhDVqHIrytG6P+JrUV86f8hBnp7KGItERphIPzidF0BqnMC9bC3ieFUCbK +F7jJeodWLBoBHmy+E60QrLUk9TiRodZL2vG70t5HtfG8gfZZa88ZU+mNFctKy6lvROUbQc/hhqfK +0GqfvEyNBjNaooXlkDWgYlwWTvDjovoDGrQscbNYLN57C9saD+veIR8GdwYDsMnvmfzAuU8Lhij+ +0rnq49qlw0dpEuDb8PYZi+17cNcC1u2HGCgsBCRMd+RIihrGO5rUD8r6ddIBQFqNeb+Lz0vPqhbB +leStTIo+F5HUsWLlguWABKQDfo2/2n+iD5dPDNMN+9fR5XJ+HMh3/1uaD7euBUbl8agW7EekFwID +AQABo4H2MIHzMIGwBgNVHREEgagwgaWBD2luZm9AaXplbnBlLmNvbaSBkTCBjjFHMEUGA1UECgw+ +SVpFTlBFIFMuQS4gLSBDSUYgQTAxMzM3MjYwLVJNZXJjLlZpdG9yaWEtR2FzdGVpeiBUMTA1NSBG +NjIgUzgxQzBBBgNVBAkMOkF2ZGEgZGVsIE1lZGl0ZXJyYW5lbyBFdG9yYmlkZWEgMTQgLSAwMTAx +MCBWaXRvcmlhLUdhc3RlaXowDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0O +BBYEFB0cZQ6o8iV7tJHP5LGx5r1VdGwFMA0GCSqGSIb3DQEBCwUAA4ICAQB4pgwWSp9MiDrAyw6l +Fn2fuUhfGI8NYjb2zRlrrKvV9pF9rnHzP7MOeIWblaQnIUdCSnxIOvVFfLMMjlF4rJUT3sb9fbga +kEyrkgPH7UIBzg/YsfqikuFgba56awmqxinuaElnMIAkejEWOVt+8Rwu3WwJrfIxwYJOubv5vr8q +hT/AQKM6WfxZSzwoJNu0FXWuDYi6LnPAvViH5ULy617uHjAimcs30cQhbIHsvm0m5hzkQiCeR7Cs +g1lwLDXWrzY0tM07+DKo7+N4ifuNRSzanLh+QBxh5z6ikixL8s36mLYp//Pye6kfLqCTVyvehQP5 +aTfLnnhqBbTFMXiJ7HqnheG5ezzevh55hM6fcA5ZwjUukCox2eRFekGkLhObNA5me0mrZJfQRsN5 +nXJQY6aYWwa9SG3YOYNw6DXwBdGqvOPbyALqfP2C2sJbUjWumDqtujWTI6cfSN01RpiyEGjkpTHC +ClguGYEQyVB1/OpaFs4R1+7vUIgtYf8/QnMFlEPVjjxOAToZpR9GTnfQXeWBIiGH/pR9hNiTrdZo +Q0iy2+tzJOeRf1SktoA+naM8THLCV8Sg1Mw4J87VBp6iSNnpn86CcDaTmjvfliHjWbcM2pE38P1Z +WrOZyGlsQyYBNWNgVYkDOnXYukrZVP/u3oDYLdE41V4tC5h9Pmzb/CaIxw== +-----END CERTIFICATE----- + +Chambers of Commerce Root - 2008 +================================ +-----BEGIN CERTIFICATE----- +MIIHTzCCBTegAwIBAgIJAKPaQn6ksa7aMA0GCSqGSIb3DQEBBQUAMIGuMQswCQYDVQQGEwJFVTFD +MEEGA1UEBxM6TWFkcmlkIChzZWUgY3VycmVudCBhZGRyZXNzIGF0IHd3dy5jYW1lcmZpcm1hLmNv +bS9hZGRyZXNzKTESMBAGA1UEBRMJQTgyNzQzMjg3MRswGQYDVQQKExJBQyBDYW1lcmZpcm1hIFMu +QS4xKTAnBgNVBAMTIENoYW1iZXJzIG9mIENvbW1lcmNlIFJvb3QgLSAyMDA4MB4XDTA4MDgwMTEy +Mjk1MFoXDTM4MDczMTEyMjk1MFowga4xCzAJBgNVBAYTAkVVMUMwQQYDVQQHEzpNYWRyaWQgKHNl +ZSBjdXJyZW50IGFkZHJlc3MgYXQgd3d3LmNhbWVyZmlybWEuY29tL2FkZHJlc3MpMRIwEAYDVQQF +EwlBODI3NDMyODcxGzAZBgNVBAoTEkFDIENhbWVyZmlybWEgUy5BLjEpMCcGA1UEAxMgQ2hhbWJl +cnMgb2YgQ29tbWVyY2UgUm9vdCAtIDIwMDgwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoIC +AQCvAMtwNyuAWko6bHiUfaN/Gh/2NdW928sNRHI+JrKQUrpjOyhYb6WzbZSm891kDFX29ufyIiKA +XuFixrYp4YFs8r/lfTJqVKAyGVn+H4vXPWCGhSRv4xGzdz4gljUha7MI2XAuZPeEklPWDrCQiorj +h40G072QDuKZoRuGDtqaCrsLYVAGUvGef3bsyw/QHg3PmTA9HMRFEFis1tPo1+XqxQEHd9ZR5gN/ +ikilTWh1uem8nk4ZcfUyS5xtYBkL+8ydddy/Js2Pk3g5eXNeJQ7KXOt3EgfLZEFHcpOrUMPrCXZk +NNI5t3YRCQ12RcSprj1qr7V9ZS+UWBDsXHyvfuK2GNnQm05aSd+pZgvMPMZ4fKecHePOjlO+Bd5g +D2vlGts/4+EhySnB8esHnFIbAURRPHsl18TlUlRdJQfKFiC4reRB7noI/plvg6aRArBsNlVq5331 +lubKgdaX8ZSD6e2wsWsSaR6s+12pxZjptFtYer49okQ6Y1nUCyXeG0+95QGezdIp1Z8XGQpvvwyQ +0wlf2eOKNcx5Wk0ZN5K3xMGtr/R5JJqyAQuxr1yW84Ay+1w9mPGgP0revq+ULtlVmhduYJ1jbLhj +ya6BXBg14JC7vjxPNyK5fuvPnnchpj04gftI2jE9K+OJ9dC1vX7gUMQSibMjmhAxhduub+84Mxh2 +EQIDAQABo4IBbDCCAWgwEgYDVR0TAQH/BAgwBgEB/wIBDDAdBgNVHQ4EFgQU+SSsD7K1+HnA+mCI +G8TZTQKeFxkwgeMGA1UdIwSB2zCB2IAU+SSsD7K1+HnA+mCIG8TZTQKeFxmhgbSkgbEwga4xCzAJ +BgNVBAYTAkVVMUMwQQYDVQQHEzpNYWRyaWQgKHNlZSBjdXJyZW50IGFkZHJlc3MgYXQgd3d3LmNh +bWVyZmlybWEuY29tL2FkZHJlc3MpMRIwEAYDVQQFEwlBODI3NDMyODcxGzAZBgNVBAoTEkFDIENh +bWVyZmlybWEgUy5BLjEpMCcGA1UEAxMgQ2hhbWJlcnMgb2YgQ29tbWVyY2UgUm9vdCAtIDIwMDiC +CQCj2kJ+pLGu2jAOBgNVHQ8BAf8EBAMCAQYwPQYDVR0gBDYwNDAyBgRVHSAAMCowKAYIKwYBBQUH +AgEWHGh0dHA6Ly9wb2xpY3kuY2FtZXJmaXJtYS5jb20wDQYJKoZIhvcNAQEFBQADggIBAJASryI1 +wqM58C7e6bXpeHxIvj99RZJe6dqxGfwWPJ+0W2aeaufDuV2I6A+tzyMP3iU6XsxPpcG1Lawk0lgH +3qLPaYRgM+gQDROpI9CF5Y57pp49chNyM/WqfcZjHwj0/gF/JM8rLFQJ3uIrbZLGOU8W6jx+ekbU +RWpGqOt1glanq6B8aBMz9p0w8G8nOSQjKpD9kCk18pPfNKXG9/jvjA9iSnyu0/VU+I22mlaHFoI6 +M6taIgj3grrqLuBHmrS1RaMFO9ncLkVAO+rcf+g769HsJtg1pDDFOqxXnrN2pSB7+R5KBWIBpih1 +YJeSDW4+TTdDDZIVnBgizVGZoCkaPF+KMjNbMMeJL0eYD6MDxvbxrN8y8NmBGuScvfaAFPDRLLmF +9dijscilIeUcE5fuDr3fKanvNFNb0+RqE4QGtjICxFKuItLcsiFCGtpA8CnJ7AoMXOLQusxI0zcK +zBIKinmwPQN/aUv0NCB9szTqjktk9T79syNnFQ0EuPAtwQlRPLJsFfClI9eDdOTlLsn+mCdCxqvG +nrDQWzilm1DefhiYtUU79nm06PcaewaD+9CL2rvHvRirCG88gGtAPxkZumWK5r7VXNM21+9AUiRg +OGcEMeyP84LG3rlV8zsxkVrctQgVrXYlCg17LofiDKYGvCYQbTed7N14jHyAxfDZd0jQ +-----END CERTIFICATE----- + +Global Chambersign Root - 2008 +============================== +-----BEGIN CERTIFICATE----- +MIIHSTCCBTGgAwIBAgIJAMnN0+nVfSPOMA0GCSqGSIb3DQEBBQUAMIGsMQswCQYDVQQGEwJFVTFD +MEEGA1UEBxM6TWFkcmlkIChzZWUgY3VycmVudCBhZGRyZXNzIGF0IHd3dy5jYW1lcmZpcm1hLmNv +bS9hZGRyZXNzKTESMBAGA1UEBRMJQTgyNzQzMjg3MRswGQYDVQQKExJBQyBDYW1lcmZpcm1hIFMu +QS4xJzAlBgNVBAMTHkdsb2JhbCBDaGFtYmVyc2lnbiBSb290IC0gMjAwODAeFw0wODA4MDExMjMx +NDBaFw0zODA3MzExMjMxNDBaMIGsMQswCQYDVQQGEwJFVTFDMEEGA1UEBxM6TWFkcmlkIChzZWUg +Y3VycmVudCBhZGRyZXNzIGF0IHd3dy5jYW1lcmZpcm1hLmNvbS9hZGRyZXNzKTESMBAGA1UEBRMJ +QTgyNzQzMjg3MRswGQYDVQQKExJBQyBDYW1lcmZpcm1hIFMuQS4xJzAlBgNVBAMTHkdsb2JhbCBD +aGFtYmVyc2lnbiBSb290IC0gMjAwODCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAMDf +VtPkOpt2RbQT2//BthmLN0EYlVJH6xedKYiONWwGMi5HYvNJBL99RDaxccy9Wglz1dmFRP+RVyXf +XjaOcNFccUMd2drvXNL7G706tcuto8xEpw2uIRU/uXpbknXYpBI4iRmKt4DS4jJvVpyR1ogQC7N0 +ZJJ0YPP2zxhPYLIj0Mc7zmFLmY/CDNBAspjcDahOo7kKrmCgrUVSY7pmvWjg+b4aqIG7HkF4ddPB +/gBVsIdU6CeQNR1MM62X/JcumIS/LMmjv9GYERTtY/jKmIhYF5ntRQOXfjyGHoiMvvKRhI9lNNgA +TH23MRdaKXoKGCQwoze1eqkBfSbW+Q6OWfH9GzO1KTsXO0G2Id3UwD2ln58fQ1DJu7xsepeY7s2M +H/ucUa6LcL0nn3HAa6x9kGbo1106DbDVwo3VyJ2dwW3Q0L9R5OP4wzg2rtandeavhENdk5IMagfe +Ox2YItaswTXbo6Al/3K1dh3ebeksZixShNBFks4c5eUzHdwHU1SjqoI7mjcv3N2gZOnm3b2u/GSF +HTynyQbehP9r6GsaPMWis0L7iwk+XwhSx2LE1AVxv8Rk5Pihg+g+EpuoHtQ2TS9x9o0o9oOpE9Jh +wZG7SMA0j0GMS0zbaRL/UJScIINZc+18ofLx/d33SdNDWKBWY8o9PeU1VlnpDsogzCtLkykPAgMB +AAGjggFqMIIBZjASBgNVHRMBAf8ECDAGAQH/AgEMMB0GA1UdDgQWBBS5CcqcHtvTbDprru1U8VuT +BjUuXjCB4QYDVR0jBIHZMIHWgBS5CcqcHtvTbDprru1U8VuTBjUuXqGBsqSBrzCBrDELMAkGA1UE +BhMCRVUxQzBBBgNVBAcTOk1hZHJpZCAoc2VlIGN1cnJlbnQgYWRkcmVzcyBhdCB3d3cuY2FtZXJm +aXJtYS5jb20vYWRkcmVzcykxEjAQBgNVBAUTCUE4Mjc0MzI4NzEbMBkGA1UEChMSQUMgQ2FtZXJm +aXJtYSBTLkEuMScwJQYDVQQDEx5HbG9iYWwgQ2hhbWJlcnNpZ24gUm9vdCAtIDIwMDiCCQDJzdPp +1X0jzjAOBgNVHQ8BAf8EBAMCAQYwPQYDVR0gBDYwNDAyBgRVHSAAMCowKAYIKwYBBQUHAgEWHGh0 +dHA6Ly9wb2xpY3kuY2FtZXJmaXJtYS5jb20wDQYJKoZIhvcNAQEFBQADggIBAICIf3DekijZBZRG +/5BXqfEv3xoNa/p8DhxJJHkn2EaqbylZUohwEurdPfWbU1Rv4WCiqAm57OtZfMY18dwY6fFn5a+6 +ReAJ3spED8IXDneRRXozX1+WLGiLwUePmJs9wOzL9dWCkoQ10b42OFZyMVtHLaoXpGNR6woBrX/s +dZ7LoR/xfxKxueRkf2fWIyr0uDldmOghp+G9PUIadJpwr2hsUF1Jz//7Dl3mLEfXgTpZALVza2Mg +9jFFCDkO9HB+QHBaP9BrQql0PSgvAm11cpUJjUhjxsYjV5KTXjXBjfkK9yydYhz2rXzdpjEetrHH +foUm+qRqtdpjMNHvkzeyZi99Bffnt0uYlDXA2TopwZ2yUDMdSqlapskD7+3056huirRXhOukP9Du +qqqHW2Pok+JrqNS4cnhrG+055F3Lm6qH1U9OAP7Zap88MQ8oAgF9mOinsKJknnn4SPIVqczmyETr +P3iZ8ntxPjzxmKfFGBI/5rsoM0LpRQp8bfKGeS/Fghl9CYl8slR2iK7ewfPM4W7bMdaTrpmg7yVq +c5iJWzouE4gev8CSlDQb4ye3ix5vQv/n6TebUB0tovkC7stYWDpxvGjjqsGvHCgfotwjZT+B6q6Z +09gwzxMNTxXJhLynSC34MCN32EZLeW32jO06f2ARePTpm67VVMB0gNELQp/B +-----END CERTIFICATE----- + +Go Daddy Root Certificate Authority - G2 +======================================== +-----BEGIN CERTIFICATE----- +MIIDxTCCAq2gAwIBAgIBADANBgkqhkiG9w0BAQsFADCBgzELMAkGA1UEBhMCVVMxEDAOBgNVBAgT +B0FyaXpvbmExEzARBgNVBAcTClNjb3R0c2RhbGUxGjAYBgNVBAoTEUdvRGFkZHkuY29tLCBJbmMu +MTEwLwYDVQQDEyhHbyBEYWRkeSBSb290IENlcnRpZmljYXRlIEF1dGhvcml0eSAtIEcyMB4XDTA5 +MDkwMTAwMDAwMFoXDTM3MTIzMTIzNTk1OVowgYMxCzAJBgNVBAYTAlVTMRAwDgYDVQQIEwdBcml6 +b25hMRMwEQYDVQQHEwpTY290dHNkYWxlMRowGAYDVQQKExFHb0RhZGR5LmNvbSwgSW5jLjExMC8G +A1UEAxMoR28gRGFkZHkgUm9vdCBDZXJ0aWZpY2F0ZSBBdXRob3JpdHkgLSBHMjCCASIwDQYJKoZI +hvcNAQEBBQADggEPADCCAQoCggEBAL9xYgjx+lk09xvJGKP3gElY6SKDE6bFIEMBO4Tx5oVJnyfq +9oQbTqC023CYxzIBsQU+B07u9PpPL1kwIuerGVZr4oAH/PMWdYA5UXvl+TW2dE6pjYIT5LY/qQOD ++qK+ihVqf94Lw7YZFAXK6sOoBJQ7RnwyDfMAZiLIjWltNowRGLfTshxgtDj6AozO091GB94KPutd +fMh8+7ArU6SSYmlRJQVhGkSBjCypQ5Yj36w6gZoOKcUcqeldHraenjAKOc7xiID7S13MMuyFYkMl +NAJWJwGRtDtwKj9useiciAF9n9T521NtYJ2/LOdYq7hfRvzOxBsDPAnrSTFcaUaz4EcCAwEAAaNC +MEAwDwYDVR0TAQH/BAUwAwEB/zAOBgNVHQ8BAf8EBAMCAQYwHQYDVR0OBBYEFDqahQcQZyi27/a9 +BUFuIMGU2g/eMA0GCSqGSIb3DQEBCwUAA4IBAQCZ21151fmXWWcDYfF+OwYxdS2hII5PZYe096ac +vNjpL9DbWu7PdIxztDhC2gV7+AJ1uP2lsdeu9tfeE8tTEH6KRtGX+rcuKxGrkLAngPnon1rpN5+r +5N9ss4UXnT3ZJE95kTXWXwTrgIOrmgIttRD02JDHBHNA7XIloKmf7J6raBKZV8aPEjoJpL1E/QYV +N8Gb5DKj7Tjo2GTzLH4U/ALqn83/B2gX2yKQOC16jdFU8WnjXzPKej17CuPKf1855eJ1usV2GDPO +LPAvTK33sefOT6jEm0pUBsV/fdUID+Ic/n4XuKxe9tQWskMJDE32p2u0mYRlynqI4uJEvlz36hz1 +-----END CERTIFICATE----- + +Starfield Root Certificate Authority - G2 +========================================= +-----BEGIN CERTIFICATE----- +MIID3TCCAsWgAwIBAgIBADANBgkqhkiG9w0BAQsFADCBjzELMAkGA1UEBhMCVVMxEDAOBgNVBAgT +B0FyaXpvbmExEzARBgNVBAcTClNjb3R0c2RhbGUxJTAjBgNVBAoTHFN0YXJmaWVsZCBUZWNobm9s +b2dpZXMsIEluYy4xMjAwBgNVBAMTKVN0YXJmaWVsZCBSb290IENlcnRpZmljYXRlIEF1dGhvcml0 +eSAtIEcyMB4XDTA5MDkwMTAwMDAwMFoXDTM3MTIzMTIzNTk1OVowgY8xCzAJBgNVBAYTAlVTMRAw +DgYDVQQIEwdBcml6b25hMRMwEQYDVQQHEwpTY290dHNkYWxlMSUwIwYDVQQKExxTdGFyZmllbGQg +VGVjaG5vbG9naWVzLCBJbmMuMTIwMAYDVQQDEylTdGFyZmllbGQgUm9vdCBDZXJ0aWZpY2F0ZSBB +dXRob3JpdHkgLSBHMjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAL3twQP89o/8ArFv +W59I2Z154qK3A2FWGMNHttfKPTUuiUP3oWmb3ooa/RMgnLRJdzIpVv257IzdIvpy3Cdhl+72WoTs +bhm5iSzchFvVdPtrX8WJpRBSiUZV9Lh1HOZ/5FSuS/hVclcCGfg |