From 77ab336ea162fa8d7a9a9e005d7e2865a210b375 Mon Sep 17 00:00:00 2001 From: Chen Gang Date: Tue, 9 Dec 2014 17:02:54 +1030 Subject: [PATCH] Ensure zero termination of tic4x insn buffer * config/tc-tic4x.c (md_assemble): Ensure insn->name is zero terminated. Simplify concatenation of parallel insn. --- gas/ChangeLog | 5 +++++ gas/config/tc-tic4x.c | 8 +++++--- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/gas/ChangeLog b/gas/ChangeLog index 2fed9613fc2..4ad61083178 100644 --- a/gas/ChangeLog +++ b/gas/ChangeLog @@ -1,3 +1,8 @@ +2014-12-09 Chen Gang + + * config/tc-tic4x.c (md_assemble): Ensure insn->name is zero + terminated. Simplify concatenation of parallel insn. + 2014-12-06 Eric Botcazou * configure.tgt: Add Visium support. diff --git a/gas/config/tc-tic4x.c b/gas/config/tc-tic4x.c index 12d8ec957ab..b57272ce5e5 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) { -- 2.30.2