Bug #87912 Possible unintended usage of variable "len" in file "client/mysqltest.cc"
Submitted: 29 Sep 2017 11:05 Modified: 10 Oct 2017 13:44
Reporter: Petru-Florin Mihancea Email Updates:
Status: Verified Impact on me:
None 
Category:MySQL Server: Tests Severity:S3 (Non-critical)
Version:5.7 OS:Any
Assigned to: CPU Architecture:Any

[29 Sep 2017 11:05] Petru-Florin Mihancea
Description:
Hi,

While experimenting with a CodeSonar plugin we develop, we noticed a potential bug in file "mysql-server/client/mysqltest.cc" line 2991 and 2992 function "eval_expr":

/* Check if this is a "let $var= convert_error()" */
    const char* get_value_str1= "convert_error";
    const size_t len1= strlen(get_value_str1);
    if (strncmp(p, get_value_str1, len1)==0)
    {
      struct st_command command;
      memset(&command, 0, sizeof(command));
      command.query= (char*)p;
      command.first_word_len= len;                                  //HERE
      command.first_argument= command.query + len; //HERE
      command.end= (char*)*p_end;
      var_set_convert_error(&command, v);
      DBUG_VOID_RETURN;
    }

 Shouldn't you use the len1 variable (instead of len) at the mentioned lines?

Best regards,
Petru Mihancea

How to repeat:
This issue has been detected automatically via static analysis.
[10 Oct 2017 13:44] MySQL Verification Team
Hi!

You are actually quite right. This is not a part of the server, but one of the test programs. However, a bug in a test program is still a bug.

It should be len1 , since len is saved from the search for the command "query_get_value".

Verified as reported.