file.c: lift the 4096 bytes line length limit.
authorYousong Zhou <yszhou4tech@gmail.com>
Mon, 25 May 2015 12:32:42 +0000 (20:32 +0800)
committerFelix Fietkau <nbd@openwrt.org>
Mon, 25 May 2015 21:03:21 +0000 (23:03 +0200)
Signed-off-by: Yousong Zhou <yszhou4tech@gmail.com>
file.c

diff --git a/file.c b/file.c
index 81047a48352ddbb836d55c7a01611fd2cd5adce5..cf0dfafc1cccb1e379bcb2653e13f4875b149692 100644 (file)
--- a/file.c
+++ b/file.c
@@ -33,7 +33,6 @@
 #include "uci_internal.h"
 
 #define LINEBUF        32
-#define LINEBUF_MAX    4096
 
 /*
  * Fetch a new line from the input stream and resize buffer if necessary
@@ -69,11 +68,10 @@ __private void uci_getln(struct uci_context *ctx, int offset)
                        return;
                }
 
-               if (pctx->bufsz > LINEBUF_MAX/2)
-                       uci_parse_error(ctx, "line too long");
-
                pctx->bufsz *= 2;
                pctx->buf = uci_realloc(ctx, pctx->buf, pctx->bufsz);
+               if (!pctx->buf)
+                       UCI_THROW(ctx, UCI_ERR_MEM);
        } while (1);
 }