我決定在一些舊的代碼上運行一個靜態分析工具,並且發現了一些我正在使用sprintf的地方。該工具建議使用vsnprintf或snprintf替換調用,因爲sprintf不會對緩衝區溢出進行任何類型的邊界檢查。snprintf或vsnprintf更好,我如何確保我安全地使用它們?
我可以很容易地只是做了查找和調用替換,以便它使用的snprintf或vsnprintf代替,但我想,以確保沒有什麼別的需要,爲了使功能安全做
在某些情況下,使用的字符串來源於用戶輸入,在某些情況下它們不會。
有沒有人有任何建議如何做到這一點的權利?
「snprintf或vsnprintf更好」這取決於您是否有可變參數或「va_list」。 – 2012-09-02 19:03:45
便攜性是一個問題嗎? – robert
不擔心可移植性,沒有。 – petFoo