Index: simgear/simgear/io/sg_socket_udp.cxx =================================================================== --- simgear.orig/simgear/io/sg_socket_udp.cxx 2013-09-06 14:40:55.564046737 -0400 +++ simgear/simgear/io/sg_socket_udp.cxx 2013-09-06 14:40:55.560046633 -0400 @@ -104,8 +104,13 @@ } int result; + if ( length < 0 ) { + length = 0; + } + + int size = length < SG_IO_MAX_MSG_SIZE ? length : SG_IO_MAX_MSG_SIZE; - if ( (result = sock.recv(buf, SG_IO_MAX_MSG_SIZE, 0)) >= 0 ) { + if ( (result = sock.recv(buf, size, 0)) >= 0 ) { buf[result] = '\0'; // printf("msg received = %s\n", buf); }