aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/eval.cc2
-rw-r--r--src/parse.cc11
2 files changed, 12 insertions, 1 deletions
diff --git a/src/eval.cc b/src/eval.cc
index 82bd09c..becad3b 100644
--- a/src/eval.cc
+++ b/src/eval.cc
@@ -31,6 +31,8 @@ namespace ov4
int eval_exe(string s, bool is_aync)
{
+ loggerln("eval_exe: receive {}", s);
+
char cmdline[MAXLINE];
strcpy(cmdline, s.c_str());
char arg[MAXARGS][MAXLINE];
diff --git a/src/parse.cc b/src/parse.cc
index 8480811..f61913a 100644
--- a/src/parse.cc
+++ b/src/parse.cc
@@ -19,7 +19,16 @@ int parseline(const char *cmdline, char **argv)
int bg; /* background job? */
strcpy(buf, cmdline);
- buf[strlen(buf)-1] = ' '; /* replace trailing '\n' with space */
+ if (buf[strlen(buf)-1] == '\n')
+ buf[strlen(buf)-1] = ' '; /* replace trailing '\n' with space */
+ else
+ {
+ // if buffer is not large enough
+ // might be UB
+ // TODO: fix UB
+ buf[strlen(buf)] = ' ';
+ buf[strlen(buf)+1] = '\0';
+ }
while (*buf && (*buf == ' ')) /* ignore leading spaces */
buf++;