Minor changes on bcc command.
Use snprintf() instead of memcpy/strncpy sequence to improve the
readibility.
Change-Id: Ia119769c111a349d50dc0a9ee1e9c77cef8260a8
diff --git a/tools/bcc/main.cpp b/tools/bcc/main.cpp
index d05b951..d59f0e4 100644
--- a/tools/bcc/main.cpp
+++ b/tools/bcc/main.cpp
@@ -239,13 +239,16 @@
// Construct output library path
const size_t outDirLen = strlen(outDir);
const size_t outFilenameLen = strlen(outFilename);
- char *outLib = new char [outDirLen + 1 /* for '/' */ +
- outFilenameLen + 3 /* .so */ + 1];
+ const size_t outLibLen = outDirLen + 1 /* for '/' */ +
+ outFilenameLen + 3 /* .so */;
+ char *outLib = new char [outLibLen + 1];
- memcpy(outLib, outDir, outDirLen);
- outLib[outDirLen] = '/';
- memcpy(outLib + outDirLen + 1, outFilename, outFilenameLen);
- strncpy(outLib + outDirLen + 1 + outFilenameLen, ".so", 3);
+ if (snprintf(outLib, outLibLen + 1, "%s/%s.so",
+ outDir, outFilename) != static_cast<ssize_t>(outLibLen)) {
+ bccResult = -1;
+ errMsg = "failed to construct the path for output library.";
+ break;
+ }
bccResult = bccPrepareSharedObject(script, outDir, outFilename, NULL,
outLib, /* flags */0);