请教,这段 C 代码有什么安全问题吗? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
tylerdurden
V2EX    问与答

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

  •  
  •   tylerdurden 2017-10-20 18:59:53 +08:00 2789 次点击
    这是一个创建于 3000 天前的主题,其中的信息可能已经有所发展或是发生改变。
    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  
    div class="badge op">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     Solana     5438 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 28ms UTC 03:19 PVG 11:19 LAX 19:19 JFK 22:19
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86