summaryrefslogtreecommitdiffstats
path: root/encoder
diff options
context:
space:
mode:
authorMartin Storsjo <martin@martin.st>2015-05-20 00:12:28 +0300
committerMarco Nelissen <marcone@google.com>2015-06-25 08:25:52 -0700
commit85a43d2fcf9572145dd013a1a43ff11b327bcbbc (patch)
tree971ba34dd10fcbfb25a374a3539d06cef349aee4 /encoder
parentc6488980b2be422832fb9fa0c0e2c0928d825a35 (diff)
downloadandroid_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.c19
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