MT#62181 StatsUDPServer: fix possible overrun

The parsing code expect a null-terminated string. Make sure the string
is.

Use correct ssize_t as return value.

Change-Id: I2590dead0db5ca839ebe5fe7506b4edfe524d164
mr13.5
Richard Fuchs 1 year ago
parent e684718807
commit 4a4b8fec18

@ -196,13 +196,15 @@ void StatsUDPServer::run()
struct sockaddr_in addr;
socklen_t addrlen = sizeof(struct sockaddr_in);
char msg_buf[MSG_BUF_SIZE];
int msg_buf_s;
char msg_buf[MSG_BUF_SIZE + 1];
ssize_t msg_buf_s;
while(true){
while (!stop_requested()) {
msg_buf_s = recvfrom(sd,msg_buf,MSG_BUF_SIZE,0,(sockaddr*)&addr,&addrlen);
if(msg_buf_s == -1){
if (!msg_buf_s)
continue;
if (msg_buf_s < 0){
switch(errno){
case EINTR:
@ -215,6 +217,8 @@ void StatsUDPServer::run()
break;
}
msg_buf[msg_buf_s] = '\0';
//printf("received packet from: %s:%i\n",
// inet_ntoa(addr.sin_addr),ntohs(addr.sin_port));

Loading…
Cancel
Save