-4
我是新來的,我似乎無法理解你能幫我找出可能溢出的緩衝區,爲什麼?什麼是可以溢出的緩衝區的名稱buf,msg,len或out
#include <stdio.h>
#include <string.h>
#define S 100
#define N 1000
int main(int argc, char *argv[]) {
char out[S];
char buf[N];
char msg[] = "Welcome to the argument echoing program\n";
int len = 0;
buf[0] = '\0';
printf(msg);
while (argc) {
sprintf(out, "argument %d is %s\n", argc-1, argv[argc-1]);
argc--;``
strncat(buf,out,sizeof(buf)-len-1);
len = strlen(buf);
}
printf("%s",buf);
return 0;
}
首先,如果你在這裏發佈代碼,請正確縮進它。這太難讀了。然後,我們不在這裏做你的功課。要解決這個問題,請檢查寫入其中一個緩衝區的所有函數,並考慮可能溢出的情況。 – 2014-10-27 09:15:37
'len = strlen(buf);'似乎支付線性問題的二次成本。 – 2014-10-27 09:19:40
@KerrekSB非常感謝你在那條線上 – NINJAGAIDEN 2014-10-27 09:30:34