mirror of
https://github.com/openjdk/jdk.git
synced 2025-08-28 15:24:43 +02:00
8314491: Linux: jexec launched via PATH fails to find java
Reviewed-by: dholmes, rriggs
This commit is contained in:
parent
9a83d55887
commit
dab1c213fd
2 changed files with 30 additions and 14 deletions
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 1999, 2017, Oracle and/or its affiliates. All rights reserved.
|
* Copyright (c) 1999, 2023, Oracle and/or its affiliates. All rights reserved.
|
||||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
|
@ -168,7 +168,16 @@ int main(int argc, const char * argv[]) {
|
||||||
|
|
||||||
/* Get the path to the java binary, which is in a known position relative
|
/* Get the path to the java binary, which is in a known position relative
|
||||||
* to our current position, which is in argv[0]. */
|
* to our current position, which is in argv[0]. */
|
||||||
if (getJavaPath(argv[argi++], java, RELATIVE_DEPTH) != 0) {
|
int error = getJavaPath(argv[argi++], java, RELATIVE_DEPTH);
|
||||||
|
#ifdef __linux__
|
||||||
|
/* Try to read the symbolic link to the current binary
|
||||||
|
* if the java path can not be resolved from argv[0]. */
|
||||||
|
if (error != 0) {
|
||||||
|
error = getJavaPath("/proc/self/exe", java, RELATIVE_DEPTH);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
if (error != 0) {
|
||||||
errorExit(errno, MISSING_JAVA_MSG);
|
errorExit(errno, MISSING_JAVA_MSG);
|
||||||
}
|
}
|
||||||
alen = (argc + 2) * (sizeof (const char *));
|
alen = (argc + 2) * (sizeof (const char *));
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
/*
|
/*
|
||||||
* Copyright (c) 2017, Oracle and/or its affiliates. All rights reserved.
|
* Copyright (c) 2017, 2023, Oracle and/or its affiliates. All rights reserved.
|
||||||
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
|
||||||
*
|
*
|
||||||
* This code is free software; you can redistribute it and/or modify it
|
* This code is free software; you can redistribute it and/or modify it
|
||||||
|
@ -23,14 +23,16 @@
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* @test
|
* @test
|
||||||
* @bug 8175000
|
* @bug 8175000 8314491
|
||||||
* @summary test jexec
|
* @summary test jexec
|
||||||
|
* @requires os.family == "linux"
|
||||||
* @build TestHelper
|
* @build TestHelper
|
||||||
* @run main Jexec
|
* @run main Jexec
|
||||||
*/
|
*/
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
|
import java.nio.file.Path;
|
||||||
|
|
||||||
public class Jexec extends TestHelper {
|
public class Jexec extends TestHelper {
|
||||||
private final File testJar;
|
private final File testJar;
|
||||||
|
@ -54,20 +56,12 @@ public class Jexec extends TestHelper {
|
||||||
}
|
}
|
||||||
|
|
||||||
public static void main(String... args) throws Exception {
|
public static void main(String... args) throws Exception {
|
||||||
// linux is the only supported platform, give the others a pass
|
|
||||||
if (!isLinux) {
|
|
||||||
System.err.println("Warning: unsupported platform test passes vacuously");
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
// ok to run the test now
|
|
||||||
Jexec t = new Jexec();
|
Jexec t = new Jexec();
|
||||||
t.run(null);
|
t.run(null);
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
private void runTest(String... cmds) throws Exception {
|
||||||
void jexec() throws Exception {
|
TestResult tr = doExec(cmds);
|
||||||
TestResult tr = doExec(jexecCmd.getAbsolutePath(),
|
|
||||||
testJar.getAbsolutePath(), message);
|
|
||||||
if (!tr.isOK()) {
|
if (!tr.isOK()) {
|
||||||
System.err.println(tr);
|
System.err.println(tr);
|
||||||
throw new Exception("incorrect exit value");
|
throw new Exception("incorrect exit value");
|
||||||
|
@ -77,4 +71,17 @@ public class Jexec extends TestHelper {
|
||||||
throw new Exception("expected message \'" + message + "\' not found");
|
throw new Exception("expected message \'" + message + "\' not found");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void jexec() throws Exception {
|
||||||
|
runTest(jexecCmd.getAbsolutePath(),
|
||||||
|
testJar.getAbsolutePath(), message);
|
||||||
|
}
|
||||||
|
|
||||||
|
@Test
|
||||||
|
void jexecInPath() throws Exception {
|
||||||
|
Path jexec = Path.of(jexecCmd.getAbsolutePath());
|
||||||
|
runTest("/bin/sh", "-c",
|
||||||
|
String.format("PATH=%s ; jexec %s '%s'",jexec.getParent(), testJar.getAbsolutePath(), message));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue