
No.1ベストアンサー
- 回答日時:
インターポジショニングといいます。
Cではライブラリ関数名と同じ名前の関数をユーザが定義すると、特に警告することも無くユーザ定義関数を採用する仕様になっているのですが、あるとき、ライブラリ関数名をすべて暗記していないプログラマが、知らずに「mktemp」という名前の関数を自作してしまったため、リンク時にライブラリのmktempがすべてこれに置き換えられてしまい、大騒ぎになったという故事があります。
それ以来、ライブラリ関数のmktempを実行すると、「使わない方がいいですよ」とメッセージを表示するようになったという訳です。
余談ですが、他にもgets()などを使うと、やはり故事にちなんだメッセージが出るはずです。(gets()はバッファサイズを定義しないために、それを利用したwormが作られたことがあるため、現在では推奨されていません)
No.3
- 回答日時:
セキュリティ上の問題がある関数を使ったときに出る警告であることは、既に先の方が回答されています。
これはgccというよりはglicが出している警告です。
glibcのソースを見ていただければ分かることですが、mktemp関数の定義の下のところに、
link_warning (mktemp, "the use of `mktemp' is dangerous, better use `mkstemp'")
というコードが書かれています。
他にも、gets関数などにも同様の記述があります。
No.2
- 回答日時:
参考URLのバグのところだと思います。
-- 抜粋 --
BSD 4.3 系の実装や XXXXXX をプロセス id と1文字により置き換える方式ではせいぜい26の名前を返すことができるにすぎない。この名前は簡単に推測できることや、その名前がすでに存在しているかどうかテストして、そのファイルをオープンする間に競合がある事から、 mktemp() を使うのは毎回セキュリティリスクをおかすことになる。
----
参考URL:http://www.linux.or.jp/JM/html/LDP_man-pages/man …
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Vba Replace関数について教えて...
-
CSSが全く分かりません、お助け...
-
DLLファイルの逆コンパイラにつ...
-
バッチファイルで以下のような...
-
CPUが16bitでも32bitOSでコンパ...
-
gccを行ってもexeファイルが生...
-
c言語
-
VisualStudio2022でC言語プログ...
-
Windows Formアプリからコンソ...
-
visual studio 2022でのC#プロ...
-
C言語の関数のextern宣言
-
プログラマー達は何故、プログ...
-
PIC12F1822でLED調光器を作りたい
-
最初に聞かれたこと
-
C言語 関数、変数の宣言について
-
C言語について(初心者)
-
プログラミングc++を全く分か...
-
あってる
-
DNCL(共テ用プログラミング言語...
-
DNCL(共テ用プログラミング言語...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Windows Media Playerを開くと...
-
Google ColaboでGUI作成
-
python urlopen error について...
-
iCloudフォトライブラリ内の画...
-
declaration of 'index' shadow...
-
C言語について。
-
Dreamweaverのライブラリが反映...
-
boostのアンインストールについて
-
DLL読み込み時エラー
-
マウスのクリックを自動で
-
sleep関数
-
ライブラリ作成時のグローバル...
-
unix-c と linux-c の違いは?
-
gcc に mktemp 危険と怒られ...
-
【VBA】イベントログの取得
-
設定ファイルを扱うライブラリ...
-
Ps+のフリープレイでDestiny2の...
-
outp関数について
-
C,C++,Win32APIだけでSFCレベル...
-
LIBCMT.LIBをリンクしてコンパ...
おすすめ情報