> 文档中心 > OpenHarmony安全函数返回值判断

OpenHarmony安全函数返回值判断

在向OpenHarmony贡献代码时,涉及内存操作时都必须使用安全函数,并且要求对返回值进行正确的处理。
否则,在提交PR时,代码质量检查就会提示如下缺陷。
OpenHarmony安全函数返回值判断
下面整理一下常用的内存操作安全函数及其返回值含义,便于今后使用:
涉及到的定义:

typedef int errno_t;#define EOK 0
函数功能 安全函数原形 返回值含义
字符串格式化输出函数 int sprintf_s(char *strDest, size_t destMax, const char *format, …) ; 成功:返回输出的字符个数(不包含’\0’结束符)
失败:返回-1
字符串格式化输出函数 int snprintf_s(char *strDest, size_t destMax, size_t count, const char *format, …); 成功:返回输出的字符个数(不包含’\0’结束符)
失败:返回-1
字符串格式化输入函数 int scanf_s(const char *format, …); 成功:返回分配的输入项目数
失败:返回-1
内存拷贝函数 errno_t memmove_s(void *dest, size_t destMax, const void *src, size_t count); 成功: 返回EOK(0)
失败:返回其它
内存拷贝函数 errno_t memcpy_s(void *dest, size_t destMax, const void *src, size_t count); 成功: 返回EOK(0)
失败:返回其它
字符串拷贝函数 errno_t strcpy_s(char *strDest, size_t destMax, const char *strSrc); 成功: 返回EOK(0)
失败:返回其它
字符串拷贝函数 errno_t strncpy_s(char *strDest, size_t destMax, const char *strSrc, size_t count); 成功: 返回EOK(0)
失败:返回其它
内存清除函数 errno_t memset_s(void *dest, size_t destMax, int c, size_t count); 成功: 返回EOK(0)
失败:返回其它
字符串拼接函数 errno_t strcat_s(char *strDest, size_t destMax, const char *strSrc); 成功: 返回EOK(0)
失败:返回其它
字符串拼接函数 errno_t strncat_s(char *strDest, size_t destMax, const char *strSrc, size_t count); 成功: 返回EOK(0)
失败:返回其它
字符串分割函数 char *strtok_s(char *strToken, const char *strDelimit, char **context); 如果分割的字符串长度等于0,则返回NULL,否则返回该字符串首地址

不难看出,大部分安全函数与普通内存操作函数相比,安全函数名称多出一个_s,形参多出了一个size_t destMax参数,具体参数含义请参考源码,安全函数定义的OpenHarmony源码路径为://third_party/bounds_checking_function/include/securec.h