C语言中不安全的函数
生活随笔
收集整理的這篇文章主要介紹了
C语言中不安全的函数
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
這些函數(shù)由于設(shè)計的時候比較淳樸,并沒有做任何的越界檢測,主要容易"被溢出",只需要多設(shè)點(diǎn)檢查邊界,即安全。
| 函數(shù) | 嚴(yán)重性 | 解決方案 |
| gets | 最危險 | 使用 fgets(buf, size, stdin)。這幾乎總是一個大問題! |
| strcpy | 很危險 | 改為使用 strncpy。 |
| strcat | 很危險 | 改為使用 strncat。 |
| sprintf | 很危險 | 改為使用 snprintf,或者使用精度說明符。 |
| scanf | 很危險 | 使用精度說明符,或自己進(jìn)行解析。 |
| sscanf | 很危險 | 使用精度說明符,或自己進(jìn)行解析。 |
| fscanf | 很危險 | 使用精度說明符,或自己進(jìn)行解析。 |
| vfscanf | 很危險 | 使用精度說明符,或自己進(jìn)行解析。 |
| vsprintf | 很危險 | 改為使用 vsnprintf,或者使用精度說明符。 |
| vscanf | 很危險 | 使用精度說明符,或自己進(jìn)行解析。 |
| vsscanf | 很危險 | 使用精度說明符,或自己進(jìn)行解析。 |
| streadd | 很危險 | 確保分配的目的地參數(shù)大小是源參數(shù)大小的四倍。 |
| strecpy | 很危險 | 確保分配的目的地參數(shù)大小是源參數(shù)大小的四倍。 |
| strtrns | 危險 | 手工檢查來查看目的地大小是否至少與源字符串相等。 |
| realpath | 很危險(或稍小,取決于實(shí)現(xiàn)) | 分配緩沖區(qū)大小為 MAXPATHLEN。同樣,手工檢查參數(shù)以確保輸入?yún)?shù)不超過 MAXPATHLEN。 |
| syslog | 很危險(或稍小,取決于實(shí)現(xiàn)) | 在將字符串輸入傳遞給該函數(shù)之前,將所有字符串輸入截成合理的大小。 |
| getopt | 很危險(或稍小,取決于實(shí)現(xiàn)) | 在將字符串輸入傳遞給該函數(shù)之前,將所有字符串輸入截成合理的大小。 |
| getopt_long | 很危險(或稍小,取決于實(shí)現(xiàn)) | 在將字符串輸入傳遞給該函數(shù)之前,將所有字符串輸入截成合理的大小。 |
| getpass | 很危險(或稍小,取決于實(shí)現(xiàn)) | 在將字符串輸入傳遞給該函數(shù)之前,將所有字符串輸入截成合理的大小。 |
| getchar | 中等危險 | 如果在循環(huán)中使用該函數(shù),確保檢查緩沖區(qū)邊界。 |
| fgetc | 中等危險 | 如果在循環(huán)中使用該函數(shù),確保檢查緩沖區(qū)邊界。 |
| getc | 中等危險 | 如果在循環(huán)中使用該函數(shù),確保檢查緩沖區(qū)邊界。 |
| read | 中等危險 | 如果在循環(huán)中使用該函數(shù),確保檢查緩沖區(qū)邊界。 |
| bcopy | 低危險 | 確保緩沖區(qū)大小與它所說的一樣大。 |
| fgets | 低危險 | 確保緩沖區(qū)大小與它所說的一樣大。 |
| memcpy | 低危險 | 確保緩沖區(qū)大小與它所說的一樣大。 |
| snprintf | 低危險 | 確保緩沖區(qū)大小與它所說的一樣大。 |
| strccpy | 低危險 | 確保緩沖區(qū)大小與它所說的一樣大。 |
| strcadd | 低危險 | 確保緩沖區(qū)大小與它所說的一樣大。 |
| strncpy | 低危險 | 確保緩沖區(qū)大小與它所說的一樣大。 |
| vsnprintf | 低危險 | 確保緩沖區(qū)大小與它所說的一樣大。 |
總結(jié)
以上是生活随笔為你收集整理的C语言中不安全的函数的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: numpy 矩阵计算例子
- 下一篇: leetcode Longest Pa