diff options
author | Mike Frysinger <vapier@gentoo.org> | 2008-11-20 16:39:29 +0000 |
---|---|---|
committer | Mike Frysinger <vapier@gentoo.org> | 2008-11-20 16:39:29 +0000 |
commit | aa766299ec255dc9c61ac9e37e87ff9dbda6a652 (patch) | |
tree | 4ce6b51325fcd9ebb306409792a234959dd852f8 /app-arch/unarj/files | |
parent | Initial import. (diff) | |
download | gentoo-2-aa766299ec255dc9c61ac9e37e87ff9dbda6a652.tar.gz gentoo-2-aa766299ec255dc9c61ac9e37e87ff9dbda6a652.tar.bz2 gentoo-2-aa766299ec255dc9c61ac9e37e87ff9dbda6a652.zip |
old
(Portage version: 2.2_rc14/cvs/Linux 2.6.27.4 x86_64)
Diffstat (limited to 'app-arch/unarj/files')
-rw-r--r-- | app-arch/unarj/files/unarj-2.63a-sanitation.patch | 133 |
1 files changed, 0 insertions, 133 deletions
diff --git a/app-arch/unarj/files/unarj-2.63a-sanitation.patch b/app-arch/unarj/files/unarj-2.63a-sanitation.patch deleted file mode 100644 index e8b36f050815..000000000000 --- a/app-arch/unarj/files/unarj-2.63a-sanitation.patch +++ /dev/null @@ -1,133 +0,0 @@ -Index: unarj-2.65/sanitize.c -=================================================================== ---- /dev/null -+++ unarj-2.65/sanitize.c -@@ -0,0 +1,81 @@ -+/* -+ * Path sanitation code by Ludwig Nussel <ludwig.nussel@suse.de>. Public Domain. -+ */ -+ -+#include "unarj.h" -+ -+#include <string.h> -+#include <limits.h> -+#include <stdio.h> -+ -+#ifndef PATH_CHAR -+#define PATH_CHAR '/' -+#endif -+#ifndef MIN -+#define MIN(x,y) ((x)<(y)?(x):(y)) -+#endif -+ -+/* copy src into dest converting the path to a relative one inside the current -+ * directory. dest must hold at least len bytes */ -+void copy_path_relative(char *dest, char *src, size_t len) -+{ -+ char* o = dest; -+ char* p = src; -+ -+ *o = '\0'; -+ -+ while(*p && *p == PATH_CHAR) ++p; -+ for(; len && *p;) -+ { -+ src = p; -+ p = strchr(src, PATH_CHAR); -+ if(!p) p = src+strlen(src); -+ -+ /* . => skip */ -+ if(p-src == 1 && *src == '.' ) -+ { -+ if(*p) src = ++p; -+ } -+ /* .. => pop one */ -+ else if(p-src == 2 && *src == '.' && src[1] == '.') -+ { -+ if(o != dest) -+ { -+ char* tmp; -+ *o = '\0'; -+ tmp = strrchr(dest, PATH_CHAR); -+ if(!tmp) -+ { -+ len += o-dest; -+ o = dest; -+ if(*p) ++p; -+ } -+ else -+ { -+ len += o-tmp; -+ o = tmp; -+ if(*p) ++p; -+ } -+ } -+ else /* nothing to pop */ -+ if(*p) ++p; -+ } -+ else -+ { -+ size_t copy; -+ if(o != dest) -+ { -+ --len; -+ *o++ = PATH_CHAR; -+ } -+ copy = MIN(p-src,len); -+ memcpy(o, src, copy); -+ len -= copy; -+ src += copy; -+ o += copy; -+ if(*p) ++p; -+ } -+ while(*p && *p == PATH_CHAR) ++p; -+ } -+ o[len?0:-1] = '\0'; -+} -Index: unarj-2.65/unarj.c -=================================================================== ---- unarj-2.65.orig/unarj.c -+++ unarj-2.65/unarj.c -@@ -235,6 +235,8 @@ static UCRC crctable[UCHAR_MAX + 1]; - - /* Functions */ - -+void copy_path_relative(char *dest, char *src, size_t len); -+ - static void - make_crctable() - { -@@ -738,11 +740,11 @@ extract() - - no_output = 0; - if (command == 'E') -- strncopy(name, &filename[entry_pos], sizeof(name)); -+ copy_path_relative(name, &filename[entry_pos], sizeof(name)); - else - { - strcpy(name, DEFAULT_DIR); -- strncopy(name+strlen(name), filename, sizeof(name)-strlen(name)); -+ copy_path_relative(name+strlen(name), filename, sizeof(name)-strlen(name)); - } - - if (host_os != OS) -Index: unarj-2.65/Makefile -=================================================================== ---- unarj-2.65.orig/Makefile -+++ unarj-2.65/Makefile -@@ -6,8 +6,8 @@ CC = gcc - CFLAGS = -O2 -Wall -ansi -pedantic -DUNIX - INSTALLDIR=/usr/local/bin - --unarj: unarj.o decode.o environ.o -- $(CC) $(CFLAGS) -o unarj unarj.o decode.o environ.o -+unarj: unarj.o decode.o environ.o sanitize.o -+ $(CC) $(CFLAGS) -o unarj unarj.o decode.o environ.o sanitize.o - strip unarj - - clean: -@@ -19,3 +19,4 @@ install: - unarj.o: unarj.c unarj.h Makefile - environ.o: environ.c unarj.h Makefile - decode.o: decode.c unarj.h Makefile -+sanitize.o: sanitize.c unarj.h Makefile |