RFR (XS) : 7131346 Parsing of boolean arguments to diagnostic commands is broken

Dmitry Samersoff Dmitry.Samersoff at oracle.com
Thu Jan 19 02:22:53 PST 2012


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
> 


-- 
Dmitry Samersoff
Java Hotspot development team, SPB04
* There will come soft rains ...


More information about the serviceability-dev mailing list