]> granicus.if.org Git - neomutt/commitdiff
Add null-terminator to BIO_get_mem_data() output.
authorKevin McCarthy <kevin@8t8.us>
Mon, 11 Apr 2016 19:45:25 +0000 (12:45 -0700)
committerKevin McCarthy <kevin@8t8.us>
Mon, 11 Apr 2016 19:45:25 +0000 (12:45 -0700)
It turns out the output isn't necessarily null-terminated.

mutt_ssl.c

index 30da838e9a00e05d3722d4c8016628970d077089..78d848982b9c4b448c1bcb5e1a09c191cf43cdf7 100644 (file)
@@ -549,12 +549,20 @@ static void ssl_dprint_err_stack (void)
 #ifdef DEBUG
   BIO *bio;
   char *buf = NULL;
+  long buflen;
+  char *output;
 
   if (! (bio = BIO_new (BIO_s_mem ())))
     return;
   ERR_print_errors (bio);
-  if (BIO_get_mem_data (bio, &buf))
-    dprint (1, (debugfile, "SSL error stack: %s\n", buf));
+  if ((buflen = BIO_get_mem_data (bio, &buf)) > 0)
+  {
+    output = safe_malloc (buflen + 1);
+    memcpy (output, buf, buflen);
+    output[buflen] = '\0';
+    dprint (1, (debugfile, "SSL error stack: %s\n", output));
+    FREE (&output);
+  }
   BIO_free (bio);
 #endif
 }