使用不推薦使用的或過時的函數可能表明存在忽略的代碼。
隨著編程語言的發展,一些函數有時會被棄用,原因如下:
— 為了改進該編程語言。
— 對操作的有效性、安全性有更深一步的了解。
— 某些操作的管理規則發生了變化。
在編程語中,函數會經常被刪除或由新的替代函數所取代,因為新的函數能以我們所期望的方式從多種角度執行相同的任務。
示例:以下代碼使用了不被推薦的函數 getpw() 來檢驗明文密碼是否與用戶加密密碼相匹配。如果密碼是有效的,則函數將 result 設為1;如果無效,將其設為 0。
...
getpw(uid, pwdline);
for (i=0; i<3; i++){
cryptpw=strtok(pwdline, ":");
pwdline=0;
}
result = strcmp(crypt(plainpw,cryptpw), cryptpw) == 0;
...
getpw() 函數存在問題,因為它可能會使傳遞給第二個參數的緩沖區溢出。因此,由于這一漏洞,我們將使用 getpwuid() 函數來代替 getpw() 函數,雖然 getpwuid() 函數看上去與 getpw() 沒什么不同,但是它會返回一個指向靜態分配結構的指針,這將有助于減小安全上的風險。[1] Standards Mapping - Common Weakness Enumeration - (CWE) CWE ID 477