cmdline: check size of result buffer to avoid overflow
[libcmdline.git] / src / lib / cmdline_rdline.c
index 2ad9a76..4352b94 100644 (file)
@@ -68,6 +68,7 @@
 
 #include "cmdline_cirbuf.h"
 #include "cmdline_rdline.h"
+#include "cmdline_parse.h"
 
 static void rdline_puts(struct rdline *rdl, const char *buf);
 static void rdline_miniprintf(struct rdline *rdl,
@@ -212,10 +213,10 @@ rdline_char_in(struct rdline *rdl, char c)
                return RDLINE_RES_NOT_RUNNING;
 
        cmd = vt100_parser(&rdl->vt100, c);
-       if (cmd == -2)
+       if (cmd == VT100_NOT_COMPLETE)
                return RDLINE_RES_SUCCESS;
 
-       if (cmd >= 0) {
+       if (cmd != VT100_STD_CHAR) {
                switch (cmd) {
                case CMDLINE_KEY_CTRL_B:
                case CMDLINE_KEY_LEFT_ARR:
@@ -370,7 +371,7 @@ rdline_char_in(struct rdline *rdl, char c)
                        cirbuf_align_left(&rdl->left);
                        rdl->left_buf[CIRBUF_GET_LEN(&rdl->left)] = '\0';
                        if (rdl->complete) {
-                               char tmp_buf[BUFSIZ];
+                               char tmp_buf[CMDLINE_MAX_TOKEN_SIZE];
                                int complete_state;
                                int ret;
                                unsigned int tmp_size;