fixed ''Zip Path Traversal Vulnerability''

This commit is contained in:
Looki2000 2023-02-26 11:20:01 +01:00
parent 013f0563a8
commit b3c1773b67

View File

@ -165,8 +165,21 @@ public class UnzipService extends IntentService {
continue;
}
publishProgress(notificationBuilder, R.string.loading, 100 * ++per / size);
try (OutputStream outputStream = new FileOutputStream(
new File(userDataDirectory, ze.getName()))) {
// Zip Path Traversal Vulnerability fix: https://support.google.com/faqs/answer/9294009
File new_file = new File(userDataDirectory, ze.getName());
String canonicalPath = new_file.getCanonicalPath();
// check if canonical path is inside the target directory
//if (!canonicalPath.startsWith(userDataDirectory)) {
if (!canonicalPath.startsWith(String.valueOf(userDataDirectory))) {
throw new IOException("Unzipping failed due to security issue!");
}
//try (OutputStream outputStream = new FileOutputStream(new File(userDataDirectory, ze.getName()))) {
try (OutputStream outputStream = new FileOutputStream(new_file)) {
while ((readLen = zipInputStream.read(readBuffer)) != -1) {
outputStream.write(readBuffer, 0, readLen);
}