diff --git a/sql-edition/servers/MIFAREDriver.py b/sql-edition/servers/MIFAREDriver.py
index a3a65b6797dd6744f4baae08b74c3bce1b01baa6..46a073192d48ae97a53c5ee3f658136f987bc9c5 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):
@@ -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):
diff --git a/sql-edition/servers/VendingMachine.py b/sql-edition/servers/VendingMachine.py
index b7d747aeb5ed1a8755717cbb1a9917ec62cd25ec..e96832a9f52b22c57c86c24a97d8afc8fcfd849f 100644
--- a/sql-edition/servers/VendingMachine.py
+++ b/sql-edition/servers/VendingMachine.py
@@ -190,7 +190,7 @@ class VendingMachine:
 					self.mifare_timeout = now + 0.5
 					mifare_uid = self.mifare.get_card_id()
 					if mifare_uid != None:
-						logging.info('Got MIFARE card id %s'%(str(mifare_uid)))
+						logging.info('Got MIFARE card id %s'%(repr(mifare_uid)))
 						self.events.append((MIFARE, mifare_uid))
 						timeout = 0
 			if timeout == 0: