[Pkg-nagios-devel] Bug#396337: [PATCH] Off-by-one in NAGIOS check_tcp.c

Martin Blapp mb at imp.ch
Tue Oct 31 12:10:19 CET 2006


Sorry, got it wrong the first time ... The problem was that the
read buffer was not cleared the second time. If we don't do this
we get a completly mess. And second, if read returns one byte,
we need to test this case for beeing '\n' to break out of the loop.

--- check_tcp.c      2004-12-30 01:41:40.000000000 +0100
+++ check_tcp.c   2006-10-31 12:07:53.000000000 +0100
@@ -312,10 +312,13 @@
                 while ((i = my_recv ()) > 0) {
                         buffer[i] = '\0';
                         asprintf (&status, "%s%s", status, buffer);
+                       if (i == 1 && buffer[0] == '\n')
+                               break;
                         if (buffer[i-2] == '\r' && buffer[i-1] == '\n')
                                 break;
                         if (maxbytes>0 && strlen(status) >= (unsigned)maxbytes)
                                 break;
+                       memset (buffer, '\0', MAXBUF);
                 }

                 /* return a CRITICAL status if we couldn't read any data */




More information about the Pkg-nagios-devel mailing list