Exemple #1
0
// ind debug mode we have our own main function
int main()
{
  char buf[1024];
  //snprintf(buf,sizeof(buf), "SELECT * FROM users WHERE laston=unix_timestamp()+10*20+fn() AND user_level>1 ORDER BY userid ASC");
  snprintf(buf,sizeof(buf), "SELECT * FROM users WHERE laston=1");
  scan_buffer(buf);

  snprintf(buf,sizeof(buf), "select 1 from user where 1 -- commnent");
  scan_buffer(buf);
      
  std::string s;
  while (std::cin)
  {
    memset(p_risk, 0, sizeof(struct query_risk));
    std::getline(std::cin, s);
    //std::cout << "line: " << s << std::endl;
    scan_buffer(s.c_str());
    free_sql_strings();
    free_expressions();
    if (p_risk->has_tautology)
    {
        printf("query has tautology\n");
    }	    
  }
  //free_sql_strings();
  //free_expressions();
  return 1;
}
Exemple #2
0
bool query_parse(struct query_risk * q_risk,
		SQLPatterns * sql_patterns, const char * q)
{
  p_risk = q_risk;
  //bzero(q_risk, sizeof(struct query_risk));
  memset(q_risk, 0, sizeof(struct query_risk));
  patterns = sql_patterns;
#ifndef WIN32
  scan_buffer(q);
#endif
  free_sql_strings();
  free_expressions();
  return true;
}
Exemple #3
0
void free_expression(struct expr *e)
{
  switch (e->exprtype)
  {
    case valtype:
      free_val(e->val.val);
      break;
    case binopexprtype:
      free_expression(e->val.binopexpr.e1);
      free_expression(e->val.binopexpr.e2);
      break;
    case unopexprtype:
      free_expression(e->val.unopexpr.e);
      break;
    case arrayexprtype:
      free_expression(e->val.arrayexpr.e1);
      free_expressions(e->val.arrayexpr.indices);
      break;
    case identtype:
      free(e->val.ident);
      break;
    case dereftype:
      free_expression(e->val.deref.e);
      break;
    case funcalltype:
      free_args(e->val.funcall.args);
      free(e->val.funcall.fun_ident);
      break;
    case structelttype:
      free_expression(e->val.structelt.record);
      free(e->val.structelt.field);
    default:
      break;
  }
  if (e->type)
    free(e->type);
  free(e);
}
Exemple #4
0
void free_caseblock(struct caseblock *caseblock)
{
  free_expressions(caseblock->exprlist);
  free_instructions(caseblock->instructions);
  free(caseblock);
}