aboutsummaryrefslogtreecommitdiff
path: root/gas/config/tc-tic4x.c
diff options
context:
space:
mode:
authorChen Gang <gang.chen.5i5j@gmail.com>2014-12-09 17:02:54 +1030
committerAlan Modra <amodra@gmail.com>2014-12-09 17:04:45 +1030
commit77ab336ea162fa8d7a9a9e005d7e2865a210b375 (patch)
treeeb7ef5a10f8376533e04535d69b3f74ec9711e95 /gas/config/tc-tic4x.c
parent31d999a568b8dcd19d79308335f2508685943f1f (diff)
downloadgdb-77ab336ea162fa8d7a9a9e005d7e2865a210b375.zip
gdb-77ab336ea162fa8d7a9a9e005d7e2865a210b375.tar.gz
gdb-77ab336ea162fa8d7a9a9e005d7e2865a210b375.tar.bz2
Ensure zero termination of tic4x insn buffer
* config/tc-tic4x.c (md_assemble): Ensure insn->name is zero terminated. Simplify concatenation of parallel insn.
Diffstat (limited to 'gas/config/tc-tic4x.c')
-rw-r--r--gas/config/tc-tic4x.c8
1 files changed, 5 insertions, 3 deletions
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)
{