]> git.ipfire.org Git - thirdparty/openvpn.git/commitdiff
Fix commit e473b7c if an inline file happens to have a line break exactly at buffer...
authorArne Schwabe <arne@rfc2549.org>
Mon, 27 Jul 2015 15:33:11 +0000 (17:33 +0200)
committerGert Doering <gert@greenie.muc.de>
Mon, 27 Jul 2015 18:21:25 +0000 (20:21 +0200)
The check does only for strlen(line) space and buf_printf will only use at
most space -1 and not print the final character ('\n') in this corner.
Since a missing \n only breaks certificates at the start and end marker,
missing line breaks otherwise do not trigger this error.

Acked-by: Steffan Karger <steffan.karger@fox-it.com>
Message-Id: <1438011191-19389-1-git-send-email-arne@rfc2549.org>
URL: http://article.gmane.org/gmane.network.openvpn.devel/9956

Signed-off-by: Gert Doering <gert@greenie.muc.de>
src/openvpn/buffer.h
src/openvpn/options.c

index 5695f64f380db7618c73a2e842ebaac18484b10a..0dc511b0ff809b474b381a97482f9795b627d656 100644 (file)
@@ -329,7 +329,10 @@ has_digit (const unsigned char* src)
 }
 
 /*
- * printf append to a buffer with overflow check
+ * printf append to a buffer with overflow check,
+ * due to usage of vsnprintf, it will leave space for
+ * a final null character and thus use only
+ * capacity - 1
  */
 bool buf_printf (struct buffer *buf, const char *format, ...)
 #ifdef __GNUC__
index 93baa2b0d8b1d75db1e1574bf146e92315cdef25..9eb8e7648f9c30f85f5f6a0223733e7a99f0c751 100644 (file)
@@ -3712,7 +3712,7 @@ read_inline_file (struct in_src *is, const char *close_tag, struct gc_arena *gc)
          endtagfound = true;
          break;
        }
-      if (!buf_safe (&buf, strlen(line)))
+      if (!buf_safe (&buf, strlen(line)+1))
        {
          /* Increase buffer size */
          struct buffer buf2 = alloc_buf (buf.capacity * 2);