8168923: Use unsigned random long in a temp directory name
Reviewed-by: bpb, alanb
This commit is contained in:
parent
05be04a123
commit
4541ef3ed7
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 1994, 2013, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 1994, 2016, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
@ -1907,16 +1907,10 @@ public class File
|
||||
throws IOException
|
||||
{
|
||||
long n = random.nextLong();
|
||||
if (n == Long.MIN_VALUE) {
|
||||
n = 0; // corner case
|
||||
} else {
|
||||
n = Math.abs(n);
|
||||
}
|
||||
|
||||
// Use only the file name from the supplied prefix
|
||||
prefix = (new File(prefix)).getName();
|
||||
|
||||
String name = prefix + Long.toString(n) + suffix;
|
||||
String name = prefix + Long.toUnsignedString(n) + suffix;
|
||||
File f = new File(dir, name);
|
||||
if (!name.equals(f.getName()) || f.isInvalid()) {
|
||||
if (System.getSecurityManager() != null)
|
||||
|
@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2009, 2013, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2009, 2016, Oracle and/or its affiliates. All rights reserved.
|
||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||
*
|
||||
* This code is free software; you can redistribute it and/or modify it
|
||||
@ -55,8 +55,8 @@ class TempFileHelper {
|
||||
private static final SecureRandom random = new SecureRandom();
|
||||
private static Path generatePath(String prefix, String suffix, Path dir) {
|
||||
long n = random.nextLong();
|
||||
n = (n == Long.MIN_VALUE) ? 0 : Math.abs(n);
|
||||
Path name = dir.getFileSystem().getPath(prefix + Long.toString(n) + suffix);
|
||||
String s = prefix + Long.toUnsignedString(n) + suffix;
|
||||
Path name = dir.getFileSystem().getPath(s);
|
||||
// the generated name should be a simple file name
|
||||
if (name.getParent() != null)
|
||||
throw new IllegalArgumentException("Invalid prefix or suffix");
|
||||
|
Loading…
Reference in New Issue
Block a user