相关疑难解决方法(0)

您是否使用TR 24731'安全'功能?

ISO C委员会(ISO/IEC JTC1/SC21/WG14)已发布TR 24731-1,正在研究TR 24731-2:

TR 24731-1:C库的扩展第一部分:边界检查接口

WG14正在研究更安全的C库函数.该TR旨在通过添加具有缓冲区长度的额外参数来修改现有程序.最新草案见N1225号文件.理由是在N1173号文件中.这将成为技术报告类型2.

TR 24731-2:C库的扩展 - 第二部分:动态分配功能

WG14正在研究更安全的C库函数.该TR面向使用动态分配而不是缓冲区长度的额外参数的新程序.最新草案见N1337号文件.这将成为技术报告类型2.

问题

  • 您是否使用支持TR24731-1功能的库或编译器?
  • 如果是这样,哪个编译器或库以及哪个平台?
  • 您是否因修复代码以使用这些功能而发现任何错误?
  • 哪些功能提供最大价值?
  • 有没有提供任何价值或负值?
  • 你打算将来使用这个图书馆吗?
  • 您是否正在跟踪TR24731-2的工作?

c security coding-style tr24731

71
推荐指数
5
解决办法
1万
查看次数

如何正确安全地使用sscanf

首先,关于使用的其他问题sscanf不回答我的问题,因为常见的答案是根本不sscanf使用fgets或使用或getch替代,这在我的情况下是不可能的.

问题是我的C教授要我scanf在一个程序中使用.这是一个要求.但是程序也必须处理所有不正确的输入.

程序必须读取整数数组.以什么格式提供数组的整数并不重要.为了使任务更容易,程序可能首先读取数组的大小,然后读取每行中的整数.

程序必须处理这些输入(并适当地报告错误):

  1. 999999999999999 ... 9(数字大于整数)
  2. 12a3(不要将其读作整数12)
  3. a ... z(字符串)
  4. 11 aa 22 33 \n所有在一行(这可能通过丢弃11之后的所有内容来处理)
  5. 输入大于输入数组

可能有更多不正确的案例,这是我能想到的唯一案例.

如果提供了错误输入,程序必须要求用户再次输入,直到给出正确的输入,但必须保留先前正确的输入(只有输入流中必须清除不正确的输入).

一切都必须符合C99标准.

c scanf

8
推荐指数
1
解决办法
2万
查看次数

标签 统计

c ×2

coding-style ×1

scanf ×1

security ×1

tr24731 ×1