mirror of
https://github.com/openjdk/jdk.git
synced 2025-08-28 15:24:43 +02:00
8194154: System property user.dir should not be changed
Cached user.dir so getCanonicalPath uses the cached value. Reviewed-by: alanb, bpb, rriggs
This commit is contained in:
parent
4b6ab35c85
commit
4ea684bf31
3 changed files with 67 additions and 4 deletions
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright (c) 1998, 2016, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 1998, 2018, 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
|
||||
|
@ -34,12 +34,14 @@ class UnixFileSystem extends FileSystem {
|
|||
private final char slash;
|
||||
private final char colon;
|
||||
private final String javaHome;
|
||||
private final String userDir;
|
||||
|
||||
public UnixFileSystem() {
|
||||
Properties props = GetPropertyAction.privilegedGetProperties();
|
||||
slash = props.getProperty("file.separator").charAt(0);
|
||||
colon = props.getProperty("path.separator").charAt(0);
|
||||
javaHome = props.getProperty("java.home");
|
||||
userDir = props.getProperty("user.dir");
|
||||
}
|
||||
|
||||
|
||||
|
@ -128,7 +130,11 @@ class UnixFileSystem extends FileSystem {
|
|||
|
||||
public String resolve(File f) {
|
||||
if (isAbsolute(f)) return f.getPath();
|
||||
return resolve(System.getProperty("user.dir"), f.getPath());
|
||||
SecurityManager sm = System.getSecurityManager();
|
||||
if (sm != null) {
|
||||
sm.checkPropertyAccess("user.dir");
|
||||
}
|
||||
return resolve(userDir, f.getPath());
|
||||
}
|
||||
|
||||
// Caches for canonicalization results to improve startup performance.
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
/*
|
||||
* Copyright (c) 2001, 2017, Oracle and/or its affiliates. All rights reserved.
|
||||
* Copyright (c) 2001, 2018, 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
|
||||
|
@ -43,12 +43,14 @@ class WinNTFileSystem extends FileSystem {
|
|||
private final char slash;
|
||||
private final char altSlash;
|
||||
private final char semicolon;
|
||||
private final String userDir;
|
||||
|
||||
public WinNTFileSystem() {
|
||||
Properties props = GetPropertyAction.privilegedGetProperties();
|
||||
slash = props.getProperty("file.separator").charAt(0);
|
||||
semicolon = props.getProperty("path.separator").charAt(0);
|
||||
altSlash = (this.slash == '\\') ? '/' : '\\';
|
||||
userDir = props.getProperty("user.dir");
|
||||
}
|
||||
|
||||
private boolean isSlash(char c) {
|
||||
|
@ -347,7 +349,11 @@ class WinNTFileSystem extends FileSystem {
|
|||
private String getUserPath() {
|
||||
/* For both compatibility and security,
|
||||
we must look this up every time */
|
||||
return normalize(System.getProperty("user.dir"));
|
||||
SecurityManager sm = System.getSecurityManager();
|
||||
if (sm != null) {
|
||||
sm.checkPropertyAccess("user.dir");
|
||||
}
|
||||
return normalize(userDir);
|
||||
}
|
||||
|
||||
private String getDrive(String path) {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue