]> cvs.zerfleddert.de Git - proxmark3-svn/commitdiff
@Marshmellow42 's fixes for bigbuf.
authoriceman1001 <iceman@iuse.se>
Tue, 19 May 2015 16:46:38 +0000 (18:46 +0200)
committericeman1001 <iceman@iuse.se>
Tue, 19 May 2015 16:46:38 +0000 (18:46 +0200)
armsrc/mifarecmd.c

index 45d034380f78defa1331c2d6e9d3564ed1ef74bd..de2b4db29ddb1e46ef0e418c14ecad3b6527d36e 100644 (file)
@@ -249,17 +249,26 @@ void MifareReadSector(uint8_t arg0, uint8_t arg1, uint8_t arg2, uint8_t *datain)
 // datain = KEY bytes\r
 void MifareUReadCard(uint8_t arg0, uint16_t arg1, uint8_t arg2, uint8_t *datain)\r
 {\r
 // datain = KEY bytes\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
@@ -293,7 +302,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