diff --git a/src/hardware/serialport/libserial.cpp b/src/hardware/serialport/libserial.cpp index aa5e9168..761049d4 100644 --- a/src/hardware/serialport/libserial.cpp +++ b/src/hardware/serialport/libserial.cpp @@ -151,10 +151,13 @@ void SERIAL_getErrorString(char* buffer, int length) { sysmsg_offset = strlen(err2text); memcpy(buffer,err2text,sysmsg_offset); } - - if((length - sysmsg_offset - strlen((const char*)sysmessagebuffer)) >= 0) + + // Go for length > so there will be bytes left afterwards. + // (which are 0 due to memset, thus the buffer is 0 terminated + if ( length > (sysmsg_offset + strlen((const char*)sysmessagebuffer)) ) { memcpy(buffer + sysmsg_offset, sysmessagebuffer, - strlen((const char*)sysmessagebuffer)); + strlen((const char*)sysmessagebuffer)); + } LocalFree(sysmessagebuffer); } diff --git a/src/hardware/serialport/softmodem.cpp b/src/hardware/serialport/softmodem.cpp index 0cd87105..58531d59 100644 --- a/src/hardware/serialport/softmodem.cpp +++ b/src/hardware/serialport/softmodem.cpp @@ -270,7 +270,7 @@ void CSerialModem::EnterIdleState(void){ } // get rid of everything if(serversocket) { - while(waitingclientsocket=serversocket->Accept()) + while( (waitingclientsocket=serversocket->Accept()) ) delete waitingclientsocket; } else if (listenport) {