Peringatan C28726
Penggunaan API yang Dilarang: '*function-name' tidak aman dan telah ditandai sebagai tidak digunakan lagi.
Peringatan ini menunjukkan bahwa fungsi sedang digunakan yang telah dilarang dan memiliki penggantian yang lebih kuat atau aman. Kesalahan spesifik ini menunjukkan bahwa fungsi yang dilarang berpotensi meluapkan buffer.
Keterangan
Daftar semua fungsi terlarang yang dicakup oleh kesalahan ini, mengapa fungsi tersebut dilarang, dan penggantian yang direkomendasikan dapat ditemukan setelah contoh berikut.
Nama analisis kode: BANNED_API_USAGEL2
Contoh
Kode berikut menghasilkan peringatan ini:
void example_func()
{
char user_input[10];
scanf(ā%sā, input); // scanf is banned for security purposes
}
Hal ini disebabkan oleh penggunaan fungsi scanf
yang tidak aman. scanf
memang menempatkan batasan apa pun pada ukuran data yang disalin ke buffer. Untuk memperbaiki masalah ini, kita dapat menggunakan scanf_s
, penggantian yang lebih aman untuk fungsi ini. scanf_s
mengharuskan pengembang untuk menentukan berapa banyak byte yang dimaksudkan untuk disalin. scanf_s
hanya akan memastikan bahwa banyak byte yang disalin. Misalnya, kode berikut lebih aman:
void example_func()
{
char user_input[10];
scanf_s(ā%9sā, input, sizeof(input)); // 9 bytes leaves room for the \0 byte at the end
}
Fungsi Terlarang
CATATAN: Daftar ini sedang diperbarui dan ditingkatkan secara aktif
API Terlarang | Penggantian | Alasan / Catatan |
---|---|---|
_itoa |
_itoa_s |
Tidak mengakhiri NULL |
_i64toa |
_i64toa_s |
Tidak mengakhiri NULL |
_i64tow |
_i64tow_s |
Tidak mengakhiri NULL |
_mbccpy |
_mbccpy_s |
|
_mbscpy |
_mbscpy_s |
|
_mbsnbcpy |
_mbsnbcpy_s |
|
_mbsnbcat |
_mbsnbcat_s |
|
_mbsncat |
_mbsncat_s |
|
_mbsncpy |
_mbsncpy_s |
|
_mbstok |
_mbstok_s |
|
_snscanf |
_snscanf_s |
|
_snwscanf |
_snwscanf_s |
|
_ui64toa |
ui64toa_s |
|
_ui64tow |
_ui64tow_s |
|
_ultoa |
_ultoa_s |
|
CharToOemA |
||
CharToOemBuffA |
||
CharToOemBuffW |
||
CharToOemW |
||
OemToCharA |
||
OemToCharBuffA |
||
OemToCharBuffW |
||
scanf |
scanf_s |
Deteksi kesalahan terbatas |
sscanf |
sscanf_s |
Deteksi kesalahan terbatas |
wmemcpy |
wmemcpy_s |
Deteksi kesalahan terbatas |
wnsprintfW |
||
wscanf |
wscanf_s |