バッファオーバーランの危険性と対策とは? わかりやすく解説

Weblio 辞書 > 辞書・百科事典 > ウィキペディア小見出し辞書 > バッファオーバーランの危険性と対策の意味・解説 

バッファオーバーランの危険性と対策

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2020/10/02 16:40 UTC 版)

strcat」の記事における「バッファオーバーランの危険性と対策」の解説

strcatは、先程示した実装例見て分かる通りs1容量について一切関知しない。よって、s1の指す配列範囲越えて、s2が書き込まれてしまうバッファオーバーラン恐れがあるバッファオーバーランによってメモリ破壊されたり、プログラムが異常動作したり、クラッシュしたりする危険性がある。簡単な対策として、冗長になるが事前に領域長計算を実行する例を示す。 char s1[80] = "filename";const size_t bufsize = sizeof(s1); /* 固定長char配列要素数を求める */const size_t s1len = strlen(s1);const char* s2 = ".exe";const size_t s2len = strlen(s2);if (s1len + s2len + 1 <= bufsize) /* 1は終端NUL文字用 */{ strcat(s1, s2); /* 以下でも可能だが、さらに冗長なるだけで意味はない。 */ /*strncat(s1, s2, s2len);*/} 上の例では、事前にchar配列s1全体のバッファサイズすなわち要素数と、使用済み領域長さおよび書き込み必要な領域長さ比較することによって、配列空き容量超えた書き込みバッファオーバーラン)を防ぐことができる。なお、さらに異常系や汎用目的考慮するならば、s1内容が未初期化終端NUL文字含まれていない場合や、s1len + s2len + 1算術オーバーフロー起こしてしまう場合への対処も必要となってくる。 ただし、バッファオーバーラン防止するための事前領域長計算は、余分な時間的オーバーヘッド複雑さを伴う。字数制限付き文字列連結関数としてstrncatも存在するが、書き込み先のバッファサイズを指定できるわけではないので、やはりstrcat同様の危険性を持つことに変わりはない。 代替として、標準ライブラリ一部ではないがstrlcatやstrcat_sを使用することのできる処理系もある。そのほか単純な文字列連結用途としてはややオーバースペックではあるが、snprintfを使用する方法もある。

※この「バッファオーバーランの危険性と対策」の解説は、「strcat」の解説の一部です。
「バッファオーバーランの危険性と対策」を含む「strcat」の記事については、「strcat」の概要を参照ください。


バッファオーバーランの危険性と対策

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2020/10/02 16:40 UTC 版)

strcpy」の記事における「バッファオーバーランの危険性と対策」の解説

strcpyコピー先のバッファ長さ関知しない。もしコピー元の文字列長さコピー先のバッファ長さよりも大き場合は、バッファオーバーランによってメモリ破壊されたり、プログラムが異常動作したり、クラッシュしたりする危険性がある。簡単な対策として、冗長になるが事前に領域長計算を実行する例を示す。 char dst[80];const size_t bufsize = sizeof(dst); /* 固定長char配列要素数を求める */const char* src = "abc 123";const size_t srclen = strlen(src);if (srclen + 1 <= bufsize) /* 1は終端NUL文字用 */{ strcpy(dst, src); /* 以下でも可能だが、さらに冗長なるだけで意味はない。 */ /*strncpy(dst, src, srclen + 1);*/ /* +1最後に終端NUL文字付加するために必要 */} 字数制限付き文字列コピー関数としてstrncpyも存在するが、書き込み先のバッファサイズを指定できるわけではないので、やはりstrcpy同様の危険性を持つことに変わりはない。 代替として、標準ライブラリ一部ではないがstrlcpyやstrcpy_sを使用することのできる処理系もある。そのほか単純な文字列コピー用途としてはややオーバースペックではあるが、snprintfを使用する方法もある。

※この「バッファオーバーランの危険性と対策」の解説は、「strcpy」の解説の一部です。
「バッファオーバーランの危険性と対策」を含む「strcpy」の記事については、「strcpy」の概要を参照ください。

ウィキペディア小見出し辞書の「バッファオーバーランの危険性と対策」の項目はプログラムで機械的に意味や本文を生成しているため、不適切な項目が含まれていることもあります。ご了承くださいませ。 お問い合わせ



英和和英テキスト翻訳>> Weblio翻訳
英語⇒日本語日本語⇒英語
  

辞書ショートカット

すべての辞書の索引

「バッファオーバーランの危険性と対策」の関連用語

1
32% |||||

2
32% |||||

バッファオーバーランの危険性と対策のお隣キーワード
検索ランキング

   

英語⇒日本語
日本語⇒英語
   



バッファオーバーランの危険性と対策のページの著作権
Weblio 辞書 情報提供元は 参加元一覧 にて確認できます。

   
ウィキペディアウィキペディア
Text is available under GNU Free Documentation License (GFDL).
Weblio辞書に掲載されている「ウィキペディア小見出し辞書」の記事は、Wikipediaのstrcat (改訂履歴)、strcpy (改訂履歴)の記事を複製、再配布したものにあたり、GNU Free Documentation Licenseというライセンスの下で提供されています。

©2025 GRAS Group, Inc.RSS