From b5d0e238ade03e975a8cb880717c3ee70dfc094e Mon Sep 17 00:00:00 2001 From: Christian Wirth Date: Mon, 17 Mar 2025 11:15:07 +0100 Subject: [PATCH] error when image name starts with dash --- .../src/com/oracle/svm/driver/NativeImage.java | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/substratevm/src/com.oracle.svm.driver/src/com/oracle/svm/driver/NativeImage.java b/substratevm/src/com.oracle.svm.driver/src/com/oracle/svm/driver/NativeImage.java index 1f497f439a4d..951e57e42b3e 100644 --- a/substratevm/src/com.oracle.svm.driver/src/com/oracle/svm/driver/NativeImage.java +++ b/substratevm/src/com.oracle.svm.driver/src/com/oracle/svm/driver/NativeImage.java @@ -1292,6 +1292,9 @@ private int completeImageBuild() { } Optional lastImageName = getHostedOptionArgument(imageBuilderArgs, oHName); + if (!lastImageName.isEmpty()) { + validateImageName(lastImageName.get().value()); + } if (!jarOptionMode) { mainClassModule = getHostedOptionArgumentValue(imageBuilderArgs, oHModule); @@ -1333,7 +1336,7 @@ private int completeImageBuild() { boolean extraNameIsLast = lastImageName.isEmpty() || lastImageName.get().index < extraImageName.index; if (extraNameIsLast) { /* extraImageArg that comes after lastImageName wins */ - imageBuilderArgs.add(oH(SubstrateOptions.Name, "explicit image name") + extraImageName.value); + imageBuilderArgs.add(oH(SubstrateOptions.Name, "explicit image name") + validateImageName(extraImageName.value)); } } } else { /* jarOptionMode */ @@ -1455,6 +1458,13 @@ private int completeImageBuild() { } } + private static String validateImageName(String imageName) { + if (imageName.startsWith("-")) { + LogUtils.warning("Image name ('" + imageName + "') start with a dash. Is another option wrongly interpreted as image name? (see --help)"); + } + return imageName; + } + private static void updateArgumentEntryValue(List argList, ArgumentEntry listEntry, String newValue) { APIOptionHandler.BuilderArgumentParts argParts = APIOptionHandler.BuilderArgumentParts.from(argList.get(listEntry.index)); argParts.optionValue = newValue;