Index: cackey.c
==================================================================
--- cackey.c
+++ cackey.c
@@ -1146,11 +1146,11 @@
 
 		if (recv_len < bytes_to_copy) {
 			bytes_to_copy = recv_len;
 		}
 
-		CACKEY_DEBUG_PRINTF("Copying %lu bytes to the buffer", (unsigned long) bytes_to_copy);
+		CACKEY_DEBUG_PRINTF("Copying %lu bytes to the buffer (recv'd %lu bytes, but only %lu bytes left in our buffer)", (unsigned long) bytes_to_copy, (unsigned long) recv_len, (unsigned long) *respdata_len);
 
 		memcpy(respdata, recv_buf, bytes_to_copy);
 		respdata += bytes_to_copy;
 
 		*respdata_len = bytes_to_copy;
@@ -1162,10 +1162,14 @@
 	}
 
 	if (major_rc == 0x61) {
 		/* We need to READ */
 		CACKEY_DEBUG_PRINTF("Buffer read required");
+
+		if (minor_rc == 0x00) {
+			minor_rc = 253;
+		}
 
 		pcsc_getresp_ret = cackey_send_apdu(slot, GSCIS_CLASS_ISO7816, GSCIS_INSTR_GET_RESPONSE, 0x00, 0x00, 0, NULL, minor_rc, respcode, respdata, &tmp_respdata_len);
 		if (pcsc_getresp_ret != CACKEY_PCSC_S_OK) {
 			CACKEY_DEBUG_PRINTF("Buffer read failed!  Returning in failure");