就像我们拥有_stprintf
的安全版本,即hp fortify bufferoverflow的stprintf_s
一样
警告,那么我们可以使用什么代替wsprintf
()?我试过了wsprintf_s
,它没有用。
任何人都可以解释b / w _stprintf
和wsprintf
的区别吗?或者,我们可以使用stprintf_s
作为wsprintf
的安全版本。
答案 0 :(得分:2)
选项记录在wsprintf:
下注意请勿使用。请考虑使用以下功能之一:StringCbPrintf,StringCbPrintfEx,StringCchPrintf或StringCchPrintfEx。请参阅安全注意事项。
如果您希望使用更接近$url='https://www.youtube.com/watch?v=8Zq3KCBed5Q';
$file_path = drupal_realpath($url);
$file->uid = 1;
$file->filename = 'dsdss';
$file->uri = $url;
$file->filemime = file_get_mimetype($file_path);
$file->type = 'video';
$file->status = 1;
$file_exists = file_save($file);
$node->field_videoyou[$node->language]['0'] = (array) $file_exists;
的安全功能,请使用swprintf_s或_snwprintf_s。
wsprintf
是一个预处理器宏,它将调用映射到ANSI或UNICODE版本。映射表记录在sprintf, _sprintf_l, swprintf, _swprintf_l, __swprintf_l:
_stprintf
_stprintf_s的映射表:
TCHAR.H routine | _UNICODE & _MBCS not defined | _MBCS defined | _UNICODE defined
----------------+------------------------------+---------------+-----------------
_stprintf | sprintf | sprintf | _swprintf