1
什麼是與strncpy()
安全問題:
function foo(char * param) {
char local[100];
/* do stuff */
strncpy(local, param, strlen(param));
/* do more stuff */
}
什麼是與strncpy()
安全問題:
function foo(char * param) {
char local[100];
/* do stuff */
strncpy(local, param, strlen(param));
/* do more stuff */
}
通常情況下,最大長度(3'rd)參數strncpy(3)
會目的地的大小,而不是源的大小。將轉移限制在源的大小上確實沒有意義,因爲這是使用更危險的明文strcpy(3)
轉移的最大值。
而且,爲了回答這個問題,問題在於這不是memory-safe operation,所以攻擊者可以提供一個比緩衝區長的字符串,它會覆蓋堆棧中的代碼,並且如果仔細安排,可以執行任意代碼攻擊者。
定義*安全*(在您的問題的上下文中)。 –