提交 0b5ac323 编写于 作者: S shshahma

8155968: Update command line options

Reviewed-by: gthornbr, hseigel, mschoene
Contributed-by: gerard.ziemski@oracle.com
上级 070fa8c2
...@@ -560,8 +560,9 @@ char* SysClassPath::add_jars_to_path(char* path, const char* directory) { ...@@ -560,8 +560,9 @@ char* SysClassPath::add_jars_to_path(char* path, const char* directory) {
(os::file_name_strcmp(ext, ".jar") == 0 || (os::file_name_strcmp(ext, ".jar") == 0 ||
os::file_name_strcmp(ext, ".zip") == 0); os::file_name_strcmp(ext, ".zip") == 0);
if (isJarOrZip) { if (isJarOrZip) {
char* jarpath = NEW_C_HEAP_ARRAY(char, directory_len + 2 + strlen(name), mtInternal); size_t length = directory_len + 2 + strlen(name);
sprintf(jarpath, "%s%s%s", directory, dir_sep, name); char* jarpath = NEW_C_HEAP_ARRAY(char, length, mtInternal);
jio_snprintf(jarpath, length, "%s%s%s", directory, dir_sep, name);
path = add_to_path(path, jarpath, false); path = add_to_path(path, jarpath, false);
FREE_C_HEAP_ARRAY(char, jarpath, mtInternal); FREE_C_HEAP_ARRAY(char, jarpath, mtInternal);
} }
...@@ -704,9 +705,10 @@ static bool append_to_string_flag(char* name, const char* new_value, Flag::Flags ...@@ -704,9 +705,10 @@ static bool append_to_string_flag(char* name, const char* new_value, Flag::Flags
} else if (new_len == 0) { } else if (new_len == 0) {
value = old_value; value = old_value;
} else { } else {
char* buf = NEW_C_HEAP_ARRAY(char, old_len + 1 + new_len + 1, mtInternal); size_t length = old_len + 1 + new_len + 1;
char* buf = NEW_C_HEAP_ARRAY(char, length, mtInternal);
// each new setting adds another LINE to the switch: // each new setting adds another LINE to the switch:
sprintf(buf, "%s\n%s", old_value, new_value); jio_snprintf(buf, length, "%s\n%s", old_value, new_value);
value = buf; value = buf;
free_this_too = buf; free_this_too = buf;
} }
...@@ -813,15 +815,17 @@ const char* Arguments::build_resource_string(char** args, int count) { ...@@ -813,15 +815,17 @@ const char* Arguments::build_resource_string(char** args, int count) {
if (args == NULL || count == 0) { if (args == NULL || count == 0) {
return NULL; return NULL;
} }
size_t length = strlen(args[0]) + 1; // add 1 for the null terminator size_t length = 0;
for (int i = 1; i < count; i++) { for (int i = 0; i < count; i++) {
length += strlen(args[i]) + 1; // add 1 for a space length += strlen(args[i]) + 1; // add 1 for a space or NULL terminating character
} }
char* s = NEW_RESOURCE_ARRAY(char, length); char* s = NEW_RESOURCE_ARRAY(char, length);
strcpy(s, args[0]); char* dst = s;
for (int j = 1; j < count; j++) { for (int j = 0; j < count; j++) {
strcat(s, " "); size_t offset = strlen(args[j]) + 1; // add 1 for a space or NULL terminating character
strcat(s, args[j]); jio_snprintf(dst, length, "%s ", args[j]); // jio_snprintf will replace the last space character with NULL character
dst += offset;
length -= offset;
} }
return (const char*) s; return (const char*) s;
} }
...@@ -1889,7 +1893,7 @@ void Arguments::set_aggressive_opts_flags() { ...@@ -1889,7 +1893,7 @@ void Arguments::set_aggressive_opts_flags() {
// Feed the cache size setting into the JDK // Feed the cache size setting into the JDK
char buffer[1024]; char buffer[1024];
sprintf(buffer, "java.lang.Integer.IntegerCache.high=" INTX_FORMAT, AutoBoxCacheMax); jio_snprintf(buffer, 1024, "java.lang.Integer.IntegerCache.high=" INTX_FORMAT, AutoBoxCacheMax);
add_property(buffer); add_property(buffer);
} }
if (AggressiveOpts && FLAG_IS_DEFAULT(BiasedLockingStartupDelay)) { if (AggressiveOpts && FLAG_IS_DEFAULT(BiasedLockingStartupDelay)) {
...@@ -2764,7 +2768,9 @@ jint Arguments::parse_each_vm_init_arg(const JavaVMInitArgs* args, ...@@ -2764,7 +2768,9 @@ jint Arguments::parse_each_vm_init_arg(const JavaVMInitArgs* args,
char *options = NULL; char *options = NULL;
if(pos != NULL) { if(pos != NULL) {
options = strcpy(NEW_C_HEAP_ARRAY(char, strlen(pos + 1) + 1, mtInternal), pos + 1); size_t length = strlen(pos + 1) + 1;
options = NEW_C_HEAP_ARRAY(char, length, mtInternal);
jio_snprintf(options, length, "%s", pos + 1);
} }
#if !INCLUDE_JVMTI #if !INCLUDE_JVMTI
if (valid_hprof_or_jdwp_agent(name, is_absolute_path)) { if (valid_hprof_or_jdwp_agent(name, is_absolute_path)) {
...@@ -2783,7 +2789,9 @@ jint Arguments::parse_each_vm_init_arg(const JavaVMInitArgs* args, ...@@ -2783,7 +2789,9 @@ jint Arguments::parse_each_vm_init_arg(const JavaVMInitArgs* args,
return JNI_ERR; return JNI_ERR;
#else #else
if(tail != NULL) { if(tail != NULL) {
char *options = strcpy(NEW_C_HEAP_ARRAY(char, strlen(tail) + 1, mtInternal), tail); size_t length = strlen(tail) + 1;
char *options = NEW_C_HEAP_ARRAY(char, length, mtInternal);
jio_snprintf(options, length, "%s", tail);
add_init_agent("instrument", options, false); add_init_agent("instrument", options, false);
} }
#endif // !INCLUDE_JVMTI #endif // !INCLUDE_JVMTI
...@@ -3621,8 +3629,7 @@ jint Arguments::finalize_vm_init_args(SysClassPath* scp_p, bool scp_assembly_req ...@@ -3621,8 +3629,7 @@ jint Arguments::finalize_vm_init_args(SysClassPath* scp_p, bool scp_assembly_req
} }
} else { } else {
char buffer[256]; char buffer[256];
strcpy(buffer, "java.awt.headless="); jio_snprintf(buffer, 256, "java.awt.headless=%s", envbuffer);
strcat(buffer, envbuffer);
if (!add_property(buffer)) { if (!add_property(buffer)) {
return JNI_ENOMEM; return JNI_ENOMEM;
} }
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册