Package: ksh
Version: 93u+-1.2
Severity: normal
Tags: patch

This is basically a mirror of bug #1053938 reported for Fedora:
https://bugzilla.redhat.com/show_bug.cgi?id=1053938

The bug exists for the ksh package on Debian too (tried both
stable and sid on PowerPC) and can be reproduced pretty reliable
with the details in the above mentioned bug report.

Michal Hlavinka was able to provide a fix that has been included
the latest Fedora package of ksh.

I'll attach Michal's patch to that bug report. Moving this to
debian/patches and editing the series file built the package just fine
and fixed the bug.


-- System Information:
Debian Release: 7.3
  APT prefers stable-updates
  APT policy: (500, 'stable-updates'), (500, 'proposed-updates'), (500, 
'stable')
Architecture: powerpc (ppc)

Kernel: Linux 3.13.0-rc8
Locale: LANG=en_US.UTF-8, LC_CTYPE=en_US.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash

Versions of packages ksh depends on:
ii  libc6  2.13-38+deb7u1

ksh recommends no packages.

ksh suggests no packages.

-- no debconf information
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;

Reply via email to