host/cardem: fix integer overflow in process_do_rx_da()

osmo_apdu_segment_in() may return a negative number on receipt of
"unknown APDU case", and that would crash simtrace2-cardem-pcsc:

  msgb(0x55d2cf7aa8a0): Not enough tailroom msgb_put
    (allocated 920, head at 0, len 7, tailroom 1017 < want tailroom 65534)
  backtrace() returned 19 addresses

Whenever osmo_apdu_segment_in() fails to recognize an APDU, the
communication is broken, because we don't know if we should continue
transmitting or receiving.  Only a successful return value by would
allow us to know this.  Do not crash, exit() gracefully.

Change-Id: I9e97b955a28ec886a429d744f9316e7e71be4481
Related: OS#5600
1 file changed
tree: acccef879c9050b42184cbf19423bb05016aba4c
  1. contrib/
  2. debian/
  3. firmware/
  4. hardware/
  5. host/
  6. .clang-format
  7. .gitignore
  8. .gitmodules
  9. .gitreview
  10. clk_calc.py
  11. git-version-gen
  12. Makefile
  13. README.md
  14. TODO-RELEASE
README.md

SIMtrace v2.0

This is the repository for the next-generation SIMtrace devices, providing abilities to trace the communication between (U)SIM card and phone, remote (U)SIM card forward, (U)SIM man-in-the-middle, and more.

NOTE: Nothing in this repository applies to the SIMtrace v1.x hardware or its associated firmware. SIMtrace v1.x is based on a different CPU / microcontroller architecture and uses a completely different software stack and host software.

Supported Hardware

  • Osmocom SIMtrace 1.x with SAM3 controller ** this is open hardware and schematics / PCB design is published
  • sysmocom sysmoQMOD (with 4 Modems, 4 SIM slots and 2 SAM3) ** this is a proprietary device, publicly available from sysmocom
  • sysmocom OWHW (with 2 Modems and 1 SAM3 onboard) ** this is not publicly available hardware, but still supported

This Repository

This repository contains several directory

  • firmware - the firmware to run on the actual devices
  • hardware - some information related to the hardware
  • host - Programs to use on the USB host to interface with the hardware

The host software includes

  • libosmo-simtrace2 - a shared library to talk to devices running the simtrace2 firmware
  • simtrace2-list - list any USB-attached devices running simtrace2 firmware
  • simtrace2-sniff - interface the 'trace' firmware to obtain card protocol traces
  • simtrace2-cardem-pcsc - interface the 'cardem' fimrware to use a SIM in a PC/SC reader