]> git.pld-linux.org Git - packages/lha.git/blame - lha-security_fixes.patch
- x32 rebuild
[packages/lha.git] / lha-security_fixes.patch
CommitLineData
74f0c8af 1diff -urN lha-114i.orig/src/lha_macro.h lha-114i/src/lha_macro.h
2--- lha-114i.orig/src/lha_macro.h 2000-10-04 16:57:38.000000000 +0200
3+++ lha-114i/src/lha_macro.h 2004-12-13 20:02:02.850369304 +0100
4@@ -53,7 +53,7 @@
5 #define SEEK_SET 0
6 #define SEEK_CUR 1
7 #define SEEK_END 2
8-#endif /* SEEK_SET
9+#endif /* SEEK_SET */
10
11
12 /* non-integral functions */
13diff -urN lha-114i.orig/src/lharc.c lha-114i/src/lharc.c
14--- lha-114i.orig/src/lharc.c 2004-12-13 20:01:23.000000000 +0100
15+++ lha-114i/src/lharc.c 2004-12-13 20:04:18.906685600 +0100
16@@ -830,9 +830,10 @@
17 DIRENTRY *dp;
18 struct stat tmp_stbuf, arc_stbuf, fil_stbuf;
19
20- strcpy(newname, name);
21+ strncpy(newname, name, sizeof(newname));
22+ newname[sizeof(newname)-1] = 0;
23 len = strlen(name);
24- if (len > 0 && newname[len - 1] != '/')
25+ if (len > 0 && newname[len - 1] != '/' && len < (sizeof(newname)-1))
26 newname[len++] = '/';
27
28 dirp = opendir(name);
29@@ -846,6 +847,11 @@
30
31 for (dp = readdir(dirp); dp != NULL; dp = readdir(dirp)) {
32 n = NAMLEN(dp);
33+ if (len >= (sizeof(newname)-1) ||
34+ (len+n) >= (sizeof(newname)-1) ||
35+ n <= 0 ||
36+ (len+n) <= 0)
37+ break;
38 strncpy(newname + len, dp->d_name, n);
39 newname[len + n] = '\0';
40 if (GETSTAT(newname, &fil_stbuf) < 0)
41@@ -903,7 +909,8 @@
42 strcpy(temporary_name, TMP_FILENAME_TEMPLATE);
43 }
44 else {
45- sprintf(temporary_name, "%s/lhXXXXXX", extract_directory);
46+ snprintf(temporary_name, sizeof(temporary_name),
47+ "%s/lhXXXXXX", extract_directory);
48 }
49 #ifdef MKSTEMP
50 mkstemp(temporary_name);
51@@ -913,10 +920,16 @@
52 #else
53 char *p, *s;
54
55- strcpy(temporary_name, archive_name);
56+ strncpy(temporary_name, archive_name, sizeof(temporary_name));
57+ temporary_name[sizeof(temporary_name)-1] = 0;
58 for (p = temporary_name, s = (char *) 0; *p; p++)
59 if (*p == '/')
60 s = p;
61+
62+ if( sizeof(temporary_name) - ((size_t) (s-temporary_name)) - 1
63+ <= strlen("lhXXXXXX"))
64+ exit(-1);
65+
66 strcpy((s ? s + 1 : temporary_name), "lhXXXXXX");
67 #ifdef MKSTEMP
68 mkstemp(temporary_name);
69@@ -1053,12 +1066,14 @@
70
71 if (open_old_archive_1(archive_name, &fp))
72 return fp;
73- sprintf(expanded_archive_name, "%s%s", archive_name, ARCHIVENAME_EXTENTION);
74+ snprintf(expanded_archive_name, sizeof(expanded_archive_name),
75+ "%s%s", archive_name, ARCHIVENAME_EXTENTION);
76 if (open_old_archive_1(expanded_archive_name, &fp)) {
77 archive_name = expanded_archive_name;
78 return fp;
79 }
80- sprintf(expanded_archive_name, "%s.lzh", archive_name);
81+ snprintf(expanded_archive_name, sizeof(expanded_archive_name),
82+ "%s.lzh", archive_name);
83 if (open_old_archive_1(expanded_archive_name, &fp)) {
84 archive_name = expanded_archive_name;
85 return fp;
86@@ -1067,7 +1082,8 @@
87 * if ( (errno&0xffff)!=E_PNNF ) { archive_name =
88 * expanded_archive_name; return NULL; }
89 */
90- sprintf(expanded_archive_name, "%s.lzs", archive_name);
91+ snprintf(expanded_archive_name, sizeof(expanded_archive_name),
92+ "%s.lzs", archive_name);
93 if (open_old_archive_1(expanded_archive_name, &fp)) {
94 archive_name = expanded_archive_name;
95 return fp;
96diff -urN lha-114i.orig/src/lhext.c lha-114i/src/lhext.c
97--- lha-114i.orig/src/lhext.c 2004-12-13 20:01:23.000000000 +0100
98+++ lha-114i/src/lhext.c 2004-12-13 20:02:02.855368544 +0100
99@@ -82,7 +82,8 @@
100 register char *p;
101
102 /* make parent directory name into PATH for recursive call */
103- strcpy(path, name);
104+ memset(path, 0, sizeof(path));
105+ strncpy(path, name, sizeof(path)-1);
106 for (p = path + strlen(path); p > path; p--)
107 if (p[-1] == '/') {
108 *--p = '\0';
109@@ -212,9 +213,11 @@
110 }
111
112 if (extract_directory)
113- sprintf(name, "%s/%s", extract_directory, q);
114- else
115- strcpy(name, q);
116+ snprintf(name, sizeof(name), "%s/%s", extract_directory, q);
117+ else {
118+ strncpy(name, q, sizeof(name));
119+ name[sizeof(name) - 1] = '\0';
120+ }
121
122
123