Skip to content
This repository has been archived by the owner on Feb 2, 2023. It is now read-only.

Commit

Permalink
8285445: cannot open file "NUL:"
Browse files Browse the repository at this point in the history
Backport-of: 03cbb48e6a1d806f204a39bbdbb4bc9be9e57a41
  • Loading branch information
Yuri Nesterenko committed Apr 28, 2022
1 parent 80d7902 commit cef0df6
Show file tree
Hide file tree
Showing 2 changed files with 56 additions and 5 deletions.
9 changes: 4 additions & 5 deletions src/java.base/windows/classes/java/io/WinNTFileSystem.java
Expand Up @@ -48,16 +48,15 @@ class WinNTFileSystem extends FileSystem {

// Whether to enable alternative data streams (ADS) by suppressing
// checking the path for invalid characters, in particular ":".
// ADS support will be enabled if and only if the property is set and
// is the empty string or is equal, ignoring case, to the string "true".
// By default ADS support is disabled.
// By default, ADS support is enabled and will be disabled if and
// only if the property is set, ignoring case, to the string "false".
private static final boolean ENABLE_ADS;
static {
String enableADS = GetPropertyAction.privilegedGetProperty("jdk.io.File.enableADS");
if (enableADS != null) {
ENABLE_ADS = "".equals(enableADS) || Boolean.parseBoolean(enableADS);
ENABLE_ADS = !enableADS.equalsIgnoreCase(Boolean.FALSE.toString());
} else {
ENABLE_ADS = false;
ENABLE_ADS = true;
}
}

Expand Down
52 changes: 52 additions & 0 deletions test/jdk/java/io/FileOutputStream/OpenNUL.java
@@ -0,0 +1,52 @@
/*
* Copyright (c) 2022, 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
* under the terms of the GNU General Public License version 2 only, as
* published by the Free Software Foundation.
*
* This code is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
* FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
* version 2 for more details (a copy is included in the LICENSE file that
* accompanied this code).
*
* You should have received a copy of the GNU General Public License version
* 2 along with this work; if not, write to the Free Software Foundation,
* Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
*
* Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
* or visit www.oracle.com if you need additional information or have any
* questions.
*/

/*
* @test
* @bug 8285445
* @requires (os.family == "windows")
* @summary Verify behavior of opening "NUL:" with ADS enabled and disabled.
* @run main/othervm -Djdk.io.File.enableADS OpenNUL
* @run main/othervm -Djdk.io.File.enableADS=true OpenNUL
*/

import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;

public class OpenNUL {
public static void main(String args[]) throws IOException {
String enableADS = System.getProperty("jdk.io.File.enableADS");
boolean fails = enableADS.equalsIgnoreCase(Boolean.FALSE.toString());

FileOutputStream fos;
try {
fos = new FileOutputStream("NUL:");
if (fails)
throw new RuntimeException("Should have failed");
} catch (FileNotFoundException fnfe) {
if (!fails)
throw new RuntimeException("Should not have failed");
}
}
}

1 comment on commit cef0df6

@openjdk-notifier
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Please sign in to comment.