[ksh/f19] fix overflow in subshell loop

Michal Hlavinka mhlavink at fedoraproject.org
Fri Jan 17 14:33:36 UTC 2014


commit 9e8e7f1448b3ff916f365e285b61f9c80b7a12e6
Author: Michal Hlavinka <mhlavink at redhat.com>
Date:   Fri Jan 17 15:33:48 2014 +0100

    fix overflow in subshell loop

 ksh-20130628-longer.patch |   56 +++++++++++++++++++++++++++++++++++++++++++++
 ksh.spec                  |    7 +++++-
 2 files changed, 62 insertions(+), 1 deletions(-)
---
diff --git a/ksh-20130628-longer.patch b/ksh-20130628-longer.patch
new file mode 100644
index 0000000..887fafd
--- /dev/null
+++ b/ksh-20130628-longer.patch
@@ -0,0 +1,56 @@
+diff -up ksh-20120801/src/cmd/ksh93/include/defs.h.longer ksh-20120801/src/cmd/ksh93/include/defs.h
+--- ksh-20120801/src/cmd/ksh93/include/defs.h.longer	2012-06-25 20:47:47.000000000 +0200
++++ ksh-20120801/src/cmd/ksh93/include/defs.h	2014-01-17 13:10:49.624714556 +0100
+@@ -162,8 +162,8 @@ struct shared
+ 	Namval_t	*prev_table;	/* previous table used in nv_open  */ \
+ 	Sfio_t		*outpool;	/* ouput stream pool */ \
+ 	long		timeout;	/* read timeout */ \
+-	short		curenv;		/* current subshell number */ \
+-	short		jobenv;		/* subshell number for jobs */ \
++	long		curenv;		/* current subshell number */ \
++	long		jobenv;		/* subshell number for jobs */ \
+ 	int		infd;		/* input file descriptor */ \
+ 	short		nextprompt;	/* next prompt is PS<nextprompt> */ \
+ 	short		poolfiles; \
+diff -up ksh-20120801/src/cmd/ksh93/include/jobs.h.longer ksh-20120801/src/cmd/ksh93/include/jobs.h
+--- ksh-20120801/src/cmd/ksh93/include/jobs.h.longer	2011-12-19 13:36:37.000000000 +0100
++++ ksh-20120801/src/cmd/ksh93/include/jobs.h	2014-01-17 13:10:49.625714536 +0100
+@@ -87,7 +87,7 @@ struct process
+ 	unsigned short	p_exit;		/* exit value or signal number */
+ 	unsigned short	p_exitmin;	/* minimum exit value for xargs */
+ 	unsigned short	p_flag;		/* flags - see below */
+-	int		p_env;		/* subshell environment number */
++	long		p_env;		/* subshell environment number */
+ #ifdef JOBS
+ 	off_t		p_name;		/* history file offset for command */
+ 	struct termios	p_stty;		/* terminal state for job */
+diff -up ksh-20120801/src/cmd/ksh93/sh/subshell.c.longer ksh-20120801/src/cmd/ksh93/sh/subshell.c
+--- ksh-20120801/src/cmd/ksh93/sh/subshell.c.longer	2014-01-17 13:10:49.559715864 +0100
++++ ksh-20120801/src/cmd/ksh93/sh/subshell.c	2014-01-17 13:13:41.392290104 +0100
+@@ -98,7 +98,7 @@ static struct subshell
+ #endif /* SHOPT_COSHELL */
+ } *subshell_data;
+ 
+-static int subenv;
++static long subenv;
+ 
+ 
+ /*
+@@ -171,7 +171,7 @@ void sh_subfork(void)
+ {
+ 	register struct subshell *sp = subshell_data;
+ 	Shell_t	*shp = sp->shp;
+-	int	curenv = shp->curenv;
++	long curenv = shp->curenv;
+ 	pid_t pid;
+ 	char *trap = shp->st.trapcom[0];
+ 	if(trap)
+@@ -461,7 +461,7 @@ Sfio_t *sh_subshell(Shell_t *shp,Shnode_
+ 	struct subshell sub_data;
+ 	register struct subshell *sp = &sub_data;
+ 	int jmpval,nsig=0,duped=0;
+-	int savecurenv = shp->curenv;
++	long savecurenv = shp->curenv;
+ 	int savejobpgid = job.curpgid;
+ 	int *saveexitval = job.exitval;
+ 	int16_t subshell;
diff --git a/ksh.spec b/ksh.spec
index 4373c00..d74b330 100644
--- a/ksh.spec
+++ b/ksh.spec
@@ -6,7 +6,7 @@ URL:          http://www.kornshell.com/
 Group:        System Environment/Shells
 License:      EPL
 Version:      20120801
-Release:      11%{?dist}
+Release:      12%{?dist}
 Source0:      http://www.research.att.com/~gsf/download/tgz/ast-ksh.%{releasedate}.tgz
 Source1:      http://www.research.att.com/~gsf/download/tgz/INIT.%{releasedate}.tgz
 Source2:      kshcomp.conf
@@ -29,6 +29,7 @@ Patch8: ksh-20120801-kshmfix.patch
 Patch9: ksh-20120801-memlik.patch
 Patch10: ksh-20120801-mtty.patch
 Patch11: ksh-20120801-argvfix.patch
+Patch12: ksh-20130628-longer.patch
 
 BuildRoot:    %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
 Conflicts:    pdksh
@@ -59,6 +60,7 @@ with "sh" (the Bourne Shell).
 %patch9 -p1 -b .memlik
 %patch10 -p1 -b .mtty
 %patch11 -p1 -b .argvfix
+%patch12 -p1 -b .longer
 
 #/dev/fd test does not work because of mock
 sed -i 's|ls /dev/fd|ls /proc/self/fd|' src/cmd/ksh93/features/options
@@ -153,6 +155,9 @@ fi
     rm -rf $RPM_BUILD_ROOT
 
 %changelog
+* Fri Jan 17 2014 Michal Hlavinka <mhlavink at redhat.com> - 20120801-12
+- fix overflow in subshell loop
+
 * Tue Jan 14 2014 Michal Hlavinka <mhlavink at redhat.com> - 20120801-11
 - fix argv rewrite (#1047508)
 - ksh stops on read when monitor mode is enabled


More information about the scm-commits mailing list