(/home/sate/Testcases/c/cve/wireshark-1.2.0/epan/dissectors/packet-image-jfif.c) |
| |
| 775 | | | dissect_jfif(tvbuff_t *tvb, packet_info *pinfo _U_, proto_tree *tree) |
| 776 | | | { |
| 777 | | | proto_tree *subtree = NULL; |
| 778 | | | proto_item *ti; |
| 779 | | | guint tvb_len = tvb_reported_length(tvb); |
| 780 | | | guint32 offset = 0; |
| 781 | | | tvbuff_t *tmp_tvb; |
| 782 | | | guint32 len; |
| 783 | | | guint16 marker; |
| 784 | | | |
| 785 | | | |
| 786 | | | if (check_col(pinfo->cinfo, COL_INFO)) |
| 787 | | | col_append_sep_fstr(pinfo->cinfo, COL_INFO, " ", "(JPEG JFIF image)"); |
| 788 | | | |
| 789 | | | if (tree) { |
| 790 | | | ti = proto_tree_add_item(tree, proto_jfif, |
| 791 | | | tvb, 0, -1, FALSE); |
| 792 | | | subtree = proto_item_add_subtree(ti, ett_jfif); |
| 793 | | | } |
| 794 | | | |
| 795 | | | marker = tvb_get_ntohs(tvb, 0); |
| 796 | | | if (marker != MARKER_SOI) { |
| 797 | | | if (tree) { |
| 798 | | | proto_tree_add_text(subtree, tvb, 0, 2, ErrorInvalidJFIF); |
| 799 | | | return; |
| 800 | | | } |
| 801 | | | } |
| 802 | | | if (tree) |
| 803 | | | proto_tree_add_item(subtree, hf_marker, tvb, 0, 2, FALSE); |
| 804 | | | |
| 805 | | | offset = 2; |
| 806 | | | |
| 807 | | | |
| 808 | | | |
| 809 | | | |
| 810 | | | while (offset < tvb_len) { |
| 811 | | | const char *str; |
| 812 | | | marker = tvb_get_ntohs(tvb, offset); |
| 813 | | | str = match_strval(marker, vals_marker); |
| 814 | | | if (str) { |
| 815 | | | if (marker_has_length(marker)) {
x /home/sate/Testcases/c/cve/wireshark-1.2.0/epan/dissectors/packet-image-jfif.c |
| |
149 | #define marker_has_length(marker) ( ! ( \ |
150 | ((marker) == MARKER_TEM) \ |
151 | || ((marker) == MARKER_SOI) \ |
152 | || ((marker) == MARKER_EOI) \ |
153 | || ( ((marker) >= MARKER_RST0) && ((marker) <= MARKER_RST7) ) \ |
154 | ) ) |
| |
|
| 816 | | | |
| 817 | | | len = tvb_get_ntohs(tvb, offset + 2); |
| 818 | | | tmp_tvb = tvb_new_subset(tvb, offset, 2 + len, 2 + len); |
| 819 | | | switch (marker) { |
| 820 | | | case MARKER_APP0: |
| 821 | | | process_app0_segment(subtree, tmp_tvb, len, marker, str); |
| 822 | | | break; |
| 823 | | | case MARKER_APP1: |
| 824 | | | process_app1_segment(subtree, tmp_tvb, len, marker, str); |
| 825 | | | break; |
| 826 | | | case MARKER_APP2: |
| 827 | | | process_app2_segment(subtree, tmp_tvb, len, marker, str); |
| 828 | | | break; |
| 829 | | | case MARKER_SOF0: |
| 830 | | | case MARKER_SOF1: |
| 831 | | | case MARKER_SOF2: |
| 832 | | | case MARKER_SOF3: |
| 833 | | | case MARKER_SOF5: |
| 834 | | | case MARKER_SOF6: |
| 835 | | | case MARKER_SOF7: |
| 836 | | | case MARKER_SOF8: |
| 837 | | | case MARKER_SOF9: |
| 838 | | | case MARKER_SOF10: |
| 839 | | | case MARKER_SOF11: |
| 840 | | | case MARKER_SOF13: |
| 841 | | | case MARKER_SOF14: |
| 842 | | | case MARKER_SOF15: |
| 843 | | | (subtree, tmp_tvb, len, marker, str); |
| 844 | | | break; |
| 845 | | | case MARKER_SOS: |
| 846 | | | (subtree, tmp_tvb, len, marker, str); |
| 847 | | | |
| 848 | | | |
| 849 | | | |
| 850 | | | proto_tree_add_text(subtree, tvb, offset + 2 + len, -1, |
| 851 | | | "JFIF dissection stops here (dissection of a scan is not yet implemented)"); |
| 852 | | | return; |
| 853 | | | break; |
Unreachable Control Flow
The highlighted code will not execute under any circumstances. This may be because of: |
|
| 854 | | | default: |
| 855 | | | process_marker_segment(subtree, tmp_tvb, len, marker, str); |
| 856 | | | break; |
| 857 | | | } |
| 858 | | | offset += 2 + len; |
| 859 | | | } else { |
| 860 | | | |
| 861 | | | proto_tree_add_item(subtree, hf_marker, |
| 862 | | | tvb, offset, 2, FALSE); |
| 863 | | | offset += 2; |
| 864 | | | } |
| 865 | | | } else { |
| 866 | | | ti = proto_tree_add_item(subtree, hf_marker, |
| 867 | | | tvb, offset, 2, FALSE); |
| 868 | | | proto_item_append_text(ti, " (Reserved)"); |
| 869 | | | return; |
| 870 | | | } |
| 871 | | | } |
| 872 | | | |
| 873 | | | return; |
| 874 | | | } |
| |