diff --git a/README.md b/README.md index c16cbb17696c74ed845abf0449eadb239e409f6e..9d4afcb1de565374c61965131327723df3400b9f 100644 --- a/README.md +++ b/README.md @@ -1,56 +1,53 @@ -# libboundscheck - -#### 介绍 -- 遵循C11 Annex K (Bounds-checking interfaces)的标准,选取并实现了常见的内存/字符串操作类的函数,如memcpy_s、strcpy_s等函数。 -- 未来将分析C11 Annex K中的其他标准函数,如果有必要,将在该组织中实现。 -- 处理边界检查函数的版本发布、更新以及维护。 - -#### 函数清单 - -- memcpy_s -- wmemcpy_s -- memmove_s -- wmemmove_s -- memset_s -- strcpy_s -- wcscpy_s -- strncpy_s -- wcsncpy_s -- strcat_s -- wcscat_s -- strncat_s -- wcsncat_s -- strtok_s -- wcstok_s -- sprintf_s -- swprintf_s -- vsprintf_s -- vswprintf_s -- snprintf_s -- vsnprintf_s -- scanf_s -- wscanf_s -- vscanf_s -- vwscanf_s -- fscanf_s -- fwscanf_s -- vfscanf_s -- vfwscanf_s -- sscanf_s -- swscanf_s -- vsscanf_s -- vswscanf_s -- gets_s - -#### 构建方法 - -运行命令 -``` -make CC=gcc -``` -生成的动态库libboundscheck.so存放在新创建的lib目录下。 - -#### 使用方法 -1. 将构建生成的动态库libboundscheck.so放到库文件目录下,例如:"/usr/local/lib/"。 - -2. 为使用libboundscheck,编译程序时需增加编译参数"-lboundscheck",例如:"gcc -g -o test test.c -lboundscheck"。 \ No newline at end of file + + +libboundscheck +介绍 +libboundscheck 是一个用于提供边界检查的C语言库,旨在增强程序的安全性,防止缓冲区溢出等常见安全问题。该库包含了一系列的安全函数,用于替代标准C库中可能存在安全隐患的函数。 + +函数清单 +以下是一些主要的安全函数列表: + +- memcpy_s:安全地复制内存块。 +- memmove_s:安全地移动内存块。 +- memset_s:安全地设置内存块。 +- strcpy_s:安全地复制字符串。 +- strncpy_s:安全地复制指定长度的字符串。 +- strcat_s:安全地连接字符串。 +- strncat_s:安全地连接指定长度的字符串。 +- strtok_s:安全地分割字符串。 +- wcscpy_s:安全地复制宽字符字符串。 +- wcsncpy_s:安全地复制指定长度的宽字符字符串。 +- wcscat_s:安全地连接宽字符字符串。 +- wcsncat_s:安全地连接指定长度的宽字符字符串。 +- wcstok_s:安全地分割宽字符字符串。 +- wmemcpy_s:安全地复制宽字符内存块。 +- wmemmove_s:安全地移动宽字符内存块。 +- fscanf_s:安全地从文件读取格式化输入。 +- fwscanf_s:安全地从文件读取宽字符格式化输入。 +- scanf_s:安全地从标准输入读取格式化输入。 +- wscanf_s:安全地从标准输入读取宽字符格式化输入。 +- sscanf_s:安全地从字符串读取格式化输入。 +- swscanf_s:安全地从字符串读取宽字符格式化输入。 +- sprintf_s:安全地格式化字符串输出。 +- swprintf_s:安全地格式化宽字符字符串输出。 +- vsprintf_s:安全地格式化字符串输出(使用可变参数列表)。 +- vswprintf_s:安全地格式化宽字符字符串输出(使用可变参数列表)。 + +构建方法 +在构建libboundscheck之前,请确保您的系统上安装了必要的开发工具,如编译器和make工具。 + +克隆仓库后,进入项目目录,使用以下命令进行构建: + +make +使用方法 +构建完成后,您可以将libboundscheck的头文件包含到您的项目中,并链接生成的库文件。使用相应的安全函数替代标准C库中的函数,以确保您的程序在运行时更加安全。 + +例如,使用strcpy_s代替strcpy: + +#include "securec.h" + +errno_t result = strcpy_s(my_dest, sizeof(my_dest), my_src); +if (result != 0) { + // handle error +} +更多详细的使用方法和示例可以在项目文档中找到。 \ No newline at end of file