Hi,

Can you try to update the wireshark release ? (using PPA)
https://launchpad.net/~wireshark-dev/+archive/ubuntu/stable

Cheers


On Fri, Jan 13, 2023 at 7:35 PM Cristian Constantin via Wireshark-dev <
wireshark-dev@wireshark.org> wrote:

> Hi!
>
> Wireshark crashes while decoding relatively large (~20 MBytes)
> captures with RDP traffic.
>
> Here is how the stack trace looks like (only frames 0-26, since there
> are 90 frames in the core dump):
>
> (gdb) bt
> #0  __memmove_avx_unaligned_erms () at
> ../sysdeps/x86_64/multiarch/memmove-vec-unaligned-erms.S:880
> #1  0x00007f3f7b0061c7 in memcpy (__len=74141568, __src=<optimized
> out>, __dest=<optimized out>)
>     at /usr/include/x86_64-linux-gnu/bits/string_fortified.h:29
> #2  zgfx_write_from_history (count=293605376, distance=<optimized
> out>, zgfx=0x5638bbfd2060)
>     at ./epan/tvbuff_rdp.c:311
> #3  rdp8_decompress_segment (zgfx=zgfx@entry=0x5638bbfd2060,
> tvb=<optimized out>)
>     at ./epan/tvbuff_rdp.c:441
> #4  0x00007f3f7b006657 in rdp8_decompress
>     (zgfx=0x5638bbfd2060, allocator=0x5638b94b9450,
> tvb=tvb@entry=0x5638c20a2d80, offset=1,
>     offset@entry=0) at ./epan/tvbuff_rdp.c:478
> #5  0x00007f3f7b882cdf in dissect_rdp_egfx
>     (tvb=0x5638c20a2d80, pinfo=0x7ffc1d3a9788,
> parent_tree=0x7f3f68011470, data=<optimized out>)
>     at ./epan/dissectors/packet-rdp_egfx.c:385
> #6  0x00007f3f7afb5558 in call_dissector_through_handle
>     (handle=handle@entry=0x5638ba6133a0, tvb=tvb@entry=0x5638c20a2d80,
> pinfo=pinfo@entry=0x7ffc1d3a9788, tree=tree@entry=0x5638c08eac00,
> data=data@entry=0x0) at ./epan/packet.c:757
> #7  0x00007f3f7afb642d in call_dissector_work
>     (handle=0x5638ba6133a0, tvb=0x5638c20a2d80,
> pinfo_arg=0x7ffc1d3a9788, tree=0x5638c08eac00, add_proto_name=1,
> data=0x0) at ./epan/packet.c:850
> #8  0x00007f3f7afb8887 in call_dissector_with_data
>     (handle=<optimized out>, tvb=0x5638c20a2d80, pinfo=0x7ffc1d3a9788,
> tree=0x5638c08eac00, data=<optimized out>) at ./epan/packet.c:3283
> #9  0x00007f3f7b8822cc in dissect_rdp_drdynvc
>     (tvb=0x5638c2013ca0, pinfo=0x7ffc1d3a9788, parent_tree=<optimized
> out>, data=<optimized out>)
>     at ./epan/dissectors/packet-rdp_drdynvc.c:438
> #10 0x00007f3f7afb5558 in call_dissector_through_handle
>     (handle=handle@entry=0x5638ba613340, tvb=tvb@entry=0x5638c2013ca0,
> pinfo=pinfo@entry=0x7ffc1d3a9788, tree=tree@entry=0x5638c08eab20,
> data=data@entry=0x0) at ./epan/packet.c:757
> #11 0x00007f3f7afb642d in call_dissector_work
>     (handle=0x5638ba613340, tvb=0x5638c2013ca0,
> pinfo_arg=0x7ffc1d3a9788, tree=0x5638c08eab20, add_proto_name=1,
> data=0x0) at ./epan/packet.c:850
> #12 0x00007f3f7afb8887 in call_dissector_with_data
>     (handle=<optimized out>, tvb=0x5638c2013ca0, pinfo=0x7ffc1d3a9788,
> tree=0x5638c08eab20, data=<optimized out>) at ./epan/packet.c:3283
> #13 0x00007f3f7b87ed63 in dissect_rdp_channelPDU
>     (tree=0x5638c08eab20, pinfo=<optimized out>, offset=<optimized
> out>, tvb=0x5638c1ef3e80)
>     at ./epan/dissectors/packet-rdp.c:1399
> #14 dissect_rdp_SendData
>     (tvb=0x5638c1ef3e80, pinfo=0x7ffc1d3a9788, tree=0x5638c08eab20,
> data=<optimized out>)
>     at ./epan/dissectors/packet-rdp.c:2162
> #15 0x00007f3f7afb5558 in call_dissector_through_handle
>     (handle=handle@entry=0x5638bbd83110, tvb=tvb@entry=0x5638c1ef3e80,
> pinfo=pinfo@entry=0x7ffc1d3a9788, tree=tree@entry=0x7f3f68011470,
> data=data@entry=0x0) at ./epan/packet.c:757
> #16 0x00007f3f7afb642d in call_dissector_work
>     (handle=0x5638bbd83110, tvb=tvb@entry=0x5638c1ef3e80,
> pinfo_arg=pinfo_arg@entry=0x7ffc1d3a9788,
> tree=tree@entry=0x7f3f68011470, add_proto_name=add_proto_name@entry=1,
> data=data@entry=0x0)
>     at ./epan/packet.c:850
> #17 0x00007f3f7afb6fc2 in dissector_try_uint_new
>     (sub_dissectors=<optimized out>, uint_val=1007,
> tvb=0x5638c1ef3e80, pinfo=0x7ffc1d3a9788, tree=0x7f3f68011470,
> add_proto_name=add_proto_name@entry=1, data=0x0) at
> ./epan/packet.c:1450
> #18 0x00007f3f7afb7035 in dissector_try_uint
>     (sub_dissectors=<optimized out>, uint_val=<optimized out>,
> tvb=<optimized out>, pinfo=<optimized out>, tree=<optimized out>) at
> ./epan/packet.c:1474
> #19 0x00007f3f7bfb3bfa in dissect_t124_T_userData_01
>     (tvb=<optimized out>, offset=6616, actx=0x7ffc1d3a7920,
> tree=<optimized out>, hf_index=<optimized out>) at
> ./asn1/t124/t124.cnf:187
> #20 0x00007f3f7b80b792 in dissect_per_sequence
>     (tvb=0x5638c1f76f70, offset=44, actx=0x7ffc1d3a7920,
> parent_tree=<optimized out>, hf_index=<optimized out>,
> ett_index=<optimized out>, sequence=0x7f3f7decb5a0
> <SendDataIndication_sequence>)
>     at ./epan/dissectors/packet-per.c:1925
> #21 0x00007f3f7bfb2c4c in dissect_t124_SendDataIndication
> --Type <RET> for more, q to quit, c to continue without paging--
>     (tvb=<optimized out>, offset=<optimized out>, actx=<optimized
> out>, tree=<optimized out>, hf_index=<optimized out>) at
> ./asn1/t124/t124.cnf:208
> #22 0x00007f3f7b80b394 in dissect_per_choice
> (tvb=tvb@entry=0x5638c1f76f70, offset=6,
>     offset@entry=0, actx=actx@entry=0x7ffc1d3a7920,
> tree=tree@entry=0x5638c08ea8b0, hf_index=188090, ett_index=49148,
> choice=0x7f3f7deca660 <DomainMCSPDU_choice>, value=0x7ffc1d3a791c)
>     at ./epan/dissectors/packet-per.c:1768
> #23 0x00007f3f7bfb4570 in dissect_t124_DomainMCSPDU
>     (offset=0, hf_index=<optimized out>, tree=0x5638c08ea8b0,
> actx=0x7ffc1d3a7920, tvb=0x5638c1f76f70)
>     at ./asn1/t124/t124.cnf:195
> #24 dissect_DomainMCSPDU_PDU
>     (tvb=tvb@entry=0x5638c1f76f70, pinfo=pinfo@entry=0x7ffc1d3a9788,
> tree=tree@entry=0x5638c08ea8b0)
>     at ./asn1/t124/packet-t124-template.c:102
> #25 0x00007f3f7bfb4b71 in dissect_t125
>     (tvb=tvb@entry=0x5638c1f76f70, pinfo=pinfo@entry=0x7ffc1d3a9788,
> parent_tree=parent_tree@entry=0x7f3f68011470, data=data@entry=0x0) at
> ./asn1/t125/packet-t125-template.c:78
> #26 0x00007f3f7bfb4dcc in dissect_t125_heur
>
> Details about frames 2, 3:
>
> (gdb) f 2
> #2  zgfx_write_from_history (count=293605376, distance=<optimized
> out>, zgfx=0x5638bbfd2060)
>     at ./epan/tvbuff_rdp.c:311
> 311 memcpy(outputPtr, &(zgfx->outputSegment[zgfx->outputCount]), toCopy);
> (gdb) f 3
> #3  rdp8_decompress_segment (zgfx=zgfx@entry=0x5638bbfd2060,
> tvb=<optimized out>)
>     at ./epan/tvbuff_rdp.c:441
> 441 if (!zgfx_write_from_history(zgfx, distance, count))
>
> The bug is easily reproducible with the captures I have; RDP traffic
> runs between "Windows 10" and "Windows Server 2019 Datacenter".
>
> Wireshark runs on Ubuntu:
>
> - Wireshark: Version 3.6.2 (Git v3.6.2 packaged as 3.6.2-2)
> - Ubuntu: $ cat /etc/lsb-release
> DISTRIB_ID=Ubuntu
> DISTRIB_RELEASE=22.04
> DISTRIB_CODENAME=jammy
> DISTRIB_DESCRIPTION="Ubuntu 22.04.1 LTS"
>
> 1. Is this issue known? I tried to look it up on gitlab but I did not
> find anything relevant. Should I file an issue on gitlab?
> 2. Can the EGFX decoder be turned off? I need the decoder for virtual
> channels though.
>
> Thanks a lot,
> Cristian
> ___________________________________________________________________________
> Sent via:    Wireshark-dev mailing list <wireshark-dev@wireshark.org>
> Archives:    https://www.wireshark.org/lists/wireshark-dev
> Unsubscribe: https://www.wireshark.org/mailman/options/wireshark-dev
>              mailto:wireshark-dev-requ...@wireshark.org
> ?subject=unsubscribe
>
___________________________________________________________________________
Sent via:    Wireshark-dev mailing list <wireshark-dev@wireshark.org>
Archives:    https://www.wireshark.org/lists/wireshark-dev
Unsubscribe: https://www.wireshark.org/mailman/options/wireshark-dev
             mailto:wireshark-dev-requ...@wireshark.org?subject=unsubscribe

Reply via email to