值得注意的函式

2021-08-30 18:58:26 字數 1352 閱讀 5838

函式 嚴重性 解決方案

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 低危險 確保緩衝區大小與它所說的一樣大。

UE C 值得注意的坑

申明了forceinline關鍵字的內聯函式,不能和void一起使用。不然就會報錯。虛幻引擎中,基本資料型別包括,uint8 uint16 uint32 uint64 int8 int16 int32 int64 float。但是在藍圖中只支援uint8和int32。其他型別在c 中是支援的,但是如...

防範sql注入值得注意地方

sql注入是大家基本都清楚,一般來說用引數化就能解決注入的問題,也是最好的解決方式。有次技術群裡問到乙個問題,如下圖 很顯然tablename是外部傳遞過來的,暫時不考慮具體的業務環境,但如果以select from table 把錶名稱當引數肯定是不能執行的,如果是拼接sql會有注入的危險。那麼此...

1017 A除以B(值得注意)

本題要求計算 a b,其中 a 是不超過 1000 位的正整數,b 是 1 位正整數。你需要輸出商數 q 和餘數 r,使得 a b q r 成立。輸入格式 輸入在一行中依次給出 a 和 b,中間以 1 空格分隔。輸出格式 在一行中依次輸出 q 和 r,中間以 1 空格分隔。輸入樣例 12345678...