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
This commit is contained in:
Harald Welte 2021-10-14 20:44:23 +02:00 committed by laforge
parent b52feede25
commit 611dd783f6
1 changed files with 5 additions and 4 deletions

View File

@ -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