ERROR: AddressSanitizer: stack-buffer-overflow on address
[gcc -fsanitize=addres]
[gcc -Wall -Wextra -O3]
■バッファオーバーフローのバグ例
#include <stdio.h>
#include <string.h>
void buffer_overflow(char* input) {
char buffer[5];
strcpy(buffer, input);// バッファオーバーフローが発生する可能性がある
puts(buffer);
}
int main(void) {
char *jugemu = "寿限無寿限無五劫のすり切れ海砂利水魚の水行末雲来末風来末~~~";
buffer_overflow(jugemu);
}
この問題は以下のオプションで検出できます。
gcc -fsanitize=address 最適化すると検出できなくなる
gcc -Wall -Wextra -O3で 最適化しないと検出できない
参考:
汝が
“foo”とタイプするところで
“supercalifragilisticexpialidocious”とタイプする者が、
いつの日か必ずいるからである
