diff options
author | Dave Barach <dave@barachs.net> | 2020-04-04 18:34:41 -0400 |
---|---|---|
committer | Andrew Yourtchenko <ayourtch@gmail.com> | 2020-08-13 17:20:47 +0000 |
commit | 3d57cfdfb529c61fa5ec6e8a04db4ef042e7eb45 (patch) | |
tree | 147a67aa183dd1f961c2dd56b926c447e43f198b /src/tools | |
parent | d13034a6d1a239af07948ebe6a399c6aec5ddbbc (diff) |
misc: strcpy be gone
Causes static analysis "vulnerability" warnings
Type: fix
Ticket: VPP-1837
Signed-off-by: Dave Barach <dave@barachs.net>
Change-Id: I272fa69251d70f62178e6dff0423c16f99937af1
(cherry picked from commit 0250090fc0c24214cb1fa969f6e2f585099ee36b)
Diffstat (limited to 'src/tools')
-rw-r--r-- | src/tools/elftool/elftool.c | 26 | ||||
-rw-r--r-- | src/tools/g2/mkversion.c | 16 |
2 files changed, 20 insertions, 22 deletions
diff --git a/src/tools/elftool/elftool.c b/src/tools/elftool/elftool.c index debd9089027..e808c619da8 100644 --- a/src/tools/elftool/elftool.c +++ b/src/tools/elftool/elftool.c @@ -61,7 +61,7 @@ typedef struct { u64 rpath_offset; } elf_tool_main_t; -static clib_error_t * elf_set_interpreter (elf_main_t * em, +static clib_error_t * elf_set_interpreter (elf_main_t * em, elf_tool_main_t * tm) { elf_segment_t * g; @@ -79,7 +79,7 @@ static clib_error_t * elf_set_interpreter (elf_main_t * em, break; /* Note flowthrough */ default: - return clib_error_return (0, "unacceptable file_type"); + return clib_error_return (0, "unacceptable file_type"); } vec_foreach (g, em->segments) @@ -178,7 +178,7 @@ set_rpath_for_section (elf_main_t * em, elf_section_t * s, char * new_rpath) if (old_len < new_len) return clib_error_return (0, "rpath of `%s' does not fit (old rpath `%s')", new_rpath, old_rpath); - strcpy (old_rpath, new_rpath); + strcpy (old_rpath, new_rpath); //NOSONAR break; default: @@ -246,7 +246,7 @@ set_interpreter_rpath (elf_tool_main_t * tm) goto done; } - if (!(fd_stat.st_mode & S_IFREG)) + if (!(fd_stat.st_mode & S_IFREG)) { error = clib_error_return (0, "%s is not a regular file", tm->input_file); goto done; @@ -261,10 +261,10 @@ set_interpreter_rpath (elf_tool_main_t * tm) /* COW-mapping, since we intend to write the fixups */ if (fix_in_place) - idp = mmap (0, mmap_length, PROT_READ | PROT_WRITE, MAP_SHARED, + idp = mmap (0, mmap_length, PROT_READ | PROT_WRITE, MAP_SHARED, ifd, /* offset */ 0); else - idp = mmap (0, mmap_length, PROT_READ | PROT_WRITE, MAP_PRIVATE, + idp = mmap (0, mmap_length, PROT_READ | PROT_WRITE, MAP_PRIVATE, ifd, /* offset */ 0); if (~pointer_to_uword (idp) == 0) { @@ -272,7 +272,7 @@ set_interpreter_rpath (elf_tool_main_t * tm) error = clib_error_return_unix (0, "mmap `%s'", tm->input_file); goto done; } - + if (idp[0] != 0x7f || idp[1] != 'E' || idp[2] != 'L' || idp[3] != 'F') { error = clib_error_return (0, "not an ELF file '%s'", tm->input_file); @@ -313,14 +313,14 @@ set_interpreter_rpath (elf_tool_main_t * tm) if (offset0 == 0) { - error = clib_error_return (0, "no fixup markers in %s", + error = clib_error_return (0, "no fixup markers in %s", tm->input_file); goto done; } found_both: if (0) - clib_warning ("offset0 %lld (0x%llx), offset1 %lld (0x%llx)", + clib_warning ("offset0 %lld (0x%llx), offset1 %lld (0x%llx)", offset0, offset0, offset1, offset1); /* Executable file case */ @@ -329,18 +329,18 @@ set_interpreter_rpath (elf_tool_main_t * tm) tm->interpreter_offset = offset0; tm->rpath_offset = offset1; } - else /* shared library case */ + else /* shared library case */ { tm->interpreter_offset = 0; tm->rpath_offset = offset0; } - + if (tm->interpreter_offset) - clib_memcpy (&idp[tm->interpreter_offset], tm->set_interpreter, + clib_memcpy (&idp[tm->interpreter_offset], tm->set_interpreter, strlen (tm->set_interpreter)+1); if (tm->rpath_offset) - clib_memcpy (&idp[tm->rpath_offset], tm->set_rpath, + clib_memcpy (&idp[tm->rpath_offset], tm->set_rpath, strlen (tm->set_rpath)+1); /* Write the output file... */ diff --git a/src/tools/g2/mkversion.c b/src/tools/g2/mkversion.c index 3523fbe6c6d..0e22cfa86b5 100644 --- a/src/tools/g2/mkversion.c +++ b/src/tools/g2/mkversion.c @@ -1,4 +1,4 @@ -/* +/* *------------------------------------------------------------------ * Copyright (c) 1997-2016 Cisco and/or its affiliates. * Licensed under the Apache License, Version 2.0 (the "License"); @@ -44,21 +44,21 @@ int main (int argc, char **argv) } now = time (0); - + fprintf (ofp, "/*\n"); fprintf (ofp, " * G2 Version Stamp, %s", ctime (&now)); fprintf (ofp, " * Automatically generated, hand edits are pointless.\n"); fprintf (ofp, " */\n\n"); - fprintf (ofp, + fprintf (ofp, "const char *version_string = \"G2 (%s) major version %s\";\n", argv[1], argv[2]); - + username = (char *) cuserid (0); - strcpy(timestr, ctime(&now)); - + strncpy(timestr, ctime(&now), sizeof (timestr)); + cp = timestr; while (*cp) { @@ -70,8 +70,6 @@ int main (int argc, char **argv) fprintf (ofp, "const char *minor_v_string = \"Built by %s at %s\";\n", username, timestr); - + exit (0); } - - |