[Tinyos-2-commits] CVS: tinyos-2.x/tos/lib/printf PrintfP.nc, 1.6,
1.7
Kevin Klues
klueska at users.sourceforge.net
Mon Jul 16 12:42:36 PDT 2007
Update of /cvsroot/tinyos/tinyos-2.x/tos/lib/printf
In directory sc8-pr-cvs10.sourceforge.net:/tmp/cvs-serv30156
Modified Files:
PrintfP.nc
Log Message:
Error in length provided to memset, resulting in a buffer overflow. Error now fixed.
Index: PrintfP.nc
===================================================================
RCS file: /cvsroot/tinyos/tinyos-2.x/tos/lib/printf/PrintfP.nc,v
retrieving revision 1.6
retrieving revision 1.7
diff -C2 -d -r1.6 -r1.7
*** PrintfP.nc 20 Apr 2007 01:14:13 -0000 1.6
--- PrintfP.nc 16 Jul 2007 19:42:34 -0000 1.7
***************
*** 85,92 ****
void sendNext() {
! printf_msg_t* m = (printf_msg_t*)call Packet.getPayload(&printfMsg, NULL);
! length_to_send = (bytes_left_to_flush < sizeof(printf_msg_t)) ? bytes_left_to_flush : sizeof(printf_msg_t);
! memset(m->buffer, 0, sizeof(printfMsg));
! memcpy(m->buffer, (uint8_t*)next_byte, length_to_send);
if(call AMSend.send(AM_BROADCAST_ADDR, &printfMsg, sizeof(printf_msg_t)) != SUCCESS)
post retrySend();
--- 85,92 ----
void sendNext() {
! printf_msg_t* m = (printf_msg_t*)call Packet.getPayload(&printfMsg, NULL);
! length_to_send = (bytes_left_to_flush < sizeof(printf_msg_t)) ? bytes_left_to_flush : sizeof(printf_msg_t);
! memset(m->buffer, 0, sizeof(m->buffer));
! memcpy(m->buffer, (uint8_t*)next_byte, length_to_send);
if(call AMSend.send(AM_BROADCAST_ADDR, &printfMsg, sizeof(printf_msg_t)) != SUCCESS)
post retrySend();
***************
*** 140,144 ****
if(state == S_STARTED && (next_byte > buffer)) {
state = S_FLUSHING;
! bytes_left_to_flush = next_byte - buffer;
next_byte = buffer;
}
--- 140,144 ----
if(state == S_STARTED && (next_byte > buffer)) {
state = S_FLUSHING;
! bytes_left_to_flush = next_byte - buffer;
next_byte = buffer;
}
More information about the Tinyos-2-commits
mailing list