Skip to contentSkip to conversation

Remove size limit for files inlined in config

PATCH In review Steffan Karger 2 participants 2 messages Apr 27, 2015 – May 2, 2015

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 Remove size limit for files inlined in config

As described in trac #484, the current inline file size limit of 10000 bytes is becoming an issue for some users. Since RSA keys and signature sizes are increasing, we need to adjust our limits. As #484 reports, 10000 can be too small for PKCS#12 files with 4K RSA keys. Instead of postponing this issue by increasing the static limit, dynamically increase the buffer size while reading. This keeps the memory usage limited but does allow for larger inlined files.

---
 src/openvpn/options.c | 11 ++++++++++-
 1 file changed, 10 insertions(+), 1 deletion(-)
src/openvpn/options.c +10 -1
index e8cf06a..3195c5a 100644
@@ -3698,12 +3698,21 @@ static char *
 read_inline_file (struct in_src *is, const char *close_tag, struct gc_arena *gc)
 {
   char line[OPTION_LINE_SIZE];
-  struct buffer buf = alloc_buf (10000);
+  struct buffer buf = alloc_buf (8*OPTION_LINE_SIZE);
   char *ret;
   while (in_src_get (is, line, sizeof (line)))
     {
       if (!strncmp (line, close_tag, strlen (close_tag)))
 	break;
+      if (!buf_safe (&buf, strlen(line)))
+	{
+	  /* Increase buffer size */
+	  struct buffer buf2 = alloc_buf (buf.capacity * 2);
+	  ASSERT (buf_copy (&buf2, &buf));
+	  buf_clear (&buf);
+	  free_buf (&buf);
+	  buf = buf2;
+	}
       buf_printf (&buf, "%s", line);
     }
   ret = string_alloc (BSTR (&buf), gc);
Signature · 1 line
2.1.0
#1 lore raw

ACK.

Your patch has been applied to the master and release/2.3 branches.

commit e473b7c4ce41a450645e0f89579bc25b4a7f7d49 (master) commit 95f47ab88e1f240984ba3c79f2243ed304b46a94 (release/2.3)

Author: Steffan Karger
Date:   Mon Apr 27 10:12:22 2015 +0200
     Remove size limit for files inlined in config

     Signed-off-by: Steffan Karger <[email protected]...>
     Acked-by: Gert Doering <[email protected]...>
     Message-Id: <[email protected]...>
     URL: http://article.gmane.org/gmane.network.openvpn.devel/9607
     Signed-off-by: Gert Doering <[email protected]...>

--
kind regards,

Gert Doering