问题标签 [tr24731]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
5 回答
14610 浏览

c - 您是否使用 TR 24731 的“安全”功能?

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

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

WG14 正在研究更安全的 C 库函数的 TR。此 TR 旨在修改现有程序,通常通过添加带有缓冲区长度的额外参数。最新的草案在文件 N1225 中。文件 N1173 中有一个基本原理。这将成为技术报告类型 2。

TR 24731-2:C 库的扩展 - 第 II 部分:动态分配函数

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

问题

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

c - 初学者的 scanf_s() 残疾

我知道 scanf_s() 有一些奇怪的地方,但我无法解决这个问题。我的代码通过使用 scanf() 运行良好,但这不会反转数组的元素:( 任何帮助将不胜感激。谢谢。

0 投票
6 回答
21131 浏览

c++ - 为什么我不能使用 fopen?

我之前询问过的关于所谓的安全库弃用的问题中,我发现自己同样对为什么fopen()应该弃用感到困惑。

该函数接受两个 C 字符串,并返回一个 FILE* ptr,或在失败时返回 NULL。线程安全问题/字符串溢出问题在哪里?或者是别的什么?

提前致谢

0 投票
6 回答
34108 浏览

c - sprintf_s 的缓冲区太小

以下代码会导致错误并终止我的应用程序。这是有道理的,因为缓冲区只有 10 个字节长,而文本是 22 个字节长(缓冲区溢出)。

如何捕获此错误,以便我可以报告它而不是让我的应用程序崩溃?

编辑:

阅读下面的评论后,我选择了 _snprintf_s。如果它返回 -1 值,则缓冲区未更新。

0 投票
6 回答
42803 浏览

c - sprintf_s 未在此范围内声明

我有一个使用sprintf_s. 它在 Windows 中运行良好,但是当我在 Linux 中编译我的代码时,它给出了这个错误:

为什么会发生这种情况,我该如何解决?

0 投票
3 回答
6872 浏览

c++ - 像“wcstok”这样的警告:这个函数或变量可能不安全。考虑改用 wcstok_s

我只是在我的代码中使用这些宽字符文字来了解它们

为什么我会收到这些警告,无论如何我都忽略了它。我们是否需要忽略任何此类警告。

0 投票
3 回答
2057 浏览

input - Scanf_s 警告?跳过用户输入(主题:Runge-Kutta、流行病模拟)

这是我的第一篇文章,我不得不承认,我在编程方面很糟糕。我是班上那个拼命工作的人,但似乎永远无法像其他同学一样掌握编程。所以请友善,我将在下面尝试解释我的问题。

我有以下代码(已删除注释),但是当我运行它时,我收到类似于下面列出的警告。另外,当我运行程序时,允许第一个用户输入的值,但突然之间,它跳到程序的末尾,不允许我输入其他变量的值(例如变量“beta” )。我有输出图像(http://i.stack.imgur.com/yc3jq.jpg),您可以看到我输入了 alpha,但随后程序运行到最后。有什么想法吗?

非常感谢您的帮助!-斯宾塞

- - - - - - - - - - - - - - -代码 - - - - - - - -


示例警告:

0 投票
3 回答
12810 浏览

c - 是否有 strcpy_s 和/或 TR24731-1 的免费实现?

我有一个混合 C 和 C++ 的旧项目。它广泛使用 C 字符串和strcpy, strcat,strncpystrncat。我发现了许多缓冲区溢出,我想使用更安全的函数,例如strcpy_s. MSVC 包括这些功能,但我需要一些可以在各种平台上运行的东西——至少是 linux、osx 和 windows。

我确实知道strlcpy,但正如很多人所指出的(示例),这确实不是一种改进。


strcpy_s那么: ,strcat_s等或整个 ,是否有任何免费实现TR24731-1

我需要的东西是public domainor BSD,但如果您知道其他许可证下的实现,请继续列出它们 - 我相信其他人会受益。

0 投票
2 回答
3405 浏览

c - C 中 memcpy 的最佳实践

  1. 它在 GNU 中是否与 Microsoft C 运行时一样被弃用?

  2. 如果 GNU C 中有这样的弃用,89/90 之后的 C 标准或编译器是否强制执行弃用?

  3. 如果它是 GNU C 编译器,它从什么时候开始提供像Microsoft Cmemcpy_s中已弃用的那样安全的替代内存操作功能?memcpy

  4. 如果它是 89/90 之后的 C 标准,它从什么时候开始提供像Microsoft Cmemcpy_s中已弃用的那样安全的替代内存操作功能?memcpy

  5. mem如果在 GNU C 运行时中没有这样的弃用,是否有一个函数既不在那些内存操作(名称bcopy以目的地?

  6. 如果有/有,你能列出尽可能多的吗?

0 投票
2 回答
5960 浏览

c - 对gets_s的未定义引用?

我使用以下命令在 Ubuntu 4.6.1 和 SUSE 4.6.2 上使用 gcc

我的源代码是

详细说明我的问题:

对我来说,主要问题是行输入和保存的行之间的一一对应关系。

成功时,fgets 和 gets_s 之间的区别在于 fgets 包含换行符终止符,而 gets_s 将换行符终止符替换为空终止符,以便在行输入和成功调用 gets_s 之间保持一一对应。

对于溢出缓冲区长度的输入,fgets 接受适合缓冲区的字符数,并将其余字符留在输入缓冲区中以供下一个 fgets 使用。

标准(K.3.5.4.1)规定,gets_s(与gets不同)需要在n-1个字符内出现换行符、EOF或读取错误。因此溢出是违反运行时约束的。如果存在运行时约束违规,则将缓冲区中的第一个字符设置为空字符,并读取并丢弃 stdin 输入缓冲区中的字符,直到读取换行符为止,发生文件结尾或发生读取错误。

因此,在成功时,我期望:

溢出时,我预计 fgets 和 gets_s 的行为会有所不同。换句话说,

请注意我希望 gets_s 如何完全删除第一行输入的内容。

如果主要问题是输入行和保存行之间的一一对应关系,这在调试中很重要,我们仍然需要编写自己的函数(类似于 K&R 的 getline)

使用这样的函数,保持一一对应,缓冲区饱和并且没有运行时约​​束违规。

我得出这个结论是否正确。