ERROR: AddressSanitizer: stack-buffer-overflow on address [gcc -fsanitize=addres][gcc -Wall -Wextra -O3] ■バッファ… 続きを読む 【C言語】
バッファオーバーフロー
(buffer overflow)の見つけ方
タグ: メモリ破壊
【C言語】
【C言語】
Segmentation fault(コアダンプ)を調べる方法
■静的解析で敵を見つける ●gcc -Wall -Wextra -Oでコンパイルして警告を直す clang -Wall -Wextra -Oでもコンパイルして警告を直しましょう。 ●gcc -fanalyzer -O2で… 続きを読む 【C言語】
Segmentation fault(コアダンプ)を調べる方法
【C言語】
オーバーフローと
オーバーランの違い
(overFlow VS overRun)
warning: unsigned conversion from ‘int’ to ‘unsigned char’ changes value from ‘305419896’ to ‘120’ 警告: ‘… 続きを読む 【C言語】
オーバーフローと
オーバーランの違い
(overFlow VS overRun)
【C言語】
free(&自動変数)はバグ
(Free of Memory not on the Heap)
warning: ‘free’ called on unallocated object ‘自動変数’ 警告:自動変数の解放は未定義の動作[-Wfree-nonheap-object] ■1.自動変数を自分で解放してはい… 続きを読む 【C言語】
free(&自動変数)はバグ
(Free of Memory not on the Heap)
【C言語】
return(&自動変数)はバグ
warning: function returns address of local variable 警告:関数が自動変数のアドレスを返却した[-Wreturn-local-addr] ■1.自動変数のアドレスをret… 続きを読む 【C言語】
return(&自動変数)はバグ
【C言語】
for文回り過ぎ?
(バッファオーバーラン)
warning: iteration 1024 invokes undefined behavior 警告:ループカウンタ 1024 で未定義動作[-Waggressive-loop-optimizations] ■失敗… 続きを読む 【C言語】
for文回り過ぎ?
(バッファオーバーラン)
【C言語】
配列の添え字チェックを先に
if(buf[idx] && idx < MAX)
(style) Array index ‘idx’ is used before limits check. 警告:配列添え字を範囲チェック前に使った[(style)arrayIndexThenC… 続きを読む 【C言語】
配列の添え字チェックを先に
if(buf[idx] && idx < MAX)
【C言語】
文字列配列の要素数を指定すると終端文字’¥0’が入らず暴走する時がある
■1.暴走するstrlen ■2.暴走するprintf ■3.暴走するstrcmp ■4.暴走するstrcpy これらのプログラムが何と表示するかは動かしてみないと誰にもわかりません異常終了するかもしれません。 配列 a… 続きを読む 【C言語】
文字列配列の要素数を指定すると終端文字’¥0’が入らず暴走する時がある
【C言語】
malloc(strlen(src))
終端文字’¥0’の1byte足りない
warning: ‘strcpy’ writing one too many bytes into a region of a size that depends on ‘strlen’ 警告:strlen()で確保した… 続きを読む 【C言語】
malloc(strlen(src))
終端文字’¥0’の1byte足りない