]> git.zerfleddert.de Git - proxmark3-svn/commitdiff
fix buffer length bugs
authormarshmellow42 <marshmellowrf@gmail.com>
Fri, 7 Apr 2017 22:00:55 +0000 (18:00 -0400)
committermarshmellow42 <marshmellowrf@gmail.com>
Fri, 7 Apr 2017 22:00:55 +0000 (18:00 -0400)
adjust lf search a little as to when the chiptype check happens

client/cmddata.c
client/cmdlf.c

index f15d7ad06265de0304863089f811b6dbaf45e862..8f2aea5aa75c068fe9d4675f56434333f71e2f24 100644 (file)
@@ -40,7 +40,7 @@ void setDemodBuf(uint8_t *buff, size_t size, size_t startIdx)
        if (buff == NULL) 
                return;
 
        if (buff == NULL) 
                return;
 
-       if ( size >= MAX_DEMOD_BUF_LEN)
+       if ( size + startIdx >= MAX_DEMOD_BUF_LEN)
                size = MAX_DEMOD_BUF_LEN;
 
        size_t i = 0;
                size = MAX_DEMOD_BUF_LEN;
 
        size_t i = 0;
@@ -65,11 +65,12 @@ bool getDemodBuf(uint8_t *buff, size_t *size) {
 // option '1' to save DemodBuffer any other to restore
 void save_restoreDB(uint8_t saveOpt)
 {
 // option '1' to save DemodBuffer any other to restore
 void save_restoreDB(uint8_t saveOpt)
 {
-       static uint8_t SavedDB[MAX_GRAPH_TRACE_LEN];
+       static uint8_t SavedDB[MAX_DEMOD_BUF_LEN];
        static size_t SavedDBlen;
        static bool DB_Saved = false;
 
        if (saveOpt==1) { //save
        static size_t SavedDBlen;
        static bool DB_Saved = false;
 
        if (saveOpt==1) { //save
+
                memcpy(SavedDB, DemodBuffer, sizeof(DemodBuffer));
                SavedDBlen = DemodBufferLen;
                DB_Saved=true;
                memcpy(SavedDB, DemodBuffer, sizeof(DemodBuffer));
                SavedDBlen = DemodBufferLen;
                DB_Saved=true;
@@ -322,7 +323,7 @@ int Cmdmandecoderaw(const char *Cmd)
                return 0;
        }
        if (DemodBufferLen==0) return 0;
                return 0;
        }
        if (DemodBufferLen==0) return 0;
-       uint8_t BitStream[MAX_GRAPH_TRACE_LEN]={0};
+       uint8_t BitStream[MAX_DEMOD_BUF_LEN]={0};
        int high=0,low=0;
        for (;i<DemodBufferLen;++i){
                if (DemodBuffer[i]>high) high=DemodBuffer[i];
        int high=0,low=0;
        for (;i<DemodBufferLen;++i){
                if (DemodBuffer[i]>high) high=DemodBuffer[i];
@@ -388,7 +389,7 @@ int CmdBiphaseDecodeRaw(const char *Cmd)
                PrintAndLog("DemodBuffer Empty - run 'data rawdemod ar' first");
                return 0;
        }
                PrintAndLog("DemodBuffer Empty - run 'data rawdemod ar' first");
                return 0;
        }
-       uint8_t BitStream[MAX_GRAPH_TRACE_LEN]={0};
+       uint8_t BitStream[MAX_DEMOD_BUF_LEN]={0};
        size = sizeof(BitStream);
        if ( !getDemodBuf(BitStream, &size) ) return 0;
        errCnt=BiphaseRawDecode(BitStream, &size, offset, invert);
        size = sizeof(BitStream);
        if ( !getDemodBuf(BitStream, &size) ) return 0;
        errCnt=BiphaseRawDecode(BitStream, &size, offset, invert);
@@ -419,7 +420,7 @@ int ASKbiphaseDemod(const char *Cmd, bool verbose)
        int offset=0, clk=0, invert=0, maxErr=0;
        sscanf(Cmd, "%i %i %i %i", &offset, &clk, &invert, &maxErr);
 
        int offset=0, clk=0, invert=0, maxErr=0;
        sscanf(Cmd, "%i %i %i %i", &offset, &clk, &invert, &maxErr);
 
-       uint8_t BitStream[MAX_DEMOD_BUF_LEN];     
+       uint8_t BitStream[MAX_GRAPH_TRACE_LEN];   
        size_t size = getFromGraphBuf(BitStream);         
        //invert here inverts the ask raw demoded bits which has no effect on the demod, but we need the pointer
        int errCnt = askdemod(BitStream, &size, &clk, &invert, maxErr, 0, 0);  
        size_t size = getFromGraphBuf(BitStream);         
        //invert here inverts the ask raw demoded bits which has no effect on the demod, but we need the pointer
        int errCnt = askdemod(BitStream, &size, &clk, &invert, maxErr, 0, 0);  
index 5b91d2e88e07ccaafe7f52a7ddb7941455d563c0..7670136fc32019e101eab341e2cc361affbe5a31 100644 (file)
@@ -1066,7 +1066,7 @@ int CmdLFfind(const char *Cmd)
                        ans=FSKrawDemod("",true);
                        if (ans>0) {
                                PrintAndLog("\nUnknown FSK Modulated Tag Found!");
                        ans=FSKrawDemod("",true);
                        if (ans>0) {
                                PrintAndLog("\nUnknown FSK Modulated Tag Found!");
-                               return 1;
+                               return CheckChipType(cmdp);;
                        }
                }
                bool st = true;
                        }
                }
                bool st = true;
@@ -1074,15 +1074,16 @@ int CmdLFfind(const char *Cmd)
                if (ans>0) {
                        PrintAndLog("\nUnknown ASK Modulated and Manchester encoded Tag Found!");
                        PrintAndLog("\nif it does not look right it could instead be ASK/Biphase - try 'data rawdemod ab'");
                if (ans>0) {
                        PrintAndLog("\nUnknown ASK Modulated and Manchester encoded Tag Found!");
                        PrintAndLog("\nif it does not look right it could instead be ASK/Biphase - try 'data rawdemod ab'");
-                       return 1;
+                       return CheckChipType(cmdp);;
                }
                ans=CmdPSK1rawDemod("");
                if (ans>0) {
                        PrintAndLog("Possible unknown PSK1 Modulated Tag Found above!\n\nCould also be PSK2 - try 'data rawdemod p2'");
                        PrintAndLog("\nCould also be PSK3 - [currently not supported]");
                        PrintAndLog("\nCould also be NRZ - try 'data nrzrawdemod'");
                }
                ans=CmdPSK1rawDemod("");
                if (ans>0) {
                        PrintAndLog("Possible unknown PSK1 Modulated Tag Found above!\n\nCould also be PSK2 - try 'data rawdemod p2'");
                        PrintAndLog("\nCould also be PSK3 - [currently not supported]");
                        PrintAndLog("\nCould also be NRZ - try 'data nrzrawdemod'");
-                       return 1;
+                       return CheckChipType(cmdp);;
                }
                }
+               ans = CheckChipType(cmdp);
                PrintAndLog("\nNo Data Found!\n");
        }
        return 0;
                PrintAndLog("\nNo Data Found!\n");
        }
        return 0;
Impressum, Datenschutz