Пример #1
0
static my_bool ma_check_fingerprint(char *fp1, unsigned int fp1_len,
                                    char *fp2, unsigned int fp2_len)
{
    char hexstr[fp1_len * 2 + 1];

    fp1_len= (unsigned int)mysql_hex_string(hexstr, fp1, fp1_len);
    if (strncasecmp(hexstr, fp2, fp1_len) != 0)
        return 1;
    return 0;
}
Пример #2
0
static my_bool ma_check_fingerprint(char *fp1, unsigned int fp1_len,
                                    char *fp2, unsigned int fp2_len)
{
  /* SHA1 fingerprint (160 bit) / 8 * 2 + 1 */
  char hexstr[41];

  fp1_len= (unsigned int)mysql_hex_string(hexstr, fp1, fp1_len);
#ifdef _WIN32
  if (_strnicmp(hexstr, fp2, fp1_len) != 0)
#else
  if (strncasecmp(hexstr, fp2, fp1_len) != 0)
#endif
   return 1;
  return 0;
}
Пример #3
0
static int test_utf16_utf32_noboms(MYSQL *mysql)
{
  char          *csname[]= {"utf16", "utf16le", "utf32", "utf8"};
  CHARSET_INFO  *csinfo[sizeof(csname)/sizeof(char*)];

  const int     UTF8= sizeof(csname)/sizeof(char*) - 1;

  unsigned char in_string[][8]= {"\xd8\x02\xdc\x60\0",      /* utf16(be) */
                                 "\x02\xd8\x60\xdc\0",      /* utf16le   */
                                 "\x00\x01\x08\x60\0\0\0",  /* utf32(be) */
                                 "\xF0\x90\xA1\xA0" };      /* utf8      */
  size_t       in_oct_len[]= {6, 6, 8, 5};

  char   buffer[8], as_hex[16];
  int    i, error;
  size_t rc, in_len, out_len;

  for (i= 0; i < sizeof(csname)/sizeof(char*); ++i)
  {
    csinfo[i]= mariadb_get_charset_by_name(csname[i]);

    if (csinfo[i] == NULL)
    {
      diag("Could not get cs info for %s", csname[i]);
      return FAIL;
    }
  }

  for (i= 0; i < UTF8; ++i)
  {
    in_len=  in_oct_len[i];
    out_len= sizeof(buffer);

    diag("Converting %s->%s", csname[i], csname[UTF8]);
    rc= mariadb_convert_string(in_string[i], &in_len, csinfo[i], buffer, &out_len, csinfo[UTF8], &error);

    FAIL_IF(rc == -1, "Conversion failed");
    FAIL_IF(rc != in_oct_len[UTF8], "Incorrect number of written bytes");

    if (memcmp(buffer, in_string[UTF8], rc) != 0)
    {
      mysql_hex_string(as_hex, buffer, rc);
      diag("Converted string(%s) does not match the expected one", as_hex);
      return FAIL;
    }

    in_len=  in_oct_len[UTF8];
    out_len= sizeof(buffer);

    diag("Converting %s->%s", csname[UTF8], csname[i]);
    rc= mariadb_convert_string(in_string[UTF8], &in_len, csinfo[UTF8], buffer, &out_len, csinfo[i], &error);

    FAIL_IF(rc==-1, "Conversion failed");
    FAIL_IF(rc != in_oct_len[i], "Incorrect number of written bytes");

    if (memcmp(buffer, in_string[i], rc) != 0)
    {
      mysql_hex_string(as_hex, buffer, rc);
      diag("Converted string(%s) does not match the expected one", as_hex);
      return FAIL;
    }
  }

  return OK;
}