Text   |  XML   |  ReML   |   Visible Warnings:

Unreachable Control Flow  at dfvm.c:529

No properties have been set. | edit properties
Jump to warning location ↓ warning details...
Show Events | Options

dfvm_apply

(/home/sate/Testcases/c/cve/wireshark-1.2.0/epan/dfilter/dfvm.c)expand/collapse
Show more  
 387  dfvm_apply(dfilter_t *df, proto_tree *tree)
 388  {
 389          int             id, length;
 390          gboolean        accum = TRUE;
 391          dfvm_insn_t     *insn;
 392          dfvm_value_t    *arg1;
 393          dfvm_value_t    *arg2;
 394          dfvm_value_t    *arg3 = NULL;
 395          dfvm_value_t    *arg4 = NULL;
 396          header_field_info       *hfinfo;
 397          GList           *param1;
 398          GList           *param2;
 399   
 400          g_assert(tree);
 401   
 402          length = df->insns->len;
 403   
 404          for (id = 0; id < length; id++) {
 405   
 406            AGAIN:
 407                  insn = g_ptr_array_index(df->insns, id);
 408                  arg1 = insn->arg1;
 409                  arg2 = insn->arg2;
 410   
 411                  switch (insn->op) {
 412                          case CHECK_EXISTS:
 413                                  hfinfo = arg1->value.hfinfo;
 414                                  while(hfinfo) {
 415                                          accum = proto_check_for_protocol_or_field(tree,
 416                                                          hfinfo->id);
 417                                          if (accum) {
 418                                                  break;
 419                                          }
 420                                          else {
 421                                                  hfinfo = hfinfo->same_name_next;
 422                                          }
 423                                  }
 424                                  break;
 425   
 426                          case READ_TREE:
 427                                  accum = read_tree(df, tree,
 428                                                  arg1->value.hfinfo, arg2->value.numeric);
 429                                  break;
 430   
 431                          case CALL_FUNCTION:
 432                                  arg3 = insn->arg3;
 433                                  arg4 = insn->arg4;
 434                                  param1 = NULL;
 435                                  param2 = NULL;
 436                                  if (arg3) {
 437                                          param1 = df->registers[arg3->value.numeric];
 438                                  }
 439                                  if (arg4) {
 440                                          param2 = df->registers[arg4->value.numeric];
 441                                  }
 442                                  accum = arg1->value.funcdef->function(param1, param2,
 443                                                  &df->registers[arg2->value.numeric]);
 444                                  break;
 445   
 446                          case MK_RANGE:
 447                                  arg3 = insn->arg3;
 448                                  mk_range(df,
 449                                                  arg1->value.numeric, arg2->value.numeric,
 450                                                  arg3->value.drange);
 451                                  break;
 452   
 453                          case ANY_EQ:
 454                                  accum = any_test(df, fvalue_eq,
 455                                                  arg1->value.numeric, arg2->value.numeric);
 456                                  break;
 457   
 458                          case ANY_NE:
 459                                  accum = any_test(df, fvalue_ne,
 460                                                  arg1->value.numeric, arg2->value.numeric);
 461                                  break;
 462   
 463                          case ANY_GT:
 464                                  accum = any_test(df, fvalue_gt,
 465                                                  arg1->value.numeric, arg2->value.numeric);
 466                                  break;
 467   
 468                          case ANY_GE:
 469                                  accum = any_test(df, fvalue_ge,
 470                                                  arg1->value.numeric, arg2->value.numeric);
 471                                  break;
 472   
 473                          case ANY_LT:
 474                                  accum = any_test(df, fvalue_lt,
 475                                                  arg1->value.numeric, arg2->value.numeric);
 476                                  break;
 477   
 478                          case ANY_LE:
 479                                  accum = any_test(df, fvalue_le,
 480                                                  arg1->value.numeric, arg2->value.numeric);
 481                                  break;
 482   
 483                          case ANY_BITWISE_AND:
 484                                  accum = any_test(df, fvalue_bitwise_and,
 485                                                  arg1->value.numeric, arg2->value.numeric);
 486                                  break;
 487   
 488                          case ANY_CONTAINS:
 489                                  accum = any_test(df, fvalue_contains,
 490                                                  arg1->value.numeric, arg2->value.numeric);
 491                                  break;
 492   
 493                          case ANY_MATCHES:
 494                                  accum = any_test(df, fvalue_matches,
 495                                                  arg1->value.numeric, arg2->value.numeric);
 496                                  break;
 497   
 498                          case NOT:
 499                                  accum = !accum;
 500                                  break;
 501   
 502                          case RETURN:
 503                                  free_register_overhead(df);
 504                                  return accum;
 505   
 506                          case IF_TRUE_GOTO:
 507                                  if (accum) {
 508                                          id = arg1->value.numeric;
 509                                          goto AGAIN;
 510                                  }
 511                                  break;
 512   
 513                          case IF_FALSE_GOTO:
 514                                  if (!accum) {
 515                                          id = arg1->value.numeric;
 516                                          goto AGAIN;
 517                                  }
 518                                  break;
 519   
 520                          case PUT_FVALUE:
 521  #if 0 
 522                                  accum = put_fvalue(df,
 523                                                  arg1->value.fvalue, arg2->value.numeric);
 524                                  break;
 525  #endif
 526   
 527                          default:
 528                                  g_assert_not_reached();
 529                                  break;
 530                  }
 531          }
 532   
 533          g_assert_not_reached();
 534          return FALSE; /* to appease the compiler */
 535  }
Show more  




Change Warning 1172.29903 : Unreachable Control Flow

Priority:
State:
Finding:
Owner:
Note: