fix buffer length bugs

adjust lf search a little as to when the chiptype check happens
This commit is contained in:
marshmellow42 2017-04-07 18:00:55 -04:00
commit f1004b345e
2 changed files with 10 additions and 8 deletions

View file

@ -40,7 +40,7 @@ void setDemodBuf(uint8_t *buff, size_t size, size_t startIdx)
if (buff == NULL) if (buff == NULL)
return; return;
if ( size >= MAX_DEMOD_BUF_LEN) if ( size + startIdx >= MAX_DEMOD_BUF_LEN)
size = MAX_DEMOD_BUF_LEN; size = MAX_DEMOD_BUF_LEN;
size_t i = 0; 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 // option '1' to save DemodBuffer any other to restore
void save_restoreDB(uint8_t saveOpt) 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 size_t SavedDBlen;
static bool DB_Saved = false; static bool DB_Saved = false;
if (saveOpt==1) { //save if (saveOpt==1) { //save
memcpy(SavedDB, DemodBuffer, sizeof(DemodBuffer)); memcpy(SavedDB, DemodBuffer, sizeof(DemodBuffer));
SavedDBlen = DemodBufferLen; SavedDBlen = DemodBufferLen;
DB_Saved=true; DB_Saved=true;
@ -322,7 +323,7 @@ int Cmdmandecoderaw(const char *Cmd)
return 0; return 0;
} }
if (DemodBufferLen==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; int high=0,low=0;
for (;i<DemodBufferLen;++i){ for (;i<DemodBufferLen;++i){
if (DemodBuffer[i]>high) high=DemodBuffer[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"); PrintAndLog("DemodBuffer Empty - run 'data rawdemod ar' first");
return 0; return 0;
} }
uint8_t BitStream[MAX_GRAPH_TRACE_LEN]={0}; uint8_t BitStream[MAX_DEMOD_BUF_LEN]={0};
size = sizeof(BitStream); size = sizeof(BitStream);
if ( !getDemodBuf(BitStream, &size) ) return 0; if ( !getDemodBuf(BitStream, &size) ) return 0;
errCnt=BiphaseRawDecode(BitStream, &size, offset, invert); 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; int offset=0, clk=0, invert=0, maxErr=0;
sscanf(Cmd, "%i %i %i %i", &offset, &clk, &invert, &maxErr); 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); 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 //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); int errCnt = askdemod(BitStream, &size, &clk, &invert, maxErr, 0, 0);

View file

@ -1066,7 +1066,7 @@ int CmdLFfind(const char *Cmd)
ans=FSKrawDemod("",true); ans=FSKrawDemod("",true);
if (ans>0) { if (ans>0) {
PrintAndLog("\nUnknown FSK Modulated Tag Found!"); 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) { if (ans>0) {
PrintAndLog("\nUnknown ASK Modulated and Manchester encoded Tag Found!"); 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'"); PrintAndLog("\nif it does not look right it could instead be ASK/Biphase - try 'data rawdemod ab'");
return 1; return CheckChipType(cmdp);;
} }
ans=CmdPSK1rawDemod(""); ans=CmdPSK1rawDemod("");
if (ans>0) { if (ans>0) {
PrintAndLog("Possible unknown PSK1 Modulated Tag Found above!\n\nCould also be PSK2 - try 'data rawdemod p2'"); 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 PSK3 - [currently not supported]");
PrintAndLog("\nCould also be NRZ - try 'data nrzrawdemod'"); PrintAndLog("\nCould also be NRZ - try 'data nrzrawdemod'");
return 1; return CheckChipType(cmdp);;
} }
ans = CheckChipType(cmdp);
PrintAndLog("\nNo Data Found!\n"); PrintAndLog("\nNo Data Found!\n");
} }
return 0; return 0;