(/home/sate/Testcases/c/cve/wireshark-1.2.0/epan/dissectors/packet-diameter.c) |
| |
| 455 | | | static const char* |
| 456 | | | address_rfc_avp(diam_ctx_t* c, diam_avp_t* a, tvbuff_t* tvb) |
| 457 | | | { |
| 458 | | | char* label = ep_alloc(ITEM_LABEL_LENGTH+1); |
| 459 | | | address_avp_t* t = a->type_data; |
| 460 | | | proto_item* pi = proto_tree_add_item(c->tree,a->hf_value,tvb,0,tvb_length(tvb),FALSE); |
| 461 | | | proto_tree* pt = proto_item_add_subtree(pi,t->ett); |
| 462 | | | guint32 addr_type = tvb_get_ntohs(tvb,0); |
| 463 | | | guint32 len = tvb_length_remaining(tvb,2); |
| 464 | | | |
| 465 | | | proto_tree_add_item(pt,t->hf_address_type,tvb,0,2,FALSE); |
| 466 | | | switch (addr_type ) { |
Event 1:
addr_type evaluates to 1.
hide
|
|
| 467 | | | case 1: |
| 468 | | | if (len != 4) { |
Event 2:
Skipping " if". len != 4 evaluates to false.
hide
|
|
| 469 | | | pi = proto_tree_add_text(pt,tvb,2,len,"Wrong length for IPv4 Address: %d instead of 4",len); |
| 470 | | | expert_add_info_format(c->pinfo, pi, PI_MALFORMED, PI_WARN, "Wrong length for IPv4 Address"); |
| 471 | | | return "[Malformed]"; |
| 472 | | | } |
| 473 | [+] | | pi = proto_tree_add_item(pt,t->hf_ipv4,tvb,2,4,FALSE); |
 |
| 474 | | | break; |
| 475 | | | case 2: |
| 476 | | | if (len != 16) { |
| 477 | | | pi = proto_tree_add_text(pt,tvb,2,len,"Wrong length for IPv6 Address: %d instead of 16",len); |
| 478 | | | expert_add_info_format(c->pinfo, pi, PI_MALFORMED, PI_WARN, "Wrong length for IPv6 Address"); |
| 479 | | | return "[Malformed]"; |
| 480 | | | } |
| 481 | | | pi = proto_tree_add_item(pt,t->hf_ipv6,tvb,2,16,FALSE); |
| 482 | | | break; |
| 483 | | | default: |
| 484 | | | pi = proto_tree_add_item(pt,t->hf_other,tvb,2,-1,FALSE); |
| 485 | | | pt = proto_item_add_subtree(pi,t->ett); |
| 486 | | | break; |
| 487 | | | } |
| 488 | | | |
| 489 | | | proto_item_fill_label(pi->finfo, label); |
Null Pointer Dereference
pi is dereferenced here, but it is NULL. The issue can occur if the highlighted code executes. See related event 10. Show: All events | Only primary events |
|
| |