mirror of
https://git.FreeBSD.org/ports.git
synced 2024-12-24 04:33:24 +00:00
59 lines
2.0 KiB
Java
59 lines
2.0 KiB
Java
$FreeBSD$
|
|
|
|
--- ../src/share/classes/sun/tools/jar/Main.java 11 Jul 2001 21:39:05 -0000 1.1.1.1
|
|
+++ ../src/share/classes/sun/tools/jar/Main.java 27 Apr 2005 05:07:30 -0000
|
|
@@ -35,6 +35,7 @@
|
|
Hashtable filesTable = new Hashtable();
|
|
Vector paths = new Vector();
|
|
Vector v;
|
|
+ String cwd;
|
|
CRC32 crc32 = new CRC32();
|
|
/* cflag: create
|
|
* uflag: update
|
|
@@ -671,6 +672,19 @@
|
|
* Extracts specified entries from JAR file.
|
|
*/
|
|
void extract(InputStream in, String files[]) throws IOException {
|
|
+ // Current working directory
|
|
+
|
|
+ cwd = System.getProperty("user.dir");
|
|
+ if (cwd == null) {
|
|
+ fatalError(getMsg("error.no.cwd"));
|
|
+ }
|
|
+ cwd = (new File(cwd)).getCanonicalPath();
|
|
+ if (!cwd.endsWith(File.separator)) {
|
|
+ cwd += File.separator;
|
|
+ }
|
|
+
|
|
+ // Extract the files
|
|
+
|
|
ZipInputStream zis = new ZipInputStream(in);
|
|
ZipEntry e;
|
|
while ((e = zis.getNextEntry()) != null) {
|
|
@@ -695,6 +709,10 @@
|
|
void extractFile(ZipInputStream zis, ZipEntry e) throws IOException {
|
|
String name = e.getName();
|
|
File f = new File(e.getName().replace('/', File.separatorChar));
|
|
+ if (!f.getCanonicalPath().startsWith(cwd)) {
|
|
+ output(formatMsg("out.ignore.entry", name));
|
|
+ return;
|
|
+ }
|
|
if (e.isDirectory()) {
|
|
if (!f.exists() && !f.mkdirs() || !f.isDirectory()) {
|
|
throw new IOException(formatMsg("error.create.dir", f.getPath()));
|
|
@@ -705,6 +723,10 @@
|
|
} else {
|
|
if (f.getParent() != null) {
|
|
File d = new File(f.getParent());
|
|
+ if (!d.getCanonicalPath().startsWith(cwd)) {
|
|
+ output(formatMsg("out.ignore.entry", name));
|
|
+ return;
|
|
+ }
|
|
if (!d.exists() && !d.mkdirs() || !d.isDirectory()) {
|
|
throw new IOException(formatMsg("error.create.dir", d.getPath()));
|
|
}
|
|
Index: j2sdk1.3.1/src/share/classes/sun/tools/jar/resources/jar.properties
|
|
===================================================================
|
|
RCS file: /var/jcvs/javasrc_1_3_scsl/j2sdk1.3.1/src/share/classes/sun/tools/jar/resources/jar.properties,v
|
|
retrieving revision 1.1.1.1
|