[monitoring-plugins] check_curl: fix checking large bodys (#1823)

GitHub git at monitoring-plugins.org
Thu Dec 22 13:00:14 CET 2022


    Module: monitoring-plugins
    Branch: master
    Commit: 765b29f09bd3bc2a938260caa5f263343aafadb7
    Author: Sven Nierlein <sven at nierlein.de>
 Committer: GitHub <noreply at github.com>
      Date: Thu Dec 22 12:51:18 2022 +0100
       URL: https://www.monitoring-plugins.org/repositories/monitoring-plugins/commit/?id=765b29f

check_curl: fix checking large bodys (#1823)

check_curl fails on large pages:

  HTTP CRITICAL - Invalid HTTP response received from host on port 5080: cURL returned 23 - Failure writing output to destination

for example trying to run check_curl on the test from #1822

I guess the idea is to double the buffer size each time it is to small. But the code
exponentially grows the buffer size which works well 2-3 times, but then fails.

---

 plugins/check_curl.c | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)

diff --git a/plugins/check_curl.c b/plugins/check_curl.c
index 2ad373c..55de22f 100644
--- a/plugins/check_curl.c
+++ b/plugins/check_curl.c
@@ -2024,9 +2024,12 @@ curlhelp_buffer_write_callback (void *buffer, size_t size, size_t nmemb, void *s
   curlhelp_write_curlbuf *buf = (curlhelp_write_curlbuf *)stream;
 
   while (buf->bufsize < buf->buflen + size * nmemb + 1) {
-    buf->bufsize *= buf->bufsize * 2;
+    buf->bufsize = buf->bufsize * 2;
     buf->buf = (char *)realloc (buf->buf, buf->bufsize);
-    if (buf->buf == NULL) return -1;
+    if (buf->buf == NULL) {
+      fprintf(stderr, "malloc failed (%d) %s\n", errno, strerror(errno));
+      return -1;
+    }
   }
 
   memcpy (buf->buf + buf->buflen, buffer, size * nmemb);



More information about the Commits mailing list