Add checks in em4x50read to avoid segfaults in case loops go over the GraphTraceLen.

This commit is contained in:
edouard@lafargue.name 2009-07-30 15:24:03 +00:00
parent 890bf4be90
commit 3628c31882

View file

@ -301,17 +301,19 @@ static void CmdEM4x50read(char *str)
while(i < GraphTraceLen) while(i < GraphTraceLen)
{ {
// measure from low to low // measure from low to low
while(GraphBuffer[i] > low) while((GraphBuffer[i] > low) && (i<GraphTraceLen))
++i; ++i;
start= i; start= i;
while(GraphBuffer[i] < high) while((GraphBuffer[i] < high) && (i<GraphTraceLen))
++i; ++i;
while(GraphBuffer[i] > low) while((GraphBuffer[i] > low) && (i<GraphTraceLen))
++i; ++i;
if (j>(MAX_GRAPH_TRACE_LEN/64)) {
break;
}
tmpbuff[j++]= i - start; tmpbuff[j++]= i - start;
} }
/* look for data start - should be 2 pairs of LW (pulses of 192,128) */ /* look for data start - should be 2 pairs of LW (pulses of 192,128) */
start= -1; start= -1;
skip= 0; skip= 0;
@ -1573,7 +1575,7 @@ static void CmdTIWrite(char *str)
if (res == 2) c.ext3=0; if (res == 2) c.ext3=0;
if (res<2) if (res<2)
PrintToScrollback("Please specify 2 or three hex strings, eg 0x1234 0x5678"); PrintToScrollback("Please specify 2 or three hex strings, eg 0x1234 0x5678");
else else
SendCommand(&c, FALSE); SendCommand(&c, FALSE);
} }