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

2.6.12 未來(lái)發(fā)展方向

未來(lái)的緩沖區(qū)溢出預(yù)防機(jī)制將超過(guò)惠普aCC、英特爾ICC和GCC編譯器的現(xiàn)有能力,提供完整的覆蓋,它通過(guò)把更深入的編譯時(shí)檢查和運(yùn)行時(shí)檢查相結(jié)合,并盡量減少所需的開(kāi)銷來(lái)實(shí)現(xiàn)這一目標(biāo)。這樣的機(jī)制之一是有安全保證的C/C++(Safe-Secure C/C++,SSCC)。

SSCC推斷函數(shù)的要求和保證,并利用它們來(lái)發(fā)現(xiàn)是否滿足所有要求。例如,在下面的函數(shù)中,n必須是一個(gè)s指針?biāo)赶虻臄?shù)組的合適大小。此外,返回的字符串保證以空字符結(jié)尾。


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  } 

為了發(fā)現(xiàn)和跟蹤函數(shù)和源文件之間的要求和保證,SSCC使用了一個(gè)邊界數(shù)據(jù)文件。圖2.19顯示了SSCC機(jī)制的一種可能的實(shí)現(xiàn)。

圖2.19 一個(gè)可能的“有安全保證的”C/C++(SSCC)實(shí)現(xiàn)

如果給SSCC提供應(yīng)用程序的整個(gè)源代碼,包括所有的庫(kù),它就可以保證不存在緩沖區(qū)溢出。

主站蜘蛛池模板: 余江县| 金秀| 夹江县| 诸城市| 克东县| 洛川县| 宁强县| 东乡县| 长沙市| 拉孜县| 马关县| 阜宁县| 左权县| 德江县| 淮滨县| 珲春市| 临颍县| 嘉禾县| 襄垣县| 武川县| 沙田区| 巴塘县| 个旧市| 双城市| 长宁县| 八宿县| 斗六市| 顺平县| 喀喇| 慈利县| 新闻| 伊金霍洛旗| 武定县| 康马县| 临清市| 古浪县| 临城县| 淮安市| 和政县| 虹口区| 沾益县|