refactor: support more random suffix to prevent multi-thread crash

This commit is contained in:
Connor Tumbleson 2020-04-11 06:50:09 -04:00
parent d4b2314e26
commit 44a2e87f81
No known key found for this signature in database
GPG Key ID: C3CC0A201EC7DA75

View File

@ -85,19 +85,16 @@ abstract public class Jar {
if (in == null) { if (in == null) {
throw new FileNotFoundException(resourcePath); throw new FileNotFoundException(resourcePath);
} }
long n = ThreadLocalRandom.current().nextLong(); long suffix = ThreadLocalRandom.current().nextLong();
if (n == Long.MIN_VALUE) { suffix = suffix == Long.MIN_VALUE ? 0 : Math.abs(suffix);
n = 0; // corner case File fileOut = File.createTempFile(tmpPrefix, suffix + ".tmp");
} else {
n = Math.abs(n);
}
String suffix = Long.toString(n) + ".tmp";
File fileOut = File.createTempFile(tmpPrefix, suffix);
fileOut.deleteOnExit(); fileOut.deleteOnExit();
OutputStream out = new FileOutputStream(fileOut); OutputStream out = new FileOutputStream(fileOut);
IOUtils.copy(in, out); IOUtils.copy(in, out);
in.close(); in.close();
out.close(); out.close();
return fileOut; return fileOut;
} catch (IOException ex) { } catch (IOException ex) {
throw new BrutException("Could not extract resource: " + resourcePath, ex); throw new BrutException("Could not extract resource: " + resourcePath, ex);