Esempio n. 1
0
my_bool ma_pvio_tls_check_fp(MARIADB_TLS *ctls, const char *fp, const char *fp_list)
{
  unsigned int cert_fp_len= 64;
  char *cert_fp= NULL;
  my_bool rc=1;
  MYSQL *mysql= ctls->pvio->mysql;

  cert_fp= (char *)malloc(cert_fp_len);

  if ((cert_fp_len= ma_tls_get_finger_print(ctls, cert_fp, cert_fp_len)) < 1)
    goto end;
  if (fp)
    rc= ma_pvio_tls_compare_fp(cert_fp, cert_fp_len, fp, (unsigned int)strlen(fp));
  else if (fp_list)
  {
    MA_FILE *fp;
    char buff[255];

    if (!(fp = ma_open(fp_list, "r", mysql)))
      goto end;

    while (ma_gets(buff, sizeof(buff)-1, fp))
    {
      /* remove trailing new line character */
      char *pos= strchr(buff, '\r');
      if (!pos)
        pos= strchr(buff, '\n');
      if (pos)
        *pos= '\0';
        
      if (!ma_pvio_tls_compare_fp(cert_fp, cert_fp_len, buff, (unsigned int)strlen(buff)))
      {
        /* finger print is valid: close file and exit */
        ma_close(fp);
        rc= 0;
        goto end;
      }
    }

    /* No finger print matched - close file and return error */
    ma_close(fp);
  }

end:
  if (cert_fp)
    free(cert_fp);
  if (rc)
  {
    my_set_error(mysql, CR_SSL_CONNECTION_ERROR, SQLSTATE_UNKNOWN,
                         ER(CR_SSL_CONNECTION_ERROR), 
                         "Fingerprint verification of server certificate failed");
  }
  return rc;
}
Esempio n. 2
0
int ChanlunTools::jxzt(CALCINFO* pData, int num)
{
	int ss = 1;
	float ma5 = ma_close(pData, num, 5);
	float ma13 = ma_close(pData, num, 13);
	float ma21 = ma_close(pData, num, 21);
	float ma34 = ma_close(pData, num, 34);
	float ma55 = ma_close(pData, num, 55);
	float ma89 = ma_close(pData, num, 89);
	float ma144 = ma_close(pData, num, 144);
	float ma233 = ma_close(pData, num, 233);

	float c = pData->m_pData[num].m_fClose;
	
	if(c>ma5) ss++;
	if(c>ma13) ss++;
	if(c>ma21) ss++;
	if(c>ma34) ss++;
	if(c>ma55) ss++;
	if(c>ma89) ss++;
	if(c>ma144) ss++;
	if(c>ma233) ss++;
	
	return ss;
}
/* {{{ mysql_local_infile_end */
static
void mysql_local_infile_end(void *ptr)
{
  MYSQL_INFILE_INFO *info = (MYSQL_INFILE_INFO *)ptr;

  if (info)
  {
    if (info->fp)
      ma_close(info->fp);
    free(ptr);
  }		
  return;
}
Esempio n. 4
0
int ChanlunTools::jxzc(CALCINFO* pData, int num)
{
	float ma5 = ma_close(pData, num, 5);
	float ma13 = ma_close(pData, num, 13);
	float ma21 = ma_close(pData, num, 21);
	float ma34 = ma_close(pData, num, 34);
	float ma55 = ma_close(pData, num, 55);
	float ma89 = ma_close(pData, num, 89);
	float ma144 = ma_close(pData, num, 144);
	float ma233 = ma_close(pData, num, 233);
	
	float c = pData->m_pData[num].m_fClose;
	
	float cz1 = c - ma5;
	float cz2 = c - ma13;
	float cz3 = c - ma21;
	float cz4 = c - ma34;
	float cz5 = c - ma55;
	float cz6 = c - ma89;
	float cz7 = c - ma144;
	float cz8 = c - ma233;
	float czs[] = {cz1, cz2, cz3, cz4, cz5, cz6, cz7, cz8};
	
	int flag = 1;
	float zcw = czs[0]; 
	if (zcw<0) 
	{
		zcw = 99999;
		flag = 0;
	}
	
	for(int i=1; i<8; i++)
	{
		if(czs[i]>0 && czs[i] < zcw) 
		{
			zcw = czs[i];
			flag = i+1;
		}
	}
	
	return flag;
}