スタック保護をオフに、私はこのCコードを持っている原因:は、私は思っていた
#include <stdio.h>
#include <string.h>
#include <stdlib.h>
int fillBuffer(int argc, char *argv[]) {
char bufferA[4] = "aaa";
char bufferB[4] = "bbb";
if(argc > 1)
strcpy(bufferB, argv[1]);
printf("bufferA: %s\n", bufferA);
printf("bufferB: %s\n", bufferB);
return 0;
}
int main(int argc, char *argv[]) {
fillBuffer(argc, argv);
return 0;
}
をし、私が使用してスタック保護をオフにしてみました:-fno-スタックプロテクターを
とするとき私はやってそれを実行しよう:
bufferA:bufferB
F: 01 FFFFF ./programプログラム出力に、5F(キーをエスケープ)私はbufferAがどのようにfになるのか分かりません。誰も私にこれを説明することはできますか?
あなたは 'argv [1]'が '3'文字であることを確信していますか?... – LPs
未定義の動作、何かが起こる可能性があります。これは一つの可能性にすぎません。 –
Cコードがちょうど私たちに与えられました –