From 1e7fbbe807c2562b0c2c090521ed98c24ba080b1 Mon Sep 17 00:00:00 2001 From: Stefan `Sec` Zehl Date: Tue, 9 Aug 2011 19:39:37 +0200 Subject: [PATCH 1/3] Move public mesh to different channel to keep debugging easier. --- firmware/funk/mesh.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/firmware/funk/mesh.h b/firmware/funk/mesh.h index ceceb9d..318dd2a 100644 --- a/firmware/funk/mesh.h +++ b/firmware/funk/mesh.h @@ -8,7 +8,7 @@ #define M_RECVINT 1000 #define M_RECVTIM 100 -#define MESH_CHANNEL 85 +#define MESH_CHANNEL 83 #define MESH_MAC "MESHB" #define MO_TYPE(x) (x[0]) From 6452d305c207368717cfe9b75b196ba2d11b9c98 Mon Sep 17 00:00:00 2001 From: Stefan `Sec` Zehl Date: Wed, 10 Aug 2011 04:25:50 +0200 Subject: [PATCH 2/3] Clamp value types and add debugging-panic on violation --- firmware/funk/mesh.c | 41 +++++++++++++++++++++++++++++++++++++++++ 1 file changed, 41 insertions(+) diff --git a/firmware/funk/mesh.c b/firmware/funk/mesh.c index f64b22b..d79973b 100644 --- a/firmware/funk/mesh.c +++ b/firmware/funk/mesh.c @@ -7,6 +7,7 @@ #include "basic/byteorder.h" #include "basic/random.h" #include "basic/config.h" +#include "lcd/print.h" char meshgen=0; // Generation char meshincctr=0; @@ -28,6 +29,23 @@ void initMesh(void){ meshbuffer[0].flags=MF_USED; }; +int mesh_sanity(uint8_t * pkt){ + if(MO_TYPE(pkt)>='A' && MO_TYPE(pkt)<='Z'){ + if(MO_TIME(pkt)>1313803870) + return 1; + if(MO_TIME(pkt)<1312075898) + return 1; + }else if(MO_TYPE(pkt)>='a' && MO_TYPE(pkt)<='z'){ + if(MO_TIME(pkt)>16777216) + return 1; + if(MO_TIME(pkt)<0) + return 1; + }; + if(MO_TYPE(pkt)>0x7f || MO_TYPE(pkt)<0x20) + return 1; + return 0; +}; + MPKT * meshGetMessage(uint8_t type){ int free=-1; for(int i=0;iSECS_DAY) meshbuffer[i].flags=MF_FREE; }; + if(mesh_sanity(meshbuffer[i].pkt)){ + meshbuffer[i].flags=MF_FREE; +#if 1 + setSystemFont(); + lcdClear(); + lcdPrintln("MESH PANIC!"); + lcdPrint(IntToStr(i,2,0)); + lcdPrintln(":"); + lcdPrint(IntToStrX(meshbuffer[i].pkt[0],2)); + lcdPrint(" "); + lcdPrintln(IntToStrX(meshbuffer[i].pkt[1],2)); + lcdPrintln(IntToStrX(uint8ptouint32(meshbuffer[i].pkt+2),8)); + lcdPrintln(IntToStrX(uint8ptouint32(meshbuffer[i].pkt+6),8)); + lcdPrintln(IntToStrX(uint8ptouint32(meshbuffer[i].pkt+10),8)); + lcdRefresh(); + while ((getInputRaw())==BTN_NONE); +#endif + }; }; }; }; @@ -153,6 +189,11 @@ uint8_t mesh_recvqloop_work(void){ return 0; }; + if(mesh_sanity(buf)){ + meshincctr++; + return 0; + }; + if(MO_GEN(buf)>meshgen){ if(meshgen) meshgen++; From 944f3ed0f40afd94136bc77fa3dadd703bf34fc9 Mon Sep 17 00:00:00 2001 From: Kilian Neuner Date: Wed, 10 Aug 2011 15:22:18 +0200 Subject: [PATCH 3/3] add template.png for lcd graphics --- tools/image/template.png | Bin 0 -> 150 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 tools/image/template.png diff --git a/tools/image/template.png b/tools/image/template.png new file mode 100644 index 0000000000000000000000000000000000000000..e9c1ea55a3c2bbdb0aa4629b38204940e80df69f GIT binary patch literal 150 zcmeAS@N?(olHy`uVBq!ia0vp^2|(<@$P6TnS0*U{DaPU;cPEB*=VV?2IcxzwA+A9B z|Ns9>Z_d99WN{XFL>2?JUk71ECym(^Ktc8rPhVH|+Z