(/home/sate/Testcases/c/cve/wireshark-1.2.0/epan/dissectors/packet-netflow.c) |
| |
| 1262 | | | dissect_v9_pdu(tvbuff_t * tvb, packet_info * pinfo, proto_tree * pdutree, int offset, |
| 1263 | | | struct v9_template * template) |
| 1264 | | | { |
| 1265 | | | int orig_offset = offset; |
| 1266 | | | int i; |
| 1267 | | | int rev; |
| 1268 | | | nstime_t ts_start[2], ts_end[2]; |
| 1269 | | | int offset_s[2], offset_e[2]; |
| 1270 | | | nstime_t ts_delta; |
| 1271 | | | guint32 msec_start[2], msec_end[2]; |
| 1272 | | | guint32 msec_delta; |
| 1273 | | | proto_tree * timetree = 0; |
| 1274 | | | proto_item * timeitem = 0; |
| 1275 | | | guint16 pen_count = 0; |
| 1276 | | | address local_addr, remote_addr; |
| 1277 | | | guint16 local_port = 0, remote_port = 0, ipv4_id = 0, icmp_id = 0; |
| 1278 | | | guint32 uid = 0, pid = 0; |
| 1279 | | | int uname_len; |
| 1280 | | | gchar * uname_str = NULL; |
| 1281 | | | int cmd_len; |
| 1282 | | | gchar * cmd_str = NULL; |
| 1283 | | | guint16 got_flags = 0; |
| 1284 | | | |
| 1285 | | | offset_s[0] = offset_s[1] = offset_e[0] = offset_e[1] = 0; |
| 1286 | | | msec_start[0] = msec_start[1] = msec_end[0] = msec_end[1] = 0; |
| 1287 | | | |
| 1288 | | | if( (template->count_scopes > 0) && (template->scopes != NULL)) { |
Event 1:
Skipping " if". template->count_scopes > 0 evaluates to false.
hide
|
|
| 1289 | | | for(i = 0; i < template->count_scopes; i++) { |
| 1290 | | | guint16 type = template->scopes[i].type; |
| 1291 | | | guint16 length = template->scopes[i].length; |
| 1292 | | | switch( type ) { |
| 1293 | | | case 1: |
| 1294 | | | if( length == 4) { |
| 1295 | | | proto_tree_add_item(pdutree, hf_cflow_scope_system, |
| 1296 | | | tvb, offset, length, FALSE); |
| 1297 | | | } else if (length > 0) { |
| 1298 | | | proto_tree_add_text(pdutree, |
| 1299 1323 |  | | [ Lines 1299 to 1323 omitted. ] |
| 1324 | | | break; |
| 1325 | | | default: |
| 1326 | | | proto_tree_add_item(pdutree, hf_cflow_scope_unknown, |
| 1327 | | | tvb, offset, length, FALSE); |
| 1328 | | | break; |
| 1329 | | | } |
| 1330 | | | offset += length; |
| 1331 | | | } |
| 1332 | | | } |
| 1333 | | | |
| 1334 | | | for (i = 0; i < template->count; i++) { |
Event 2:
Entering loop body. i < template->count evaluates to true.
hide
Event 12:
Continuing from loop body. Leaving loop. i < template->count evaluates to false.
hide
|
|
| 1335 | | | guint64 pen_type; |
| 1336 | | | guint16 type, length; |
| 1337 | | | guint32 pen = 0; |
| 1338 | | | |
| 1339 | | | rev = 0; |
| 1340 | | | type = template->entries[i + pen_count].type; |
| 1341 | | | length = template->entries[i + pen_count].length; |
| 1342 | | | if (type & 0x8000) { |
Event 3:
Skipping " if". type & 32768 evaluates to false.
hide
|
|
| 1343 | | | pen_count++; |
| 1344 | | | pen = *(guint32 *)&template->entries[i + pen_count]; |
| 1345 | | | if (pen == REVPEN) { |
| 1346 | | | type &= 0x7fff; |
| 1347 | | | rev = 1; |
| 1348 | | | } |
| 1349 | | | } |
| 1350 | | | |
| 1351 | | | pen_type = pen << 16 | (type & 0x7fff); |
| 1352 | | | |
| 1353 | | | switch (pen_type) { |
Event 4:
pen_type evaluates to 154.
hide
|
|
| 1354 | | | |
| 1355 | | | case 85: |
| 1356 | | | case 1: |
| 1357 | | | if (length == 4) { |
| 1358 | | | proto_tree_add_item(pdutree, hf_cflow_octets, |
| 1359 | | | tvb, offset, length, FALSE); |
| 1360 | | | } else if (length == 8) { |
| 1361 | | | proto_tree_add_item(pdutree, hf_cflow_octets64, |
| 1362 | | | tvb, offset, length, FALSE); |
| 1363 | | | } else { |
| 1364 1549 |  | | [ Lines 1364 to 1549 omitted. ] |
| 1550 | | | if(type == 152) { |
| 1551 | | | offset_s[rev] = offset; |
| 1552 | | | ts_start[rev].secs = tvb_get_ntohl(tvb, offset); |
| 1553 | | | ts_start[rev].nsecs = tvb_get_ntohl(tvb, offset + 4) * 1000000; |
| 1554 | | | } else if(type == 153) { |
| 1555 | | | offset_e[rev] = offset; |
| 1556 | | | ts_end[rev].secs = tvb_get_ntohl(tvb, offset); |
| 1557 | | | ts_end[rev].nsecs = tvb_get_ntohl(tvb, offset + 4) * 1000000; |
| 1558 | | | } |
| 1559 | | | |
| 1560 | | | case 154: |
| 1561 | | | case 155: |
| 1562 | | | if(type == 154) { |
Event 5:
Taking false branch. type == 154 evaluates to false.
hide
|
|
| 1563 | | | offset_s[rev] = offset; |
| 1564 | | | ts_start[rev].secs = tvb_get_ntohl(tvb, offset); |
| 1565 | | | ts_start[rev].nsecs = tvb_get_ntohl(tvb, offset + 4) * 1000; |
| 1566 | | | } else if(type == 155) { |
Event 6:
Skipping " if". type == 155 evaluates to false.
hide
|
|
| 1567 | | | offset_e[rev] = offset; |
| 1568 | | | ts_end[rev].secs = tvb_get_ntohl(tvb, offset); |
| 1569 | | | ts_end[rev].nsecs = tvb_get_ntohl(tvb, offset + 4) * 1000; |
| 1570 | | | } |
| 1571 | | | |
| 1572 | | | case 156: |
| 1573 | | | case 157: |
| 1574 | | | if(type == 156) { |
Event 7:
Taking false branch. type == 156 evaluates to false.
hide
|
|
| 1575 | | | offset_s[rev] = offset; |
| 1576 | | | ts_start[rev].secs = tvb_get_ntohl(tvb, offset); |
| 1577 | | | ts_start[rev].nsecs = tvb_get_ntohl(tvb, offset + 4); |
| 1578 | | | } else if(type == 157) { |
Event 8:
Taking true branch. type == 157 evaluates to true.
hide
|
|
| 1579 | | | offset_e[rev] = offset; |
| 1580 | | | ts_end[rev].secs = tvb_get_ntohl(tvb, offset); |
| 1581 | | | ts_end[rev].nsecs = tvb_get_ntohl(tvb, offset + 4); |
| 1582 | | | } |
| 1583 | | | |
| 1584 | | | case 158: |
| 1585 | | | case 159: |
| 1586 | | | if(type == 158) { |
Event 9:
Taking false branch. type == 158 evaluates to false.
hide
|
|
| 1587 | | | offset_s[rev] = offset; |
| 1588 | | | msec_start[rev] = tvb_get_ntohl(tvb, offset); |
| 1589 | | | ts_start[rev].secs = msec_start[rev] / 1000000; |
| 1590 | | | ts_start[rev].nsecs = (msec_start[rev] % 1000000) * 1000000; |
| 1591 | | | } else if(type == 159) { |
Event 10:
Skipping " if". type == 159 evaluates to false.
hide
|
|
| 1592 | | | offset_e[rev] = offset; |
| 1593 | | | msec_end[rev] = tvb_get_ntohl(tvb, offset); |
| 1594 | | | ts_end[rev].secs = msec_end[rev] / 1000000; |
| 1595 | | | ts_end[rev].nsecs = (msec_end[rev] % 1000000) * 1000000; |
| 1596 | | | } |
| 1597 | | | |
| 1598 | | | if(offset_s[rev] && offset_e[rev]) { |
Event 11:
Skipping " if". offset_s[rev] evaluates to false.
hide
|
|
| 1599 | | | nstime_delta(&ts_delta, &ts_end[rev], &ts_start[rev]); |
| 1600 | | | timeitem = |
| 1601 | | | proto_tree_add_time(pdutree, hf_cflow_timedelta, tvb, |
| 1602 | | | offset_s[rev], 0, &ts_delta); |
| 1603 | | | PROTO_ITEM_SET_GENERATED(timeitem);
x /home/sate/Testcases/c/cve/wireshark-1.2.0/epan/proto.h |
| |
325 | #define PROTO_ITEM_SET_GENERATED(proto_item) \ |
326 | ((proto_item) ? FI_SET_FLAG((proto_item)->finfo, FI_GENERATED) : 0) |
| |
x /home/sate/Testcases/c/cve/wireshark-1.2.0/epan/proto.h |
| |
246 | #define FI_SET_FLAG(fi, flag) (fi->flags = fi->flags | flag) |
| |
|
| 1604 | | | timetree = proto_item_add_subtree(timeitem, ett_flowtime); |
| 1605 | | | if (msec_start[rev]) { |
| 1606 | | | proto_tree_add_time(timetree, hf_cflow_timestart, tvb, |
| 1607 | | | offset_s[rev], length, &ts_start[rev]); |
| 1608 | | | } else { |
| 1609 | | | proto_tree_add_time(timetree, hf_cflow_abstimestart, tvb, |
| 1610 | | | offset_s[rev], length, &ts_start[rev]); |
| 1611 | | | } |
| 1612 | | | if (msec_end[rev]) { |
| 1613 | | | proto_tree_add_time(timetree, hf_cflow_timeend, tvb, |
| 1614 | | | offset_e[rev], length, &ts_end[rev]); |
| 1615 | | | } else { |
| 1616 | | | proto_tree_add_time(timetree, hf_cflow_abstimeend, tvb, |
| 1617 | | | offset_e[rev], length, &ts_end[rev]); |
| 1618 | | | } |
| 1619 | | | } |
| 1620 | | | break; |
| 1621 | | | |
| 1622 | | | case 23: |
| 1623 | | | if (length == 4) { |
| 1624 | | | proto_tree_add_item(pdutree, hf_cflow_post_octets, |
| 1625 | | | tvb, offset, length, FALSE); |
| 1626 | | | } else if (length == 8) { |
| 1627 | | | proto_tree_add_item(pdutree, hf_cflow_post_octets64, |
| 1628 | | | tvb, offset, length, FALSE); |
| 1629 | | | } else { |
| 1630 | | | proto_tree_add_text(pdutree, |
| 1631 2653 |  | | [ Lines 1631 to 2653 omitted. ] |
| 2654 | | | "(%s) Type %u ", |
| 2655 | | | match_strval(pen, sminmpec_values), type & 0x7fff); |
| 2656 | | | |
| 2657 | | | else |
| 2658 | | | proto_tree_add_text(pdutree, tvb, offset, length, |
| 2659 | | | "%s Type %u %s", pen == REVPEN ? "Reverse" : "", |
| 2660 | | | type & 0x7fff, decode_v9_template_types(type)); |
| 2661 | | | break; |
| 2662 | | | } |
| 2663 | | | |
| 2664 | | | offset += length; |
| 2665 | | | } |
| 2666 | | | for (i = 0; i < 2; i++) { |
Event 13:
i is set to 0.
hide
Event 14:
Entering loop body. i < 2 evaluates to true.
hide
|
|
| 2667 | | | if (!(offset_s[i] && offset_e[i])) { |
Event 15:
Taking true branch. offset_s[i] evaluates to false.
hide
|
|
| 2668 | | | if (offset_s[i]) { |
Event 16:
Skipping " if". offset_s[i] evaluates to false.
hide
|
|
| 2669 | | | if (msec_start[i]) { |
| 2670 | | | proto_tree_add_time(pdutree, hf_cflow_timestart, tvb, |
| 2671 | | | offset_s[i], 4, &ts_start[i]); |
| 2672 | | | } else { |
| 2673 | | | proto_tree_add_time(pdutree, hf_cflow_abstimestart, tvb, |
| 2674 | | | offset_s[i], 4, &ts_start[i]); |
| 2675 | | | } |
| 2676 | | | } |
| 2677 | | | if (offset_e[i]) { |
Event 17:
Taking true branch. offset_e[i] evaluates to true.
hide
|
|
| 2678 | | | if (msec_end[i]) { |
Event 18:
Taking false branch. msec_end[i] evaluates to false.
hide
|
|
| 2679 | | | proto_tree_add_time(pdutree, hf_cflow_timeend, tvb, |
| 2680 | | | offset_e[i], 4, &ts_end[i]); |
| 2681 | | | } else { |
| 2682 | | | proto_tree_add_time(pdutree, hf_cflow_abstimeend, tvb, |
| 2683 | [+] | | offset_s[i], 4, &ts_start[i]); |
Event 19:
ts_start is passed to proto_tree_add_time() as the sixth argument. See related event 13.
hide
Event 20:
proto_tree_add_time() does not initialize ts_start. - This may be because of a failure case or other special case for proto_tree_add_time().
hide
|
|
 |
| |