]> cvs.zerfleddert.de Git - proxmark3-svn/commitdiff
move the clear buffer outside of potentially time..
authormarshmellow42 <marshmellowrf@gmail.com>
Sat, 20 Feb 2016 15:07:44 +0000 (10:07 -0500)
committermarshmellow42 <marshmellowrf@gmail.com>
Sat, 20 Feb 2016 15:07:44 +0000 (10:07 -0500)
... sensitive routines
see http://www.proxmark.org/forum/viewtopic.php?id=2820

armsrc/BigBuf.c
armsrc/BigBuf.h
armsrc/lfops.c
armsrc/lfsampling.c
armsrc/pcf7931.c

index da3b0ce27bcfa99b0f238fc8c330254f8e189c7b..851cf390e795faf4c6d3b3f58411e6d9966a2d5b 100644 (file)
@@ -61,6 +61,10 @@ void BigBuf_Clear_ext(bool verbose)
                Dbprintf("Buffer cleared (%i bytes)",BIGBUF_SIZE);
 }
 
+void BigBuf_Clear_keep_EM(void)
+{
+       memset(BigBuf,0,BigBuf_hi);
+}
 
 // allocate a chunk of memory from BigBuf. We allocate high memory first. The unallocated memory
 // at the beginning of BigBuf is always for traces/samples
index 13432e7eabf2953e2ec0bfce9af9645897866b2a..11e02c7ade8bf840ce3052c6e55512f7d89f311c 100644 (file)
@@ -26,6 +26,7 @@ extern uint8_t *BigBuf_get_EM_addr(void);
 extern uint16_t BigBuf_max_traceLen(void);
 extern void BigBuf_Clear(void);
 extern void BigBuf_Clear_ext(bool verbose);
+extern void BigBuf_Clear_keep_EM(void);
 extern uint8_t *BigBuf_malloc(uint16_t);
 extern void BigBuf_free(void);
 extern void BigBuf_free_keep_EM(void);
index 47fec7c2a95d3b6737361b401e56fb0e2297847e..bb298f79a39fdb71f4dbc365b7f7ed120c734efc 100644 (file)
@@ -37,6 +37,8 @@ void ModThenAcquireRawAdcSamples125k(uint32_t delay_off, uint32_t period_0, uint
 
        sample_config sc = { 0,0,1, divisor_used, 0};
        setSamplingConfig(&sc);
+       //clear read buffer
+       BigBuf_Clear_keep_EM(void);
 
        /* Make sure the tag is reset */
        FpgaDownloadAndGo(FPGA_BITSTREAM_LF);
@@ -752,6 +754,9 @@ void CmdHIDdemodFSK(int findone, int *high, int *low, int ledcontrol)
        // Configure to go in 125Khz listen mode
        LFSetupFPGAForADC(95, true);
 
+       //clear read buffer
+       BigBuf_Clear_keep_EM(void);
+
        while(!BUTTON_PRESS() && !usb_poll_validate_length()) {
 
                WDT_HIT();
@@ -837,6 +842,8 @@ void CmdAWIDdemodFSK(int findone, int *high, int *low, int ledcontrol)
        uint8_t *dest = BigBuf_get_addr();
        size_t size; 
        int idx=0;
+       //clear read buffer
+       BigBuf_Clear_keep_EM(void);
        // Configure to go in 125Khz listen mode
        LFSetupFPGAForADC(95, true);
 
@@ -927,6 +934,8 @@ void CmdEM410xdemod(int findone, int *high, int *low, int ledcontrol)
        int clk=0, invert=0, errCnt=0, maxErr=20;
        uint32_t hi=0;
        uint64_t lo=0;
+       //clear read buffer
+       BigBuf_Clear_keep_EM(void);
        // Configure to go in 125Khz listen mode
        LFSetupFPGAForADC(95, true);
 
@@ -986,6 +995,8 @@ void CmdIOdemodFSK(int findone, int *high, int *low, int ledcontrol)
        uint8_t version=0;
        uint8_t facilitycode=0;
        uint16_t number=0;
+       //clear read buffer
+       BigBuf_Clear_keep_EM(void);
        // Configure to go in 125Khz listen mode
        LFSetupFPGAForADC(95, true);
 
index ab7c79dd3e31ab2b4867c2f1bb080eee0290eb4c..88df543f74022e4657b871e061c662c61c8a610d 100644 (file)
@@ -124,7 +124,7 @@ uint32_t DoAcquisition(uint8_t decimation, uint32_t bits_per_sample, bool averag
        uint8_t *dest = BigBuf_get_addr();
     int bufsize = BigBuf_max_traceLen();
 
-       memset(dest, 0, bufsize);
+       //memset(dest, 0, bufsize); //creates issues with cmdread (marshmellow)
 
        if(bits_per_sample < 1) bits_per_sample = 1;
        if(bits_per_sample > 8) bits_per_sample = 8;
index 3093a5e50828a482d9efb1a60c3d85832d72436e..73f187680f1d5afd9ea7a9780836bed55407da0b 100644 (file)
@@ -29,6 +29,8 @@ int DemodPCF7931(uint8_t **outBlocks) {
        int num_blocks = 0;
        int lmin=128, lmax=128;
        uint8_t dir;
+       //clear read buffer
+       BigBuf_Clear_keep_EM(void);
 
        LFSetupFPGAForADC(95, true);
        DoAcquisition_default(0, true);
Impressum, Datenschutz