vppinfra: c11 safe string functions 20/15520/15
authorSteven <sluong@cisco.com>
Thu, 25 Oct 2018 04:15:45 +0000 (21:15 -0700)
committerDave Barach <dave@barachs.net>
Sun, 2 Dec 2018 13:47:46 +0000 (08:47 -0500)
commitb0598497afde60146fe8480331c9f96e7a79475a
treea3d9f454195cb9317fceb29efe62f5b62de89dea
parente7f61d1db511b9b09c7771c5851eaaf95a2fc7fe
vppinfra: c11 safe string functions

Add memcmp_s, strcmp_s, strncmp_s, strcpy_s, strncpy_s, strcat_s, strncat_s,
strtok_s, strnlen_s, and strstr_s C11 safe string API. For migrating extant
unsafe API, add also the corresponding macro version of each safe API,
clib_memcmp, clib_strcmp, etc.

In general, the benefits of the safe string APIs are to provide null pointer
checks, add additional argument to specify the string length of the passed
string rather than relying on the null terminated character, and src/dest
overlap checking for the the string copy operations.

The macro version of the API takes the same number of arguments as the unsafe
API to provide easy migration. However, it does not usually provide the full
aformentioned benefits. In some cases, it is necessary to move to the safe
API rather than using the macro in order to avoid some unpredictable problems
such as accessing memory beyond what it is intended due to the lack of the
passed string length.

dbarach: add a "make test" vector, and a doxygen file header cookie.

Change-Id: I5cd79b8928dcf76a79bf3f0b8cbc1a8f24942f4c
Signed-off-by: Steven <sluong@cisco.com>
Signed-off-by: Dave Barach <dave@barachs.net>
src/plugins/unittest/string_test.c
src/vppinfra/string.c
src/vppinfra/string.h
test/test_string.py [new file with mode: 0644]