--- a/jdk/src/windows/bin/java_md.c Mon Jul 12 18:18:13 2010 +0100
+++ b/jdk/src/windows/bin/java_md.c Fri Jul 09 11:04:34 2010 -0700
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 1997, 2008, Oracle and/or its affiliates. All rights reserved.
+ * Copyright (c) 1997, 2010, 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
@@ -80,26 +80,22 @@
*
*/
void
-CreateExecutionEnvironment(int *_argc,
- char ***_argv,
- char jrepath[],
- jint so_jrepath,
- char jvmpath[],
- jint so_jvmpath,
- char **original_argv) {
+CreateExecutionEnvironment(int *pargc, char ***pargv,
+ char *jrepath, jint so_jrepath,
+ char *jvmpath, jint so_jvmpath) {
char * jvmtype;
int i = 0;
- char** pargv = *_argv;
int running = CURRENT_DATA_MODEL;
int wanted = running;
- for (i = 0; i < *_argc ; i++) {
- if (JLI_StrCmp(pargv[i], "-J-d64") == 0 || JLI_StrCmp(pargv[i], "-d64") == 0) {
+ char** argv = *pargv;
+ for (i = 0; i < *pargc ; i++) {
+ if (JLI_StrCmp(argv[i], "-J-d64") == 0 || JLI_StrCmp(argv[i], "-d64") == 0) {
wanted = 64;
continue;
}
- if (JLI_StrCmp(pargv[i], "-J-d32") == 0 || JLI_StrCmp(pargv[i], "-d32") == 0) {
+ if (JLI_StrCmp(argv[i], "-J-d32") == 0 || JLI_StrCmp(argv[i], "-d32") == 0) {
wanted = 32;
continue;
}
@@ -123,7 +119,12 @@
JLI_ReportErrorMessage(CFG_ERROR7);
exit(1);
}
- jvmtype = CheckJvmType(_argc, _argv, JNI_FALSE);
+
+ jvmtype = CheckJvmType(pargc, pargv, JNI_FALSE);
+ if (JLI_StrCmp(jvmtype, "ERROR") == 0) {
+ JLI_ReportErrorMessage(CFG_ERROR9);
+ exit(4);
+ }
jvmpath[0] = '\0';
if (!GetJVMPath(jrepath, jvmtype, jvmpath, so_jvmpath)) {
@@ -131,7 +132,6 @@
exit(4);
}
/* If we got here, jvmpath has been correctly initialized. */
-
}
@@ -203,19 +203,21 @@
PREJVMSTART PreJVMStart;
struct stat s;
+ /* Make sure the jrepath contains something */
+ if (jrepath[0] == NULL) {
+ return;
+ }
/* 32 bit windows only please */
- if (strcmp(GetArch(), "i386") != 0 ) {
+ if (JLI_StrCmp(GetArch(), "i386") != 0 ) {
return;
}
/* Does our bundle directory exist ? */
- strcpy(tmpbuf, jrepath);
- strcat(tmpbuf, "\\lib\\bundles");
+ JLI_Snprintf(tmpbuf, sizeof(tmpbuf), "%s\\lib\\bundles", jrepath);
if (stat(tmpbuf, &s) != 0) {
return;
}
/* Does our jkernel dll exist ? */
- strcpy(tmpbuf, jrepath);
- strcat(tmpbuf, "\\bin\\jkernel.dll");
+ JLI_Snprintf(tmpbuf, sizeof(tmpbuf), "%s\\bin\\jkernel.dll", jrepath);
if (stat(tmpbuf, &s) != 0) {
return;
}
@@ -249,30 +251,30 @@
if (GetApplicationHome(path, pathsize)) {
/* Is JRE co-located with the application? */
- sprintf(javadll, "%s\\bin\\" JAVA_DLL, path);
+ JLI_Snprintf(javadll, sizeof(javadll), "%s\\bin\\" JAVA_DLL, path);
if (stat(javadll, &s) == 0) {
- goto found;
+ JLI_TraceLauncher("JRE path is %s\n", path);
+ return JNI_TRUE;
}
/* Does this app ship a private JRE in <apphome>\jre directory? */
- sprintf(javadll, "%s\\jre\\bin\\" JAVA_DLL, path);
+ JLI_Snprintf(javadll, sizeof (javadll), "%s\\jre\\bin\\" JAVA_DLL, path);
if (stat(javadll, &s) == 0) {
JLI_StrCat(path, "\\jre");
- goto found;
+ JLI_TraceLauncher("JRE path is %s\n", path);
+ return JNI_TRUE;
}
}
/* Look for a public JRE on this machine. */
if (GetPublicJREHome(path, pathsize)) {
- goto found;
+ JLI_TraceLauncher("JRE path is %s\n", path);
+ return JNI_TRUE;
}
JLI_ReportErrorMessage(JRE_ERROR8 JAVA_DLL);
return JNI_FALSE;
- found:
- JLI_TraceLauncher("JRE path is %s\n", path);
- return JNI_TRUE;
}
/*
@@ -286,9 +288,9 @@
{
struct stat s;
if (JLI_StrChr(jvmtype, '/') || JLI_StrChr(jvmtype, '\\')) {
- sprintf(jvmpath, "%s\\" JVM_DLL, jvmtype);
+ JLI_Snprintf(jvmpath, jvmpathsize, "%s\\" JVM_DLL, jvmtype);
} else {
- sprintf(jvmpath, "%s\\bin\\%s\\" JVM_DLL, jrepath, jvmtype);
+ JLI_Snprintf(jvmpath, jvmpathsize, "%s\\bin\\%s\\" JVM_DLL, jrepath, jvmtype);
}
if (stat(jvmpath, &s) == 0) {
return JNI_TRUE;