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

Frederic Parain frederic.parain at oracle.com
Thu Jan 19 01:59:57 PST 2012


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