Skip to content
GitLab
    • GitLab: the DevOps platform
    • Explore GitLab
    • Install GitLab
    • How GitLab compares
    • Get started
    • GitLab docs
    • GitLab Learn
  • Pricing
  • Talk to an expert
  • /
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
    • Contribute to GitLab
    • Switch to GitLab Next
    Projects Groups Topics Snippets
  • Register
  • Sign in
  • wireshark wireshark
  • Project information
    • Project information
    • Activity
    • Labels
    • Members
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributor statistics
    • Graph
    • Compare revisions
    • Locked files
  • Issues 1.4k
    • Issues 1.4k
    • List
    • Boards
    • Service Desk
    • Milestones
    • Iterations
    • Requirements
  • Merge requests 180
    • Merge requests 180
  • CI/CD
    • CI/CD
    • Pipelines
    • Jobs
    • Artifacts
    • Schedules
    • Test cases
  • Deployments
    • Deployments
    • Environments
    • Releases
  • Packages and registries
    • Packages and registries
    • Model experiments
  • Monitor
    • Monitor
    • Incidents
  • Analytics
    • Analytics
    • Value stream
    • CI/CD
    • Code review
    • Insights
    • Issue
    • Repository
  • Wiki
    • Wiki
  • External wiki
    • External wiki
  • Snippets
    • Snippets
  • Activity
  • Graph
  • Create a new issue
  • Jobs
  • Commits
  • Issue Boards
Collapse sidebar
  • Wireshark FoundationWireshark Foundation
  • wiresharkwireshark
  • Issues
  • #18839
Closed
Open
Issue created Feb 03, 2023 by Dr. Lars Völker@LarsVoelkerContributor

ISO15765 and ISO10681 dissectors corrupt memory and Wireshark may crash

Summary

Traces with a lot of ISO15765 consecutive segments (e.g. 32) corrupt memory, so that Wireshark can crash (Wireshark 4.0) or hang (Wireshark 3.6). The same happens with the ISO10681 dissector.

I have a patch prepared and will create a MR.

Detailed Analysis

The following line of packet-iso15765.c may write behind the "frag_id_high" array: frag_id += ((iso15765_frame->frag_id_high[frag_id]++) * 16);

This overflows the header of the next memory chunk. In my analysis the table inside the iso15765_frame_table map.

When after 32 flows, the table needs to be resized with wmem_map_grow and the old chunk is freed. Since the position of the previous chunk was corrupted, Wireshark crashes.

To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information
Assignee
Assign to
Time tracking