From 0de832d6c52c3bddffb329cbc546ade86f447d41 Mon Sep 17 00:00:00 2001 From: "David Kaspar [Dee'Kej]" Date: Tue, 26 Apr 2016 16:55:27 +0200 Subject: [PATCH] tcsh-6.18.01-elf-interpreter.patch removed This patch was not working in latest tcsh packages in Fedora, and it was not accepted by upstream. Generally, shells (bash, ksh, tcsh, ...) does not want to have this kind of binary parsing inside of them. See: --- tcsh-6.18.01-elf-interpreter.patch | 198 ----------------------------- tcsh.spec | 3 +- 2 files changed, 1 insertion(+), 200 deletions(-) delete mode 100644 tcsh-6.18.01-elf-interpreter.patch diff --git a/tcsh-6.18.01-elf-interpreter.patch b/tcsh-6.18.01-elf-interpreter.patch deleted file mode 100644 index a583f13..0000000 --- a/tcsh-6.18.01-elf-interpreter.patch +++ /dev/null @@ -1,198 +0,0 @@ -From b913dff5f7c123691b9aea3cee4bf270bc56659b Mon Sep 17 00:00:00 2001 -From: rpm-build -Date: Wed, 27 Aug 2014 13:55:10 +0200 -Subject: [PATCH 12/14] report missing ELF interpreter - -Resolves: #711066 - -Adjusted for tcsh-6.19.00 by Fridolin Pokorny - ---- - configure.in | 5 ++- - sh.err.c | 4 +- - sh.exec.c | 140 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ - 4 files changed, 152 insertions(+), 3 deletions(-) - -diff --git a/sh.err.c b/sh.err.c -index 29d41c3..262f9bf 100644 ---- a/sh.err.c -+++ b/sh.err.c -@@ -189,7 +189,8 @@ char *seterr = NULL; /* Holds last error if there was one */ - #define ERR_INVALID 133 - #define ERR_BADCOLORVAR 134 - #define ERR_EOF 135 --#define NO_ERRORS 136 -+#define ERR_ELFINTERP 136 -+#define NO_ERRORS 137 - - static const char *elst[NO_ERRORS] INIT_ZERO_STRUCT; - -@@ -367,6 +368,7 @@ errinit(void) - elst[ERR_BADJOB] = CSAVS(1, 136, "No such job (badjob)"); - elst[ERR_BADCOLORVAR] = CSAVS(1, 137, "Unknown colorls variable `%c%c'"); - elst[ERR_EOF] = CSAVS(1, 138, "Unexpected end of file"); -+ elst[ERR_ELFINTERP] = CSAVS(1, 139, "No such ELF interpreter"); - } - - /* Cleanup data. */ -diff --git a/sh.exec.c b/sh.exec.c -index 2b41a53..c1f4b7e 100644 ---- a/sh.exec.c -+++ b/sh.exec.c -@@ -40,6 +40,10 @@ RCSID("$tcsh: sh.exec.c,v 3.79 2011/02/25 23:58:34 christos Exp $") - #include - #endif /*WINNT_NATIVE*/ - -+#ifdef HAVE_ELF_H -+#include -+#endif /*HAVE_ELF_H*/ -+ - /* - * C shell - */ -@@ -509,6 +513,142 @@ texec(Char *sf, Char **st) - case 0: /* execv fails and returns 0! */ - #endif /* _IBMR2 */ - case ENOENT: -+#ifdef HAVE_ELF_H -+ /* -+ * If dynamically linked ELF binary is not executed and exists, -+ * the real reason ENOENT is that ELF interpreter is missing. -+ * -+ * Written by Ulrich Drepper for bash -+ * adopted by Fridolin Pokorny -+ */ -+ if ((fd = xopen(f, O_RDONLY|O_LARGEFILE)) != -1) { -+ int nread; -+ char *sample; -+ int offset = -1; -+ int sample_size; -+ -+ /* Inspect 32 and 64 ELF */ -+ if (sizeof(Elf64_Ehdr) > sizeof(Elf32_Ehdr)) -+ sample_size = sizeof(Elf64_Ehdr); -+ else -+ sample_size = sizeof(Elf32_Ehdr); -+ -+ sample = xmalloc(sample_size); -+ -+ if (sample != 0 && -+ (nread = xread(fd, sample, sample_size)) == sample_size) { -+ if (memcmp(sample, ELFMAG, SELFMAG) == 0) { -+ if (sample[EI_CLASS] == ELFCLASS32 && -+ sample_size >= sizeof(Elf32_Ehdr)) { -+ Elf32_Ehdr ehdr; -+ Elf32_Phdr *phdr; -+ int nphdr; -+ -+ /* -+ * We have to copy the data since the sample buffer -+ * might not be aligned correctly to be accessed as -+ * an Elf32_Ehdr struct. -+ */ -+ memcpy(&ehdr, sample, sizeof(Elf32_Ehdr)); -+ -+ nphdr = ehdr.e_phnum; -+ phdr = xmalloc(nphdr * ehdr.e_phentsize); -+ if(phdr != NULL) { -+#ifdef HAVE_PREAD -+ nread = pread(fd, phdr, nphdr * ehdr.e_phentsize, -+ ehdr.e_phoff); -+#else /* !HAVE_PREAD */ -+ if (lseek(fd, ehdr.e_phoff, SEEK_SET) != -1) -+ nread = read(fd, phdr, -+ nphdr * ehdr.e_phentsize); -+ else -+ nread = -1; -+#endif /* HAVE_PREAD */ -+ if (nread == nphdr * ehdr.e_phentsize) { -+ while (nphdr-- > 0) { -+ if (phdr[nphdr].p_type == PT_INTERP) { -+ offset = phdr[nphdr].p_offset; -+ break; -+ } -+ } -+ } -+ xfree(phdr); -+ } -+ } else if (sample[EI_CLASS] == ELFCLASS64 && -+ sample_size >= sizeof(Elf64_Ehdr)) { -+ Elf64_Ehdr ehdr; -+ Elf64_Phdr *phdr; -+ int nphdr; -+ -+ /* -+ * We have to copy the data since the sample buffer -+ * might not be aligned correctly to be accessed as -+ * an Elf64_Ehdr struct. -+ */ -+ memcpy(&ehdr, sample, sizeof(Elf64_Ehdr)); -+ -+ nphdr = ehdr.e_phnum; -+ phdr = xmalloc(nphdr * ehdr.e_phentsize); -+ if (phdr != NULL) { -+#ifdef HAVE_PREAD -+ nread = pread (fd, phdr, nphdr * ehdr.e_phentsize, -+ ehdr.e_phoff); -+#else /* !HAVE_PREAD */ -+ if (lseek(fd, ehdr.e_phoff, SEEK_SET) != -1) -+ nread = read (fd, phdr, -+ nphdr * ehdr.e_phentsize); -+ else -+ nread = -1; -+#endif /* HAVE_PREAD */ -+ if (nread == nphdr * ehdr.e_phentsize) { -+ while (nphdr-- > 0) { -+ if (phdr[nphdr].p_type == PT_INTERP) { -+ offset = phdr[nphdr].p_offset; -+ break; -+ } -+ } -+ } -+ xfree (phdr); -+ } -+ } -+ -+ if (offset != -1) { -+ size_t maxlen = 0; -+ size_t actlen = 0; -+ char *interp = NULL; -+ -+ do { -+ if (actlen == maxlen) { -+ char *newinterp = xrealloc(interp, maxlen += 200); -+ if (newinterp == NULL) { -+ actlen = 0; -+ break; -+ } -+ interp = newinterp; -+#ifdef HAVE_PREAD -+ actlen = pread (fd, interp, maxlen, offset); -+#else /* !HAVE_PREAD */ -+ if (lseek (fd, offset, SEEK_SET) != -1) -+ actlen = read (fd, interp, maxlen); -+ else -+ actlen = -1; -+#endif /* HAVE_PREAD */ -+ } -+ } while (actlen > 0 && -+ memchr (interp, '\0', actlen) == NULL); -+ -+ if (actlen > 0) { -+ xclose (fd); -+ xfree (interp); -+ setname(f); -+ stderror(ERR_NAME | ERR_ELFINTERP); -+ } -+ } -+ } -+ } -+ xfree(sample); -+ } -+#endif /* HAVE_ELF_H */ - break; - - default: --- -1.9.3 - diff --git a/tcsh.spec b/tcsh.spec index e16599d..e4e9306 100644 --- a/tcsh.spec +++ b/tcsh.spec @@ -35,8 +35,6 @@ Source: ftp://ftp.astron.com/pub/tcsh/%{name}-%{version}.tar.gz Patch4: tcsh-6.15.00-hist-sub.patch Patch9: tcsh-6.13.00-memoryuse.patch Patch11: tcsh-6.14.00-order.patch -# Proposed upstream - http://mx.gw.com/pipermail/tcsh-bugs/2013-April/000833.html -Patch35: tcsh-6.18.01-elf-interpreter.patch Patch36: tcsh-6.18.01-introduce-tcsh_posix_status.patch # Proposed upstream - http://mx.gw.com/pipermail/tcsh-bugs/2015-May/000944.html Patch39: tcsh-6.19.00-gcc5-calloc.patch @@ -150,6 +148,7 @@ fi - Drop tcsh-6.14.00-unprintable.patch - issue not reproducible with 6.19.00 upstream version - Drop tcsh-6.14.00-syntax.patch - patch not accepted by upstream, breaks other things - Drop tcsh-6.18.01-skip-tty-tests.patch - has been fixed in 6.18.05 upstream version +- Drop tcsh-6.18.01-elf-interpreter.patch - patch not working anymore, not accepted by upstream * Fri Feb 05 2016 Fedora Release Engineering - 6.19.00-5 - Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild