diff options
author | Martin Storsjo <martin@martin.st> | 2015-05-20 00:12:28 +0300 |
---|---|---|
committer | Marco Nelissen <marcone@google.com> | 2015-06-25 08:25:52 -0700 |
commit | 85a43d2fcf9572145dd013a1a43ff11b327bcbbc (patch) | |
tree | 971ba34dd10fcbfb25a374a3539d06cef349aee4 /encoder | |
parent | c6488980b2be422832fb9fa0c0e2c0928d825a35 (diff) | |
download | android_external_libavc-85a43d2fcf9572145dd013a1a43ff11b327bcbbc.tar.gz android_external_libavc-85a43d2fcf9572145dd013a1a43ff11b327bcbbc.tar.bz2 android_external_libavc-85a43d2fcf9572145dd013a1a43ff11b327bcbbc.zip |
Fix string handling for generating version strings
Don't do concatenation with strncat; the length parameter in strncat
is only for how many chars to append at most, not for the full output
buffer size. To safely use strncat, one would have to do
strncat(buf, str, sizeof(buf) - strlen(buf)).
By using snprintf, we guarantee that the buffer is null terminated, and
we don't need to use strnlen at all.
(If compatibility with older MSVC versions that lack snprintf, one
can use _snprintf instead and manually add the null termination.)
Change-Id: I1c2322c7a406ddd5e6551a96c460da60deeffda1
Diffstat (limited to 'encoder')
-rw-r--r-- | encoder/ih264e_version.c | 19 |
1 files changed, 5 insertions, 14 deletions
diff --git a/encoder/ih264e_version.c b/encoder/ih264e_version.c index 3dcba8d..173f17c 100644 --- a/encoder/ih264e_version.c +++ b/encoder/ih264e_version.c @@ -86,18 +86,9 @@ ******************************************************************************* */ #define VERSION(version_string, codec_name, codec_release_type, codec_release_ver, codec_vendor) \ - strncpy(version_string,"@(#)Id:", MAX_STRLEN); \ - strncat(version_string,codec_name, MAX_STRLEN); \ - strncat(version_string,"_", MAX_STRLEN); \ - strncat(version_string,codec_release_type, MAX_STRLEN); \ - strncat(version_string," Ver:", MAX_STRLEN); \ - strncat(version_string,codec_release_ver, MAX_STRLEN); \ - strncat(version_string," Released by ", MAX_STRLEN); \ - strncat(version_string,codec_vendor, MAX_STRLEN); \ - strncat(version_string," Build: ", MAX_STRLEN); \ - strncat(version_string,__DATE__, MAX_STRLEN); \ - strncat(version_string," @ ", MAX_STRLEN); \ - strncat(version_string,__TIME__, MAX_STRLEN); + snprintf(version_string, MAX_STRLEN, \ + "@(#)Id:%s_%s Ver:%s Released by %s Build: %s @ %s", \ + codec_name, codec_release_type, codec_release_ver, codec_vendor, __DATE__, __TIME__) /*****************************************************************************/ /* Function Definitions */ @@ -131,9 +122,9 @@ IV_STATUS_T ih264e_get_version(CHAR *pc_version, UWORD32 u4_version_bufsize) VERSION(ac_version_tmp, CODEC_NAME, CODEC_RELEASE_TYPE, CODEC_RELEASE_VER, CODEC_VENDOR); - if (u4_version_bufsize >= (strnlen(ac_version_tmp, MAX_STRLEN) + 1)) + if (u4_version_bufsize >= (strlen(ac_version_tmp) + 1)) { - memcpy(pc_version, ac_version_tmp, (strnlen(ac_version_tmp, MAX_STRLEN) + 1)); + memcpy(pc_version, ac_version_tmp, (strlen(ac_version_tmp) + 1)); return IV_SUCCESS; } else |