< prev index next >

src/share/vm/runtime/arguments.cpp

Print this page
rev 12773 : imported patch arguments.cpp.diff

*** 2585,2607 **** FreeHeap(property); return added; } bool Arguments::create_numbered_property(const char* prop_base_name, const char* prop_value, unsigned int count) { ! // Make sure count is < 1,000. Otherwise, memory allocation will be too small. ! if (count < 1000) { ! size_t prop_len = strlen(prop_base_name) + strlen(prop_value) + 5; char* property = AllocateHeap(prop_len, mtArguments); int ret = jio_snprintf(property, prop_len, "%s.%d=%s", prop_base_name, count, prop_value); if (ret < 0 || ret >= (int)prop_len) { FreeHeap(property); return false; } bool added = add_property(property, UnwriteableProperty, InternalProperty); FreeHeap(property); return added; } return false; } Arguments::ArgsRange Arguments::parse_memory_size(const char* s, julong* long_arg, --- 2585,2614 ---- FreeHeap(property); return added; } bool Arguments::create_numbered_property(const char* prop_base_name, const char* prop_value, unsigned int count) { ! const unsigned int props_count_limit = 1000; ! const int props_count_limit_log10 = 3; ! const int extra_symbols_count = 3; // includes '.', '=', '\0' ! ! // Make sure count is < props_count_limit. Otherwise, memory allocation will be too small. ! if (count < props_count_limit) { ! size_t prop_len = strlen(prop_base_name) + strlen(prop_value) + props_count_limit_log10 + extra_symbols_count; char* property = AllocateHeap(prop_len, mtArguments); int ret = jio_snprintf(property, prop_len, "%s.%d=%s", prop_base_name, count, prop_value); if (ret < 0 || ret >= (int)prop_len) { FreeHeap(property); + jio_fprintf(defaultStream::error_stream(), "Failed to create property %s.%d=%s\n", prop_base_name, count, prop_value); return false; } bool added = add_property(property, UnwriteableProperty, InternalProperty); FreeHeap(property); return added; } + + jio_fprintf(defaultStream::error_stream(), "Property count limit exceeded: %s, limit=%d\n", prop_base_name, props_count_limit); return false; } Arguments::ArgsRange Arguments::parse_memory_size(const char* s, julong* long_arg,
< prev index next >