From f0e901a346f1190fd45a3c883e97db9564c369e36c7f5919b3d6b0bb9e71acf9 Mon Sep 17 00:00:00 2001 From: OBS User unknown Date: Mon, 23 Jul 2007 19:31:32 +0000 Subject: [PATCH] OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/tcsh?expand=0&rev=6 --- tcsh-6.15.00-longjmp.dif | 77 ++++++++++++++++++++++++++++++++++++++++ tcsh-6.15.00.dif | 3 +- tcsh.changes | 6 ++++ tcsh.spec | 12 +++++-- 4 files changed, 95 insertions(+), 3 deletions(-) create mode 100644 tcsh-6.15.00-longjmp.dif diff --git a/tcsh-6.15.00-longjmp.dif b/tcsh-6.15.00-longjmp.dif new file mode 100644 index 0000000..b7faf03 --- /dev/null +++ b/tcsh-6.15.00-longjmp.dif @@ -0,0 +1,77 @@ +--- sh.h ++++ sh.h 2007-07-23 12:01:10.230408643 +0200 +@@ -640,7 +640,7 @@ EXTERN int SHDIAG IZERO; /* Diagnostic + EXTERN int OLDSTD IZERO; /* Old standard input (def for cmds) */ + + +-#if SYSVREL == 4 && defined(_UTS) ++#if (SYSVREL == 4 && defined(_UTS)) || defined(__linux__) + /* + * From: fadden@uts.amdahl.com (Andy McFadden) + * we need sigsetjmp for UTS4, but not UTS2.1 +@@ -658,7 +658,7 @@ EXTERN int OLDSTD IZERO; /* Old standa + + #ifdef SIGSETJMP + typedef struct { sigjmp_buf j; } jmp_buf_t; +-# define setexit() sigsetjmp(reslab.j) ++# define setexit() sigsetjmp(reslab.j, 1) + # define _reset() siglongjmp(reslab.j, 1) + #else + typedef struct { jmp_buf j; } jmp_buf_t; +--- sh.c ++++ sh.c 2007-07-23 12:02:41.640206073 +0200 +@@ -78,7 +78,7 @@ extern int NLSMapsAreInited; + * ported to Apple Unix (TM) (OREO) 26 -- 29 Jun 1987 + */ + +-jmp_buf_t reslab INIT_ZERO_STRUCT; ++jmp_buf_t reslab; + + static const char tcshstr[] = "tcsh"; + +@@ -178,6 +178,8 @@ main(int argc, char **argv) + int osetintr; + struct sigaction oparintr; + ++ memset(&reslab, 0, sizeof(reslab)); ++ + #ifdef WINNT_NATIVE + nt_init(); + #endif /* WINNT_NATIVE */ +@@ -2026,7 +2028,10 @@ process(int catch) + #endif /* SIG_WINDOW */ + setcopy(STR_, InputBuf, VAR_READWRITE | VAR_NOGLOB); + cmd_done: +- cleanup_until(¶ml); ++ if (cleanup_reset()) ++ cleanup_until(¶ml); ++ else ++ haderr = 1; + } + exitset--; + cleanup_pop_mark(omark); +--- sh.decls.h ++++ sh.decls.h 2007-07-23 15:37:27.493023737 +0200 +@@ -90,6 +90,7 @@ extern void cleanup_push_internal(voi + #define cleanup_push(v, f) cleanup_push_internal(v, f) + #endif + ); ++extern int cleanup_reset (void); + extern void cleanup_ignore(void *); + extern void cleanup_until (void *); + extern void cleanup_until_mark(void); +--- sh.err.c ++++ sh.err.c 2007-07-23 15:39:48.944172212 +0200 +@@ -448,6 +448,12 @@ cleanup_until(void *last_var) + abort(); + } + ++int ++cleanup_reset(void) ++{ ++ return (cleanup_sp > cleanup_mark); ++} ++ + void + cleanup_until_mark(void) + { diff --git a/tcsh-6.15.00.dif b/tcsh-6.15.00.dif index 356480c..e6e2f62 100644 --- a/tcsh-6.15.00.dif +++ b/tcsh-6.15.00.dif @@ -1,9 +1,10 @@ --- .pkgextract +++ .pkgextract 2006-04-25 14:58:31.000000000 +0200 -@@ -0,0 +1,3 @@ +@@ -0,0 +1,4 @@ +patch -p0 -s --suffix=.spell < ../tcsh-6.15.00-spelling.dif +patch -p0 -s --suffix=.utf8 < ../tcsh-6.15.00-utf8.dif +patch -p0 -s --suffix=.pipe < ../tcsh-6.15.00-pipe.dif ++patch -p0 -s --suffix=.longjmp < ../tcsh-6.15.00-longjmp.dif --- Makefile.in +++ Makefile.in 2006-04-25 14:58:31.000000000 +0200 @@ -510,12 +510,12 @@ vgrind: diff --git a/tcsh.changes b/tcsh.changes index 6b0fa9b..8bafeb6 100644 --- a/tcsh.changes +++ b/tcsh.changes @@ -1,3 +1,9 @@ +------------------------------------------------------------------- +Mon Jul 23 16:26:34 CEST 2007 - werner@suse.de + +- Add workaround to avoid run onto already cleaned stack pointer + after an error (bug #293395) + ------------------------------------------------------------------- Thu Jul 19 12:21:34 CEST 2007 - werner@suse.de diff --git a/tcsh.spec b/tcsh.spec index e824e3f..dca4a82 100644 --- a/tcsh.spec +++ b/tcsh.spec @@ -18,7 +18,7 @@ Group: System/Shells Requires: gawk textutils Autoreqprov: on Version: 6.15.00 -Release: 3 +Release: 5 Summary: The C SHell Source: ftp.astron.com:/pub/tcsh/tcsh-6.15.00.tar.bz2 Source1: nls-iconv @@ -28,6 +28,7 @@ Patch: tcsh-6.15.00.dif Patch1: tcsh-6.15.00-spelling.dif Patch2: tcsh-6.15.00-utf8.dif Patch3: tcsh-6.15.00-pipe.dif +Patch4: tcsh-6.15.00-longjmp.dif BuildRoot: %{_tmppath}/%{name}-%{version}-build %description @@ -49,12 +50,13 @@ Authors: %patch1 -p0 -b .spell %patch2 -p0 -b .utf8 %patch3 -p0 -b .pipe +%patch4 -p0 -b .longjmp %patch sh $RPM_SOURCE_DIR/nls-iconv %build CC=gcc - CFLAGS="$RPM_OPT_FLAGS -pipe" + CFLAGS="$RPM_OPT_FLAGS -D_GNU_SOURCE -pipe" export CC CFLAGS %ifarch %ix86 CPU=i586 @@ -73,6 +75,9 @@ Authors: --disable-rpath \ --with-gnu-ld make +# +# requires a working terminal on stdin +# make check make catalogs %install @@ -128,6 +133,9 @@ Authors: %{_datadir}/locale/*/LC_MESSAGES/tcsh %changelog +* Mon Jul 23 2007 - werner@suse.de +- Add workaround to avoid run onto already cleaned stack pointer + after an error (bug #293395) * Thu Jul 19 2007 - werner@suse.de - Small correction in bindkey.tcsh: for urxvt, mlterm, and konsole * Mon Jul 16 2007 - werner@suse.de