- for (i = 0; i < statelists[0].len; i++) {\r
- uint8_t keyBlock[6];\r
- uint64_t key64;\r
- crypto1_get_lfsr(statelists[0].head.slhead + i, &key64);\r
- num_to_bytes(key64, 6, keyBlock);\r
- key64 = 0;\r
- if (!mfCheckKeys(statelists[0].blockNo, statelists[0].keyType, false, 1, keyBlock, &key64)) {\r
+ // uint32_t max_keys = keycnt > (USB_CMD_DATA_SIZE/6) ? (USB_CMD_DATA_SIZE/6) : keycnt;\r
+\r
+ uint32_t numOfCandidates = statelists[0].len;\r
+ if ( numOfCandidates > 0 ) {\r
+\r
+ uint8_t keyBlock[USB_CMD_DATA_SIZE] = {0x00};\r
+\r
+ for (i = 0; i < numOfCandidates; ++i){\r
+ crypto1_get_lfsr(statelists[0].head.slhead + i, &key64);\r
+ num_to_bytes(key64, 6, keyBlock + i * 6);\r
+ }\r
+\r
+ if (!mfCheckKeys(statelists[0].blockNo, statelists[0].keyType, false, numOfCandidates, keyBlock, &key64)) { \r
+ free(statelists[0].head.slhead);\r
+ free(statelists[1].head.slhead);\r