LoginSignup
7
8

More than 5 years have passed since last update.

BOF対策

Last updated at Posted at 2014-10-16

C/C++でBOF(バッファオーバーフロー)を引き起こさないようにするための方法を表にまとめました。

※{}で囲ってある部分については、適当な整数に置き換える

BOFを引き起こす可能性がある関数 代替案/対策
gets( dest ) fgets( dest , sizeof( dest ) , stdin )
strcpy( dest , src ) memset( dest , 0 , sizeof( dest ) ) -> strncpy( dest , src , sizeof( dest ) - 1 )
strcat( dest , src ) strncat( dest , src , sizeof( dest ) - strlen( dest ) - 1 )
sprintf( dest , ”%s” , data ) sprintf( dest , ”%.{B}s” , data )
snprintf( dest , sizeof( dest ) , ”%.{B}s” , data )
({B}+フォーマット指定子で指定されていない部分の文字数=destの要素数-1)
scanf( "%s” , dest ) scanf( ”%.{B}s” , dest )
({B}+フォーマット指定子で指定されていない部分の文字数=destの要素数-1)
sscanf( str , "%s” , data ) sscanf( str , ”%.{B}s” , data )
({B}+フォーマット指定子で指定されていない部分の文字数=destの要素数-1)
fscanf( fp , "%s” , data ) fscanf( fp , ”%.{B}s” , data )
({B}+フォーマット指定子で指定されていない部分の文字数=destの要素数-1)
getchar()
fgetc( fp )
getc( fp )
使用する際にバッファ境界チェックを行う。
7
8
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
7
8