diff options
-rw-r--r-- | aoview/aoview.h | 2 | ||||
-rw-r--r-- | aoview/aoview_monitor.c | 7 |
2 files changed, 7 insertions, 2 deletions
diff --git a/aoview/aoview.h b/aoview/aoview.h index 7807b2fa..5c118a11 100644 --- a/aoview/aoview.h +++ b/aoview/aoview.h @@ -124,7 +124,7 @@ gboolean aoview_monitor_connect(char *tty); gboolean -aoview_monitor_parse(char *line); +aoview_monitor_parse(const char *line); void aoview_monitor_reset(void); diff --git a/aoview/aoview_monitor.c b/aoview/aoview_monitor.c index f7f646ae..5810be5b 100644 --- a/aoview/aoview_monitor.c +++ b/aoview/aoview_monitor.c @@ -68,12 +68,17 @@ aoview_parse_pos(double *target, char *source) static struct aostate state; gboolean -aoview_monitor_parse(char *line) +aoview_monitor_parse(const char *input_line) { char *saveptr; char *words[64]; int nword; + char line_buf[8192], *line; + /* avoid smashing our input parameter */ + strncpy (line_buf, input_line, sizeof (line_buf)-1); + line_buf[sizeof(line_buf) - 1] = '\0'; + line = line_buf; for (nword = 0; nword < 64; nword++) { words[nword] = strtok_r(line, " \t\n", &saveptr); line = NULL; |