summaryrefslogtreecommitdiffstats
path: root/recipes-core/fastjar
diff options
context:
space:
mode:
authorHenning Heinold <heinold@inf.fu-berlin.de>2011-11-12 20:58:34 +0100
committerHenning Heinold <heinold@inf.fu-berlin.de>2011-11-26 23:41:44 +0100
commit57e069cde6617f00ca8834a82c6f360af43d5067 (patch)
tree48cbe15e96d217c45acfa64b0c13aad8c6424980 /recipes-core/fastjar
downloadmeta-java-57e069cde6617f00ca8834a82c6f360af43d5067.tar.gz
meta-java: initial commit
* taken over mostly stuff from oe classic * cleaned up recipes * added license checksums * bump icedtea6-native to 1.8.11 * use jamvm from git as native
Diffstat (limited to 'recipes-core/fastjar')
-rw-r--r--recipes-core/fastjar/fastjar.inc16
-rw-r--r--recipes-core/fastjar/fastjar/jartool.patch114
-rw-r--r--recipes-core/fastjar/fastjar_0.98.bb9
3 files changed, 139 insertions, 0 deletions
diff --git a/recipes-core/fastjar/fastjar.inc b/recipes-core/fastjar/fastjar.inc
new file mode 100644
index 0000000..f48135d
--- /dev/null
+++ b/recipes-core/fastjar/fastjar.inc
@@ -0,0 +1,16 @@
1DESCRIPTION = "jar replacement written in C."
2HOMEPAGE = "http://savannah.nongnu.org/projects/fastjar/"
3SECTION = "devel"
4PRIORITY = "optional"
5LICENSE = "GPLv2"
6
7DEPENDS = "zlib"
8
9SRC_URI = "http://download.savannah.nongnu.org/releases/fastjar/fastjar-${PV}.tar.gz"
10
11inherit autotools
12
13PACKAGES = "${PN}-grepjar ${PN} ${PN}-dbg ${PN}-doc"
14FILES_${PN}-grepjar = "${bindir}/grepjar"
15
16BBCLASSEXTEND = "native"
diff --git a/recipes-core/fastjar/fastjar/jartool.patch b/recipes-core/fastjar/fastjar/jartool.patch
new file mode 100644
index 0000000..bb58b27
--- /dev/null
+++ b/recipes-core/fastjar/fastjar/jartool.patch
@@ -0,0 +1,114 @@
1Index: fastjar-0.98/jartool.c
2===================================================================
3--- fastjar-0.98.orig/jartool.c 2009-09-07 00:10:47.000000000 +0200
4+++ fastjar-0.98/jartool.c 2011-11-10 13:59:01.320585544 +0100
5@@ -790,6 +790,7 @@
6 progname, jarfile);
7 return 1;
8 }
9+ ze->filename[len] = '\0';
10 len = UNPACK_UB4(header, CEN_EFLEN);
11 len += UNPACK_UB4(header, CEN_COMLEN);
12 if (lseek (fd, len, SEEK_CUR) == -1)
13@@ -1257,7 +1258,7 @@
14 exit_on_error("write");
15
16 /* write the file name to the zip file */
17- if (1 == write(jfd, fname, file_name_length))
18+ if (-1 == write(jfd, fname, file_name_length))
19 exit_on_error("write");
20
21 if(verbose){
22@@ -1730,7 +1731,17 @@
23 struct stat sbuf;
24 int depth = 0;
25
26- tmp_buff = malloc(sizeof(char) * strlen((const char *)filename));
27+ if(*filename == '/'){
28+ fprintf(stderr, "Absolute path names are not allowed.\n");
29+ exit(EXIT_FAILURE);
30+ }
31+
32+ tmp_buff = malloc(strlen((const char *)filename));
33+
34+ if(tmp_buff == NULL) {
35+ fprintf(stderr, "Out of memory.\n");
36+ exit(EXIT_FAILURE);
37+ }
38
39 for(;;){
40 const ub1 *idx = (const unsigned char *)strchr((const char *)start, '/');
41@@ -1738,25 +1749,28 @@
42 if(idx == NULL)
43 break;
44 else if(idx == start){
45+ tmp_buff[idx - filename] = '/';
46 start++;
47 continue;
48 }
49- start = idx + 1;
50
51- strncpy(tmp_buff, (const char *)filename, (idx - filename));
52- tmp_buff[(idx - filename)] = '\0';
53+ memcpy(tmp_buff + (start - filename), (const char *)start, (idx - start));
54+ tmp_buff[idx - filename] = '\0';
55
56 #ifdef DEBUG
57 printf("checking the existance of %s\n", tmp_buff);
58 #endif
59- if(strcmp(tmp_buff, "..") == 0){
60+ if(idx - start == 2 && memcmp(start, "..", 2) == 0){
61 --depth;
62 if (depth < 0){
63 fprintf(stderr, "Traversal to parent directories during unpacking!\n");
64 exit(EXIT_FAILURE);
65 }
66- } else if (strcmp(tmp_buff, ".") != 0)
67+ } else if (idx - start != 1 || *start != '.')
68 ++depth;
69+
70+ start = idx + 1;
71+
72 if(stat(tmp_buff, &sbuf) < 0){
73 if(errno != ENOENT)
74 exit_on_error("stat");
75@@ -1765,6 +1779,7 @@
76 #ifdef DEBUG
77 printf("Directory exists\n");
78 #endif
79+ tmp_buff[idx - filename] = '/';
80 continue;
81 }else {
82 fprintf(stderr, "Hmmm.. %s exists but isn't a directory!\n",
83@@ -1781,10 +1796,11 @@
84 if(verbose && handle)
85 printf("%10s: %s/\n", "created", tmp_buff);
86
87+ tmp_buff[idx - filename] = '/';
88 }
89
90 /* only a directory */
91- if(strlen((const char *)start) == 0)
92+ if(*start == '\0')
93 dir = TRUE;
94
95 #ifdef DEBUG
96@@ -1792,7 +1808,7 @@
97 #endif
98
99 /* If the entry was just a directory, don't write to file, etc */
100- if(strlen((const char *)start) == 0)
101+ if(*start == '\0')
102 f_fd = -1;
103
104 free(tmp_buff);
105@@ -1876,7 +1892,8 @@
106 exit(EXIT_FAILURE);
107 }
108
109- close(f_fd);
110+ if (f_fd != -1)
111+ close(f_fd);
112
113 if(verbose && dir == FALSE && handle)
114 printf("%10s: %s\n",
diff --git a/recipes-core/fastjar/fastjar_0.98.bb b/recipes-core/fastjar/fastjar_0.98.bb
new file mode 100644
index 0000000..5b5a403
--- /dev/null
+++ b/recipes-core/fastjar/fastjar_0.98.bb
@@ -0,0 +1,9 @@
1require fastjar.inc
2
3LIC_FILES_CHKSUM = "file://COPYING;md5=59530bdf33659b29e73d4adb9f9f6552"
4
5SRC_URI += "file://jartool.patch"
6
7SRC_URI[md5sum] = "d2d264d343d4d0e1575832cc1023c3bf"
8SRC_URI[sha256sum] = "f156abc5de8658f22ee8f08d7a72c88f9409ebd8c7933e9466b0842afeb2f145"
9