mirror of
https://gitea.osmocom.org/sim-card/pysim.git
synced 2026-03-16 18:38:32 +03:00
utils: do not crash when all bytes of EF.IMSI are 0xFF
In case try to decode the contents of an uninitalized EF.IMSI, the function dec_imsi() would crash because it truncates all 0xFF from the swapped version of the EF.IMSI contents and then accesses the first element of the buffer. This always works for EF.IMSI contents that contain valid IMSI data, but if all bytes are set to 0xFF, then no data is left in the buffer after truncating, so lets check if we even have bytes left before we move on with the decoding. Change-Id: I93874a1d7e0b87d39e4b06a5c504643cfabb451c
This commit is contained in:
@@ -85,6 +85,8 @@ def dec_imsi(ef):
|
||||
l = int(ef[0:2], 16) * 2 # Length of the IMSI string
|
||||
l = l - 1 # Encoded length byte includes oe nibble
|
||||
swapped = swap_nibbles(ef[2:]).rstrip('f')
|
||||
if len(swapped) < 1:
|
||||
return None
|
||||
oe = (int(swapped[0])>>3) & 1 # Odd (1) / Even (0)
|
||||
if not oe:
|
||||
# if even, only half of last byte was used
|
||||
|
||||
Reference in New Issue
Block a user