zoukankan      html  css  js  c++  java
  • SDL检查

    在用 Visual Studio 编译比较早的代码时,经常会遇到错误:

    错误 C4996 'wcscpy': This function or variable may be unsafe. Consider using wcscpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. BcpService e:c800pcsrccpservicecreateindex.cpp 22

    警告 C4200 使用了非标准扩展: 结构/联合中的零大小数组 BcpService e:c800pcsrccpservicelibusb.h 738

    错误 C4996 'strcpy': This function or variable may be unsafe. Consider using strcpy_s instead. To disable deprecation, use _CRT_SECURE_NO_WARNINGS. See online help for details. BcpService e:c800pcsrccpservicecreatbcpfile.cpp 534

    等。。。

    在项目属性中关闭SDL检查后就可以解决该问题。

    当然,最好是修改代码,使用错误提示中的修改。

    但是某些情况下代码不允许修改,就需要关闭SDL检查。

    什么是SDL检查

    微软正在积极开发的Visual Studio11,不断寻找方法,以提高安全相关的功能。作为这项工作的一部分,我们正在更新一些增强/ GS编译器开关,这是默认,使基层的代码生成的安全功能,超越了现在熟悉的基于cookie的堆栈溢出保护。这些在以后的文章,我们将提供一些细节。

    安全开发生命周期(SDL)/ GS编译器能协助安全软件开发的范围之外的建议。这些从具体的代码生成功能,如使用安全相关的编译器警告和更多的一般性建议适当初始化或消毒指针strict_gs_check范围。

    这是第一次,我们希望能提供一个中央机制,使这些额外的安全性支持通过一个新的/ SDL开关。 / SDL的影响是双重的:

    - / SDL SDL强制编译器警告是在编译过程中的错误处理。

    - / SDL使额外的代码生成功能,如增加了栈缓冲区溢出保护和指针初始化或消毒,在有限的一套明确界定的情况下的范围。

    这种双管齐下的办法,反映了我们的信念,安全软件是最好的实现相结合的检测,并固定在开发过程中代码中的错误与安全缓解的部署,将显着增加难以利用任何剩余的错误。

    SDL的编译器开关默认是禁用的,并且可以在Visual Studio的用户界面,轻松地打开当前项目的属性页,并访问配置属性 - > C / C ++ - >常规选项启用。

    那么,是什么/ SDL开关吗?

    使一切都包含在/ GS/ SDL开关启用的功能是启用/ GS即启用/ SDL的一个超集。我们将提供更多的背景和额外的/ GS/ SDL在未来职位的特点,在深入细节。现在,我们注意到,它们包括:

    启用下列SDL强制编译器警告视为错误:

    Warning

    Command line switch

    Description

    C4146

    /we4146

    A unary minus operator was applied to an unsigned type, resulting in an unsigned result

    C4308

    /we4308

    A negative integral constant converted to unsigned type, resulting in a possibly meaningless result

    C4532

    /we4532

    Use of “continue”, “break” or “goto” keywords in a __finally/finally block has undefined behavior during abnormal termination

    C4533

    /we4533

    Code initializing a variable will not be executed

    C4700

    /we4700

    Use of an uninitialized local variable

    C4789

    /we4789

    Buffer overrun when specific C run-time (CRT) functions are used

    C4995

    /we4995

    Use of a function marked with pragma deprecated

    C4996

    /we4996

    Use of a function marked as deprecated

     一个开发人员如想以选择大部分的/ SDL的功能,但排除一个给定的警告编号(假设为例C4146)然后这可以通过在/ WD开关以禁用彗星/彗星++下,具体警告实现 - >命令行 - >附加选项在Visual Studio的用户界面:

    strict_gs_check pragma是适用于所有的C/ C + +代码编译/ SDL。这指示编译器将考虑作为潜在的堆栈缓冲区溢出保护候选人更多的功能。Visual Studio 2010中引入的GS优化得到了提高strict_gs_check一起更好地工作,特别是使许多额外的安全检查从strict_gs_check被证明是不必要的和删除。

    附加/ SDL代码生成功能,将在以后的职位更详细的覆盖。

    Microsoft强烈建议使用/ GS开关,因为在以往的Visual Studio版本,在Visual Studio11新/ SDL开关提供更大的保障覆盖面的机会,期间和之后发展:停留在特定的安全利益,使用/ GS的更多细节调整在Visual Studio11和/ SDL。

    当然,安全性开发生命周期(SDL)是一个完整的过程和开发安全的软件,这样的方法,包括远远高于只使用特定的编译器开关 - 阅读更多查找到SDL的额外资源。

    http://blog.csdn.net/itcastcpp/article/details/7069915

  • 相关阅读:
    avcodec_decode_video2少帧问题
    什么是I帧,P帧,B帧
    让Ubuntu可以压缩/解压缩RAR文件
    Linux 向文件末尾追加命令
    valgrind: failed to start tool 'memcheck' for platform 'amd64-linux': No such file or directory
    《王者之剑2》性能数据精讲
    Unity加载模块深度解析(纹理篇)
    Unity加载模块深度解析(Shader)
    Unity加载模块深度解析(网格篇)
    Unity将来时:IL2CPP是什么?
  • 原文地址:https://www.cnblogs.com/pjl1119/p/7777438.html
Copyright © 2011-2022 走看看