X-Git-Url: https://git.ucc.asn.au/?p=uccvend-vendserver.git;a=blobdiff_plain;f=sql-edition%2Fservers%2FMIFAREDriver.py;h=6248f60c2934b2e2135c8a97899561116dd2c5bc;hp=a3a65b6797dd6744f4baae08b74c3bce1b01baa6;hb=31c3aa4355f03930a68cf25a83c8160414249213;hpb=07137a6ba9397180f6edb5b61a74bb6c18746811 diff --git a/sql-edition/servers/MIFAREDriver.py b/sql-edition/servers/MIFAREDriver.py index a3a65b6..6248f60 100644 --- a/sql-edition/servers/MIFAREDriver.py +++ b/sql-edition/servers/MIFAREDriver.py @@ -7,7 +7,7 @@ Requires Python 2.5. Licensed under an MIT-style license: see LICENSE file for details. ''' -import serial +import serial, logging xor = lambda x, y: x ^ y def checksum(string): @@ -96,7 +96,7 @@ class MIFAREReader: card_type_response = self.send_packet(command) - if card_type_response[2] == '\x14': + if card_type_response == None or card_type_response[2] == '\x14': raise MIFAREException, "select_card: no card available" card_type = card_type_response[3:5] @@ -111,7 +111,12 @@ class MIFAREReader: serial = self.send_packet(command)[3:] # Select the card for use - capacity = ord(self.send_packet('\x03\x02' + serial)[3]) + try: + select_response = self.send_packet('\x03\x02' + serial) + capacity = ord(select_response[3]) + except IndexError: + logging.warning('Tried to select card but failed: card_type %s, serial %s, select_response %s' % (card_type.__repr__(), serial.__repr__(), select_response.__repr__())) + capacity = 0 return (serial, capacity) def sector_login(self, blockvect, key, keytype=0):