官术网_书友最值得收藏!

2.6.12 未來發展方向

未來的緩沖區溢出預防機制將超過惠普aCC、英特爾ICC和GCC編譯器的現有能力,提供完整的覆蓋,它通過把更深入的編譯時檢查和運行時檢查相結合,并盡量減少所需的開銷來實現這一目標。這樣的機制之一是有安全保證的C/C++(Safe-Secure C/C++,SSCC)。

SSCC推斷函數的要求和保證,并利用它們來發現是否滿足所有要求。例如,在下面的函數中,n必須是一個s指針所指向的數組的合適大小。此外,返回的字符串保證以空字符結尾。


1  char *substring_before(char *s, size_t n, char c) { 
2    for (int i = 0; i < n; ++i) 
3      if (s[i] == c) { 
4        s[i] = '\0'; 
5        return s; 
6      } 
7    s[0] = '\0'; 
8    return s; 
9  } 

為了發現和跟蹤函數和源文件之間的要求和保證,SSCC使用了一個邊界數據文件。圖2.19顯示了SSCC機制的一種可能的實現。

圖2.19 一個可能的“有安全保證的”C/C++(SSCC)實現

如果給SSCC提供應用程序的整個源代碼,包括所有的庫,它就可以保證不存在緩沖區溢出。

主站蜘蛛池模板: 定陶县| 姜堰市| 襄垣县| 广安市| 隆子县| 梁山县| 东光县| 温泉县| 双流县| 塔河县| 元氏县| 凤冈县| 寿光市| 班玛县| 镇江市| 阆中市| 岢岚县| 栾川县| 文水县| 双牌县| 左权县| 平阴县| 拉孜县| 苏尼特右旗| 金塔县| 斗六市| 永康市| 泗洪县| 阿城市| 南宁市| 邛崃市| 大悟县| 台湾省| 锡林郭勒盟| 含山县| 隆安县| 普宁市| 喀什市| 叙永县| 金昌市| 会东县|