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

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ū)溢出。

主站蜘蛛池模板: 霸州市| 丘北县| 江源县| 长寿区| 忻州市| 江油市| 东乡族自治县| 永安市| 双城市| 建德市| 延吉市| 彰武县| 平凉市| 甘洛县| 淮南市| 隆安县| 读书| 宜兰市| 万山特区| 什邡市| 阜宁县| 武胜县| 朝阳县| 盐边县| 宿松县| 湘乡市| 息烽县| 盘山县| 廉江市| 米脂县| 宜都市| 石河子市| 九江县| 莎车县| 呼玛县| 确山县| 金阳县| 永福县| 贵港市| 水城县| 建水县|