|  | 
| 28 | 28 | import java.net.URL; | 
| 29 | 29 | import java.net.URLClassLoader; | 
| 30 | 30 | import java.nio.file.Files; | 
|  | 31 | +import java.nio.file.attribute.FileAttribute; | 
|  | 32 | +import java.nio.file.attribute.PosixFilePermission; | 
|  | 33 | +import java.nio.file.attribute.PosixFilePermissions; | 
| 31 | 34 | import java.util.ArrayList; | 
| 32 | 35 | import java.util.Arrays; | 
| 33 | 36 | import java.util.Enumeration; | 
| 34 | 37 | import java.util.List; | 
|  | 38 | +import java.util.Set; | 
| 35 | 39 | import java.util.jar.JarEntry; | 
| 36 | 40 | import java.util.jar.JarFile; | 
| 37 | 41 | import java.util.jar.JarInputStream; | 
| @@ -287,20 +291,18 @@ public void run(String[] args) throws Throwable { | 
| 287 | 291 | 
 | 
| 288 | 292 |     final File workDir; | 
| 289 | 293 |     try { | 
| 290 |  | -      workDir = File.createTempFile("hadoop-unjar", "", tmpDir); | 
| 291 |  | -    } catch (IOException ioe) { | 
|  | 294 | +      FileAttribute<Set<PosixFilePermission>> perms = PosixFilePermissions | 
|  | 295 | +          .asFileAttribute(PosixFilePermissions.fromString("rwx------")); | 
|  | 296 | +      workDir = Files.createTempDirectory(tmpDir.toPath(), "hadoop-unjar", perms).toFile(); | 
|  | 297 | +    } catch (IOException | SecurityException e) { | 
| 292 | 298 |       // If user has insufficient perms to write to tmpDir, default | 
| 293 | 299 |       // "Permission denied" message doesn't specify a filename. | 
| 294 | 300 |       System.err.println("Error creating temp dir in java.io.tmpdir " | 
| 295 |  | -                         + tmpDir + " due to " + ioe.getMessage()); | 
|  | 301 | +                         + tmpDir + " due to " + e.getMessage()); | 
| 296 | 302 |       System.exit(-1); | 
| 297 | 303 |       return; | 
| 298 | 304 |     } | 
| 299 | 305 | 
 | 
| 300 |  | -    if (!workDir.delete()) { | 
| 301 |  | -      System.err.println("Delete failed for " + workDir); | 
| 302 |  | -      System.exit(-1); | 
| 303 |  | -    } | 
| 304 | 306 |     ensureDirectory(workDir); | 
| 305 | 307 | 
 | 
| 306 | 308 |     ShutdownHookManager.get().addShutdownHook( | 
|  | 
0 commit comments