diff options
-rw-r--r-- | gas/ChangeLog | 5 | ||||
-rw-r--r-- | gas/config/tc-tic4x.c | 8 |
2 files changed, 10 insertions, 3 deletions
diff --git a/gas/ChangeLog b/gas/ChangeLog index 2fed961..4ad6108 100644 --- a/gas/ChangeLog +++ b/gas/ChangeLog @@ -1,3 +1,8 @@ +2014-12-09 Chen Gang <gang.chen.5i5j@gmail.com> + + * config/tc-tic4x.c (md_assemble): Ensure insn->name is zero + terminated. Simplify concatenation of parallel insn. + 2014-12-06 Eric Botcazou <ebotcazou@adacore.com> * configure.tgt: Add Visium support. diff --git a/gas/config/tc-tic4x.c b/gas/config/tc-tic4x.c index 12d8ec9..b57272c 100644 --- a/gas/config/tc-tic4x.c +++ b/gas/config/tc-tic4x.c @@ -2417,6 +2417,7 @@ md_assemble (char *str) char *s; int i; int parsed = 0; + size_t len; tic4x_inst_t *inst; /* Instruction template. */ tic4x_inst_t *first_inst; @@ -2455,8 +2456,8 @@ md_assemble (char *str) s++; if (*s) /* Null terminate for hash_find. */ *s++ = '\0'; /* and skip past null. */ - strcat (insn->name, "_"); - strncat (insn->name, str, TIC4X_NAME_MAX - 1 - strlen (insn->name)); + len = strlen (insn->name); + snprintf (insn->name + len, TIC4X_NAME_MAX - len, "_%s", str); insn->operands[insn->num_operands++].mode = M_PARALLEL; @@ -2518,7 +2519,8 @@ md_assemble (char *str) s++; if (*s) /* Null terminate for hash_find. */ *s++ = '\0'; /* and skip past null. */ - strncpy (insn->name, str, TIC4X_NAME_MAX - 3); + strncpy (insn->name, str, TIC4X_NAME_MAX - 1); + insn->name[TIC4X_NAME_MAX - 1] = '\0'; if ((i = tic4x_operands_parse (s, insn->operands, 0)) < 0) { |