C語言中不安全的函式以及解決方案

2021-06-26 23:11:12 字數 1563 閱讀 8984

函式        

嚴重性     

解決方案

gets         最危險         使用 fgets(buf, size, stdin)。這幾乎總是乙個大問題!

strcpy     很危險改為使用 strncpy。

strcat      很危險       改為使用 strncat。

sprintf     很危險        改為使用 snprintf,或者使用精度說明符。

scanf      很危險          使用精度說明符,或自己進行解析。

sscanf     很危險        使用精度說明符,或自己進行解析。

fscanf      很危險      使用精度說明符,或自己進行解析。

vfscanf    很危險      使用精度說明符,或自己進行解析。

vsprintf    很危險    改為使用 vsnprintf,或者使用精度說明符。

vscanf    很危險    使用精度說明符,或自己進行解析。

vsscanf   很危險    使用精度說明符,或自己進行解析。

streadd   很危險   確保分配的目的地引數大小是源引數大小的四倍。

strecpy   很危險    確保分配的目的地引數大小是源引數大小的四倍。

strtrns     危險       手工檢查來檢視目的地大小是否至少與源字串相等。

realpath 很危險(或稍小,取決於實現)分配緩衝區大小為 maxpathlen。同樣,手工檢查引數以確保輸入引數不超過 maxpathlen。

syslog    很危險(或稍小,取決於實現)在將字串輸入傳遞給該函式之前,將所有字串輸入截成合理的大小。

getopt  很危險(或稍小,取決於實現)在將字串輸入傳遞給該函式之前,將所有字串輸入截成合理的大小。

getopt_long  很危險(或稍小,取決於實現)在將字串輸入傳遞給該函式之前,將所有字串輸入截成合理的大小。

getpass  很危險(或稍小,取決於實現)在將字串輸入傳遞給該函式之前,將所有字串輸入截成合理的大小。

getchar  中等危險  如果在迴圈中使用該函式,確保檢查緩衝區邊界。

fgetc      中等危險  如果在迴圈中使用該函式,確保檢查緩衝區邊界。

getc       中等危險  如果在迴圈中使用該函式,確保檢查緩衝區邊界。

read      中等危險   如果在迴圈中使用該函式,確保檢查緩衝區邊界。

bcopy   低危險      確保緩衝區大小與它所說的一樣大。

fgets     低危險      確保緩衝區大小與它所說的一樣大。

memcpy低危險     確保緩衝區大小與它所說的一樣大。

snprintf低危險      確保緩衝區大小與它所說的一樣大。

strccpy低危險        確保緩衝區大小與它所說的一樣大。

strcadd低危險       確保緩衝區大小與它所說的一樣大。

strncpy低危險       確保緩衝區大小與它所說的一樣大。

vsnprintf低危險    確保緩衝區大小與它所說的一樣大。

c語言不安全庫 C語言 那些不安全的庫函式

c語言 那些不安全的庫函式 c和c 不能夠自動地做邊界檢查,邊界檢查的代價是效率。一般來講,c 在大多數情況下注重效率。然而,獲得效率的代價是,c 程式設計師必須十分警覺以避免緩衝區溢位問題。c語言標準庫中的許多字串處理和io流讀取函式是導致緩衝區溢位的罪魁禍首。我們有必要了解這些函式,在程式設計中...

C中不安全的函式以解決辦法彙總

這些函式由於設計的時候比較淳樸,並沒有做任何的越界檢測,主要容易 被溢位 只需要多設點檢查邊界,即安全。針對不安全函式及其解決辦法的詳細描述 第 一位公共敵人是 gets 永遠不要使用 gets 該函式從標準輸入讀入使用者輸入的一行文字,它在遇到 eof 字元或換行字元之前,不會停止讀入文字。也就是...

解決 C 不安全函式告警

錯誤 詳細資訊 c4996 scanf this function or variable may be unsafe.consider using scanf s instead.to disable deprecation,use crt secure no warnings.vs2019使用更...