From d7acc6403ed1e1a138c8d8fb662ee995442f209b Mon Sep 17 00:00:00 2001 From: marshmellow42 Date: Tue, 19 May 2015 11:30:50 -0400 Subject: [PATCH] hf mfu dump - bigbuf allocation fix some larger nfc tags can get large so set the allocation to the 4k CARD_MEMORY_SIZE buffersize. --- armsrc/mifarecmd.c | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/armsrc/mifarecmd.c b/armsrc/mifarecmd.c index 23652070..0586a25d 100644 --- a/armsrc/mifarecmd.c +++ b/armsrc/mifarecmd.c @@ -250,17 +250,26 @@ void MifareReadSector(uint8_t arg0, uint8_t arg1, uint8_t arg2, uint8_t *datain) void MifareUReadCard(uint8_t arg0, uint16_t arg1, uint8_t arg2, uint8_t *datain) { + // free eventually allocated BigBuf memory + BigBuf_free(); + // clear trace + clear_trace(); + // params uint8_t blockNo = arg0; uint16_t blocks = arg1; bool useKey = (arg2 == 1); //UL_C bool usePwd = (arg2 == 2); //UL_EV1/NTAG uint32_t countblocks = 0; - uint8_t *dataout = BigBuf_get_addr(); + uint8_t *dataout = BigBuf_malloc(CARD_MEMORY_SIZE); + if (dataout == NULL){ + Dbprintf("out of memory"); + OnError(1); + return; + } LEDsoff(); LED_A_ON(); - clear_trace(); iso14443a_setup(FPGA_HF_ISO14443A_READER_LISTEN); int len = iso14443a_select_card(NULL, NULL, NULL); @@ -294,7 +303,7 @@ void MifareUReadCard(uint8_t arg0, uint16_t arg1, uint8_t arg2, uint8_t *datain) } for (int i = 0; i < blocks; i++){ - if ((i*4) + 4 > BigBuf_get_traceLen()) { + if ((i*4) + 4 > CARD_MEMORY_SIZE) { Dbprintf("Data exceeds buffer!!"); break; } -- 2.39.2