V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
tylerdurden
V2EX  ›  问与答

请教,这段 C 代码有什么安全问题吗?

  •  
  •   tylerdurden · 2017-10-20 18:59:53 +08:00 · 2155 次点击
    这是一个创建于 2576 天前的主题,其中的信息可能已经有所发展或是发生改变。
    bool TestMe(const uint8_t *Data, size_t DataSize) {
      return DataSize >= 3 &&
          Data[0] == 'T' &&
          Data[1] == 'E' &&
          Data[2] == 'S' &&
          Data[3] == 'T';  // :‑<
    }
    
    11 条回复    2017-10-21 15:14:18 +08:00
    veelog
        1
    veelog  
       2017-10-20 19:04:11 +08:00 via iPhone   ❤️ 1
    去掉等号就完美了,不过 c 怎么还有布尔类型
    veelog
        2
    veelog  
       2017-10-20 19:05:53 +08:00 via iPhone
    作为给别人点用的接口的话还是判断下 Data!=NULL
    tylerdurden
        3
    tylerdurden  
    OP
       2017-10-20 19:07:41 +08:00
    @veelog 代码来自 https://github.com/google/fuzzer-test-suite/blob/master/tutorial/fuzz_me.cc ,报了一个堆溢出,死活没看出来。
    ddaii
        4
    ddaii  
       2017-10-20 19:30:22 +08:00   ❤️ 2
    当 DataSize = 3 时 ,Data[3] 不就是溢出了吗?
    1919yuan
        5
    1919yuan  
       2017-10-20 19:32:30 +08:00 via Android   ❤️ 1
    如果 Data pointer valid,但是长度只有 3 的话,这段测试在测试 access 第四个位置会报错,over flow。如果 Data pointer 是 null 或者 0xcccccccd 之类被释放的指针,那么这段测试应该会报释放后使用的错误。前提是你使用 fuzzer-test-suite 来测试这段代码。
    tylerdurden
        6
    tylerdurden  
    OP
       2017-10-20 19:36:01 +08:00
    @1919yuan 学习了,感谢!
    ACool
        7
    ACool  
       2017-10-20 19:49:56 +08:00 via Android
    @veelog c99 加了布尔类型
    mengyaoss77
        8
    mengyaoss77  
       2017-10-20 19:59:00 +08:00
    还是要加错误处理, 在函数内部判断一下指针是否有效
    ysc3839
        9
    ysc3839  
       2017-10-20 21:02:40 +08:00
    @veelog #include <stdbool.h>
    yksoft1
        10
    yksoft1  
       2017-10-20 21:16:18 +08:00
    @mengyaoss77 问题是不太好判断 Data 是否是野指针。
    dorentus
        11
    dorentus  
       2017-10-21 15:14:18 +08:00 via iPhone
    这不是 C 是 C++
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1090 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 19:00 · PVG 03:00 · LAX 11:00 · JFK 14:00
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.