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