RFR (XS) : 7131346 Parsing of boolean arguments to diagnostic commands is broken
Frederic Parain
frederic.parain at oracle.com
Thu Jan 19 02:26:13 PST 2012
strncasecmp(str, "true", 4) == 0 would accept
arguments like this:
-all=truefalse
which are not valid.
Fred
On 01/19/12 11:22 AM, Dmitry Samersoff wrote:
> Frederic,
>
> I think explicit check for len is not necessary,
>
> strncasecmp(str, "true", 4) == 0
>
> is enough.
>
> -Dmitry
>
>
> On 2012-01-19 13:59, Frederic Parain wrote:
>> This is a small fix (2 lines) to fix an issue with the
>> parsing of boolean arguments by diagnostic commands
>>
>> CR is not available on bugs.sun.com yet, but the description
>> says that the string comparisons to identify "true" or "false"
>> values doesn't take into account the length of the argument
>> being parse.
>>
>> The suggested fix is:
>>
>> --- old/src/share/vm/services/diagnosticArgument.cpp Thu Jan 19
>> 10:36:10 2012
>> +++ new/src/share/vm/services/diagnosticArgument.cpp Thu Jan 19
>> 10:36:10 2012
>> @@ -62,9 +62,9 @@
>> if (len == 0) {
>> set_value(true);
>> } else {
>> - if (strcasecmp(str, "true") == 0) {
>> + if (len == strlen("true")&& strncasecmp(str, "true", len) == 0) {
>> set_value(true);
>> - } else if (strcasecmp(str, "false") == 0) {
>> + } else if (len == strlen("false")&& strncasecmp(str, "false", len)
>> == 0) {
>> set_value(false);
>> } else {
>> THROW_MSG(vmSymbols::java_lang_IllegalArgumentException(),
>>
>>
>> Webrev:
>> http://cr.openjdk.java.net/~fparain/7131346/webrev.00/
>>
>> Thanks,
>>
>> Fred
>>
>
>
--
Frederic Parain - Oracle
Grenoble Engineering Center - France
Phone: +33 4 76 18 81 17
Email: Frederic.Parain at Oracle.com
More information about the serviceability-dev
mailing list