美文网首页
C运行库中的安全字符串函数

C运行库中的安全字符串函数

作者: 7bfedbe4863a | 来源:发表于2018-01-19 22:18 被阅读0次

安全隐患:目标字符串缓冲区不够大,无法容纳所生成的字符串,就会导致内存中的数据被破坏。

  • strcpy和wcscpy(以及其他的大多数字符串处理函数),没有指定缓冲区最大长度的参数,所以函数不知道自己会破坏内存,也就不会报错。
  • strlen、wcslen、_tcslen等函数不会修改传入的字符串,所以这些函数没有问题。
头文件

StrSafe.h(在包含这个头文件的时候,String.h也会被包含进来)

  • 必须在包含了其他所有的文件以后才包含StrSafe.h。
  • 包含了这个头文件之后,C运行库中现有的衣服穿处理函数已被标记为废弃不用,如果使用了这些函数,编译会警告。
  • 使用(替换)的时候吗要考虑是否可能发生缓冲区溢出,如果不能从错误中恢复了,那么至少要考虑如何终止应用程序(尽可能优雅)。
函数

现有的每一个函数,都有一个对应的新版本的函数,前面的名称相同,只是在最后添加了_s(代表secure)后缀。

  • 首先验证传递给它们的参数值。(指针不为MULL,整数在有效范围内,枚举值是有效的,缓冲区足以容纳结果数据),如果有任何一项失败,函数会设置局部于线程的c运行时变量errno(并返回一个errno_t来指出成功或失败)。
  • Debug Build的时候,如果检查失败,会弹出Debug Assertion Failed对话框,然后终止应用程序。
  • Realse Build的时候,如果检查失败,会直接自动终止应用程序的运行。

具体的使用和对比什么的,明天再继续吧……

相关文章

  • C运行库中的安全字符串函数

    安全隐患:目标字符串缓冲区不够大,无法容纳所生成的字符串,就会导致内存中的数据被破坏。 strcpy和wcscpy...

  • 字符串函数

    字符串转换类函数 addcslashes函数:以C语言风格使用反斜线转义字符串中的字符addslashes函数:使...

  • PHP字符串的操作函数

    1 字符串转换类函数 addcslashes函数:以C语言风格使用反斜线转义字符串中的字符 addslashes函...

  • Redis 源码简洁剖析 02 - SDS 字符串

    C 语言的字符串函数 C 语言 string 函数[https://devdocs.io/c-strings/],...

  • 字符串

    字符串的实现(C++实现) 实现字符串的构造及其常用的接口函数,深入掌握理解字符串的实现 C++ / STL 中s...

  • c/c++ strchr()

    C语言strchr()函数:查找某字符在字符串中首次出现的位置

  • R字符串操作

    一、删除字符串中的空格 基础包中的trimws函数。 用法 trimws(x, which = c("both",...

  • C 字符串函数&&多维数组

    1.C 字符串函数 常用的字符串函数如下: 使用字符串函数注意以下事项:1、strlen()获取字符串的长度,在字...

  • 问题记录

    fopen函数在VS2017C++版本中不安全的问题

  • C语言18 指针与字符串

    C语言18 指针与字符串 字符串的几种表示方式有什么区别? 常用的字符串函数 指针函数 本质就是函数,只不过函数的...

网友评论

      本文标题:C运行库中的安全字符串函数

      本文链接:https://www.haomeiwen.com/subject/elnaoxtx.html