better check result of mkdirs
diff --git a/src/main/java/org/apache/commons/compress/archivers/examples/Expander.java b/src/main/java/org/apache/commons/compress/archivers/examples/Expander.java
index c4d036c..f6bee61 100644
--- a/src/main/java/org/apache/commons/compress/archivers/examples/Expander.java
+++ b/src/main/java/org/apache/commons/compress/archivers/examples/Expander.java
@@ -246,9 +246,14 @@
+ " would craete file outside of " + targetDirectory);
}
if (nextEntry.isDirectory()) {
- f.mkdirs();
+ if (!f.isDirectory() && !f.mkdirs()) {
+ throw new IOException("failed to create directory " + f);
+ }
} else {
- f.getParentFile().mkdirs();
+ File parent = f.getParentFile();
+ if (!parent.isDirectory() && !parent.mkdirs()) {
+ throw new IOException("failed to create directory " + parent);
+ }
try (OutputStream o = Files.newOutputStream(f.toPath())) {
writer.writeEntryDataTo(nextEntry, o);
}
diff --git a/src/site/xdoc/examples.xml b/src/site/xdoc/examples.xml
index ec6ced7..11e6009 100644
--- a/src/site/xdoc/examples.xml
+++ b/src/site/xdoc/examples.xml
@@ -164,9 +164,14 @@
String name = fileName(targetDir, entry);
File f = new File(name);
if (entry.isDirectory()) {
- f.mkdirs();
+ if (!f.isDirectory() && !f.mkdirs()) {
+ throw new IOException("failed to create directory " + f);
+ }
} else {
- f.getParentFile().mkdirs();
+ File parent = f.getParentFile();
+ if (!parent.isDirectory() && !parent.mkdirs()) {
+ throw new IOException("failed to create directory " + parent);
+ }
try (OutputStream o = Files.newOutputStream(f.toPath())) {
IOUtils.copy(i, o);
}