aboutsummaryrefslogtreecommitdiff
path: root/src/share/bin/java.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/share/bin/java.c')
-rw-r--r--src/share/bin/java.c11
1 files changed, 8 insertions, 3 deletions
diff --git a/src/share/bin/java.c b/src/share/bin/java.c
index 73c532676..ed45f085d 100644
--- a/src/share/bin/java.c
+++ b/src/share/bin/java.c
@@ -732,6 +732,9 @@ SetClassPath(const char *s)
if (s == NULL)
return;
s = JLI_WildcardExpandClasspath(s);
+ if (sizeof(format) - 2 + JLI_StrLen(s) < JLI_StrLen(s))
+ // s is corrupted after wildcard expansion
+ return;
def = JLI_MemAlloc(sizeof(format)
- 2 /* strlen("%s") */
+ JLI_StrLen(s));
@@ -1351,9 +1354,11 @@ AddApplicationOptions(int cpathc, const char **cpathv)
if (s) {
s = (char *) JLI_WildcardExpandClasspath(s);
/* 40 for -Denv.class.path= */
- envcp = (char *)JLI_MemAlloc(JLI_StrLen(s) + 40);
- sprintf(envcp, "-Denv.class.path=%s", s);
- AddOption(envcp, NULL);
+ if (JLI_StrLen(s) + 40 > JLI_StrLen(s)) { // Safeguard from overflow
+ envcp = (char *)JLI_MemAlloc(JLI_StrLen(s) + 40);
+ sprintf(envcp, "-Denv.class.path=%s", s);
+ AddOption(envcp, NULL);
+ }
}
}