From 611dd783f6f070034d579a012c49ec50f7e6187c Mon Sep 17 00:00:00 2001 From: Harald Welte Date: Thu, 14 Oct 2021 20:44:23 +0200 Subject: [PATCH] commands: Fix read_binary() for non-zero offset Similar to the fix in Ie1aeaab29701946233ed73db3331039690d695da for update_binary(), read_binary() also contained a bug when treating non-zero offsets. Change-Id: Ic5c2f0ad1c1ec9c4e9c97e72895382f7b6fa9470 Related: OS#5254 --- pySim/commands.py | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/pySim/commands.py b/pySim/commands.py index cd2b5b3a..d53cb3e9 100644 --- a/pySim/commands.py +++ b/pySim/commands.py @@ -141,13 +141,14 @@ class SimCardCommands(object): if length is None: length = self.__len(r) - offset total_data = '' - while offset < length: - chunk_len = min(255, length-offset) - pdu = self.cla_byte + 'b0%04x%02x' % (offset, chunk_len) + chunk_offset = 0 + while chunk_offset < length: + chunk_len = min(255, length-chunk_offset) + pdu = self.cla_byte + 'b0%04x%02x' % (offset + chunk_offset, chunk_len) data,sw = self._tp.send_apdu(pdu) if sw == '9000': total_data += data - offset += chunk_len + chunk_offset += chunk_len else: raise ValueError('Failed to read (offset %d)' % (offset)) return total_data, sw