]> git.zerfleddert.de Git - proxmark3-svn/commitdiff
hf mfu dump - bigbuf allocation fix
authormarshmellow42 <marshmellowrf@gmail.com>
Tue, 19 May 2015 15:30:50 +0000 (11:30 -0400)
committermarshmellow42 <marshmellowrf@gmail.com>
Tue, 19 May 2015 15:30:50 +0000 (11:30 -0400)
some larger nfc tags can get large so set the allocation to the 4k
CARD_MEMORY_SIZE buffersize.

armsrc/mifarecmd.c

index 23652070ee0911cf54929bd550ad810cd03f055f..0586a25db1b8882678ca3bd3080bcb37437d9293 100644 (file)
@@ -250,17 +250,26 @@ void MifareReadSector(uint8_t arg0, uint8_t arg1, uint8_t arg2, uint8_t *datain)
 \r
 void MifareUReadCard(uint8_t arg0, uint16_t arg1, uint8_t arg2, uint8_t *datain)\r
 {\r
 \r
 void MifareUReadCard(uint8_t arg0, uint16_t arg1, uint8_t arg2, uint8_t *datain)\r
 {\r
+       // free eventually allocated BigBuf memory\r
+       BigBuf_free();\r
+       // clear trace\r
+       clear_trace();\r
+\r
        // params\r
        uint8_t blockNo = arg0;\r
        uint16_t blocks = arg1;\r
        bool useKey = (arg2 == 1); //UL_C\r
        bool usePwd = (arg2 == 2); //UL_EV1/NTAG\r
        uint32_t countblocks = 0;\r
        // params\r
        uint8_t blockNo = arg0;\r
        uint16_t blocks = arg1;\r
        bool useKey = (arg2 == 1); //UL_C\r
        bool usePwd = (arg2 == 2); //UL_EV1/NTAG\r
        uint32_t countblocks = 0;\r
-       uint8_t *dataout = BigBuf_get_addr();\r
+       uint8_t *dataout = BigBuf_malloc(CARD_MEMORY_SIZE);\r
+       if (dataout == NULL){\r
+               Dbprintf("out of memory");\r
+               OnError(1);\r
+               return;\r
+       }\r
 \r
        LEDsoff();\r
        LED_A_ON();\r
 \r
        LEDsoff();\r
        LED_A_ON();\r
-       clear_trace();\r
        iso14443a_setup(FPGA_HF_ISO14443A_READER_LISTEN);\r
 \r
        int len = iso14443a_select_card(NULL, NULL, NULL);\r
        iso14443a_setup(FPGA_HF_ISO14443A_READER_LISTEN);\r
 \r
        int len = iso14443a_select_card(NULL, NULL, NULL);\r
@@ -294,7 +303,7 @@ void MifareUReadCard(uint8_t arg0, uint16_t arg1, uint8_t arg2, uint8_t *datain)
        }\r
 \r
        for (int i = 0; i < blocks; i++){\r
        }\r
 \r
        for (int i = 0; i < blocks; i++){\r
-               if ((i*4) + 4 > BigBuf_get_traceLen()) {\r
+               if ((i*4) + 4 > CARD_MEMORY_SIZE) {\r
                        Dbprintf("Data exceeds buffer!!");\r
                        break;\r
                }\r
                        Dbprintf("Data exceeds buffer!!");\r
                        break;\r
                }\r
Impressum, Datenschutz