From 2f6b8469cc27c0679460a2b70a35f8ba830281fc Mon Sep 17 00:00:00 2001 From: grischka Date: Thu, 31 Jan 2013 11:29:45 +0100 Subject: [PATCH] safety: replace occurrences of strcpy by pstrcpy --- libtcc.c | 2 +- tccelf.c | 22 ++++++---------------- tccgen.c | 2 +- tccpe.c | 6 +++--- 4 files changed, 11 insertions(+), 21 deletions(-) diff --git a/libtcc.c b/libtcc.c index b0a9b1a4..68b3e10b 100644 --- a/libtcc.c +++ b/libtcc.c @@ -1636,7 +1636,7 @@ PUB_FUNC char *tcc_default_target(TCCState *s, const char *default_file) && *ext) strcpy(ext, ".o"); else - pstrcpy(buf, sizeof(buf), "a.out"); + strcpy(buf, "a.out"); return tcc_strdup(buf); } diff --git a/tccelf.c b/tccelf.c index 5582bc53..152c4fb5 100644 --- a/tccelf.c +++ b/tccelf.c @@ -2992,20 +2992,6 @@ static int ld_next(TCCState *s1, char *name, int name_size) return c; } -/* - * Extract the file name from the library name - * - * /!\ No test on filename capacity, be careful - */ -static void libname_to_filename(TCCState *s1, const char libname[], char filename[]) -{ - if (!s1->static_link) { - sprintf(filename, "lib%s.so", libname); - } else { - sprintf(filename, "lib%s.a", libname); - } -} - static int ld_add_file(TCCState *s1, const char filename[]) { int ret; @@ -3052,8 +3038,12 @@ static int ld_add_file_list(TCCState *s1, const char *cmd, int as_needed) ret = -1; goto lib_parse_error; } - strcpy(libname, &filename[1]); - libname_to_filename(s1, libname, filename); + pstrcpy(libname, sizeof libname, &filename[1]); + if (s1->static_link) { + snprintf(filename, sizeof filename, "lib%s.a", libname); + } else { + snprintf(filename, sizeof filename, "lib%s.so", libname); + } } else if (t != LD_TOK_NAME) { tcc_error_noabort("filename expected"); ret = -1; diff --git a/tccgen.c b/tccgen.c index 51ac0b15..69941f9e 100644 --- a/tccgen.c +++ b/tccgen.c @@ -5580,7 +5580,7 @@ ST_FUNC void gen_inline_functions(void) str = fn->token_str; fn->sym = NULL; if (file) - strcpy(file->filename, fn->filename); + pstrcpy(file->filename, sizeof file->filename, fn->filename); sym->r = VT_SYM | VT_CONST; sym->type.t &= ~VT_INLINE; diff --git a/tccpe.c b/tccpe.c index 9bee9c20..b55bd934 100644 --- a/tccpe.c +++ b/tccpe.c @@ -663,7 +663,7 @@ static int pe_write(struct pe_info *pe) } } - strcpy((char*)psh->Name, sh_name); + pstrcpy((char*)psh->Name, sizeof psh->Name, sh_name); psh->Characteristics = pe_sec_flags[si->cls]; psh->VirtualAddress = addr; @@ -933,7 +933,7 @@ static void pe_build_exports(struct pe_info *pe) #if 1 /* automatically write exports to .def */ - strcpy(buf, pe->filename); + pstrcpy(buf, sizeof buf, pe->filename); strcpy(tcc_fileextension(buf), ".def"); op = fopen(buf, "w"); if (NULL == op) { @@ -1598,7 +1598,7 @@ static int pe_load_def(TCCState *s1, FILE *fp) case 0: if (0 != strnicmp(p, "LIBRARY", 7)) goto quit; - strcpy(dllname, trimfront(p+7)); + pstrcpy(dllname, sizeof dllname, trimfront(p+7)); ++state; continue; -- 2.11.4.GIT