C言語の設計ミスった危険な関数トップ10決めようぜ (215レス)
上下前次1-新
1(3): 2019/11/21(木)12:23 ID:T7Jjyyy1(1)調 AAS
gets関数とか
その他の例
https://www.jpcert.or.jp/sc-rules/c-msc24-c.html
2: 2019/11/21(木)15:39 ID:IZBPdnFY(1)調 AAS
Anal
3: 2019/11/22(金)14:16 ID:TbHXN4jn(1)調 AAS
当時の設計なら、gets の仕様はああなる。
4: 2019/11/22(金)14:46 ID:vYD7HZZ7(1/2)調 AAS
gets()をゲッツ、puts()をプッツと読んでたな
5(3): 2019/11/22(金)14:53 ID:eCK2aX+t(1)調 AAS
strtokの読み方で出身地が分かる
6: 2019/11/22(金)15:15 ID:vYD7HZZ7(2/2)調 AAS
>>5
それはストアトークと読んでた
7(1): 2019/11/23(土)04:11 ID:l4WHmfnE(1)調 AAS
最大のミスは、文字列そのものをデータ型としては持たずに、
文字列はヌルで終端された不定長の文字の配列であるとしたことにある。
8: 2019/11/23(土)06:08 ID:eMnkZzKn(1)調 AAS
どうすれば良かった?
9: 2019/11/23(土)06:14 ID:GXkG1Oic(1)調 AAS
関数だっつうてんのに
10: 2019/11/25(月)21:55 ID:E+NtJXA3(1)調 AAS
scanfだろjk
11(1): 2019/11/26(火)04:12 ID:As19A6dg(1)調 AAS
putchar()はプッチャーと読んでいた
12: 2019/11/26(火)12:29 ID:dAEqoOXB(1)調 AAS
scanf
strtok
feof
13: 2019/11/26(火)20:24 ID:feqSm/53(1)調 AAS
C言語の関数名ってまだリンカがシンボルの先頭から6文字までしか認識しなかった頃の名残だしな
変な短縮形が多い
14: 2019/11/27(水)03:05 ID:nQw9n1Di(1)調 AAS
strcpy()とか意図しようがしまいが簡単にメモリをぶっ壊せる
よくよく考えるとキチガイ過ぎる
15(2): 2019/11/27(水)12:17 ID:zdI/1sLa(1)調 AAS
C言語に安全性を求めるのは違う
16: 2019/11/27(水)12:31 ID:KtqS+hCI(1)調 AAS
time
localtime
17: 2019/11/27(水)13:15 ID:MN5dlGGA(1/2)調 AAS
>>15
ほんそれ
18(1): 2019/11/27(水)13:50 ID:pAkxzJaX(1)調 AAS
>>15
根本的な所を勘違いしてる。
C言語で安全性が求められないからと言って、
C言語で作ったアプリには安全性は求められるだろ?
例えば、getsは安全に使うことが不可能なんだよ。
19: 2019/11/27(水)14:42 ID:MN5dlGGA(2/2)調 AAS
大昔に出来た関数なんだから多くを求めるな
20: 2019/11/30(土)20:36 ID:4Da+M2q+(1/2)調 AAS
>>11
俺はプッキャーだった
21: 2019/11/30(土)20:38 ID:4Da+M2q+(2/2)調 AAS
>>18
> 例えば、getsは安全に使うことが不可能なんだよ。
ならgetsを使わずにgetcでやればいいだけ
22: 2019/11/30(土)21:25 ID:vRr1Hx4s(1)調 AAS
安全は考えないで設計したのでミスってはいない
23: 2019/11/30(土)22:19 ID:Zwer7NNs(1)調 AAS
アブドーラ・ザ・プッチャー
24: 2019/12/01(日)10:49 ID:uAQAPMuh(1)調 AAS
組み込みでC言語は使うけど、10個以上の標準関数って使わないな...。
25(1): 2019/12/01(日)12:47 ID:p3Z7Nr0h(1)調 AAS
memcpy / memset / memcmp
strlen / str(n)cpy / str(n)cmp / str(n)cat
これで10個
26(1): 2019/12/01(日)13:17 ID:W5IIwakz(1)調 AAS
組み込みで文字列扱わないことも多いね。
どんな製品でもほぼ使うのはmemset、memcpy、memcmpぐらいじゃない?
27: 2019/12/01(日)17:41 ID:YWi4MX0G(1)調 AAS
>>25
>>1のリンク先より
未チェックの時代遅れの関数
以下の関数を、未チェックの時代遅れの関数と定義する。
memcpy, strcpy, strncpy, strcat, strncat (一部抜粋)
半分あてはまってるなw
>>26
memcpyは危険なので使うのはやめましょう
28(1): 2019/12/01(日)20:53 ID:IKYJT3WJ(1)調 AAS
C言語ではなく標準ライブラリの話かい。
29: 2019/12/01(日)21:25 ID:7gLQ63yc(1)調 AAS
アセンブラより安全なら良いじゃん
30: 2019/12/02(月)00:51 ID:RIgVO6ZZ(1/2)調 AAS
memcpyが危険とか言うなら
C言語使うなってことになる
31: 2019/12/02(月)00:53 ID:RIgVO6ZZ(2/2)調 AAS
>>28
標準じゃない関数だと...
失敗談みたいなのを期待してた?
32(1): 2019/12/02(月)02:04 ID:AAYR8Yqw(1)調 AAS
>>1
セキュリティ考慮していない元関数より、代替関数の設計ミスが酷いな
strtodとかなにこれw
エラーの返し方がアホすぎる
33: 2019/12/02(月)06:48 ID:kJrDK+4B(1/2)調 AAS
>>32
> strtodとかなにこれw
> エラーの返し方がアホすぎる
そう言うのは改善案を提案しないと単なるアホの独り言にしかならんぞw
34: 2019/12/02(月)13:15 ID:EYnQFBh2(1/2)調 AAS
一体どういう考えで昔の人は、getsの仕様はあれでOKだと思ったんだろう?
どう考えてもバッファオーバーフローするやん?
しない方法なんて存在するの?
35: 2019/12/02(月)13:18 ID:xJykAg3Z(1)調 AAS
バッファオーバーフローしないデータを食わせれば良い
わざわざ変なデータを入力するヤツが悪い
って考えの時代の関数だ
36(2): 2019/12/02(月)13:41 ID:EYnQFBh2(2/2)調 AAS
でもさ、getsってキーボード入力やろ?
37: 2019/12/02(月)15:30 ID:LC/c96JG(1)調 AAS
gets は、もう、標準ライブラリにも入っていないので許せ
38: 2019/12/02(月)18:02 ID:kmSxls5X(1)調 AAS
>>36
わざわざ変なデータを入力するヤツが悪い
39: 2019/12/02(月)18:41 ID:E2hgf+6B(1)調 AAS
ダンディ坂野「gets!!」
40(1): 2019/12/02(月)20:50 ID:kJrDK+4B(2/2)調 AAS
>>36
1行80文字とかって決め打ちできる環境なんでしょ
自分しか使わないようなツールとかならこれで十分
って考え
41(2): 2019/12/03(火)01:51 ID:dBsSbed7(1/2)調 AAS
8ビットの整数型を char などというものにしたのも、アメリカ人は
自分たちの英語しか知らない田舎者であることを如実に表している。
42: 2019/12/03(火)09:14 ID:yN5r9ueQ(1)調 AAS
>>40
64kbでも広大な空間だったな
43: 2019/12/03(火)12:22 ID:90Sp73uq(1/2)調 AAS
>>41
実に田舎者の考え方で笑える
逆だよ、都会の人間は都会のことしか知らないし知る必要がない
なぜか田舎の人間は都会のことも知ろうとするw
44(1): 2019/12/03(火)12:29 ID:Uh1tIUQA(1)調 AAS
> 逆だよ、都会の人間は都会のことしか知らないし知る必要がない
だから世界が狭くて無知になりやすい
> なぜか田舎の人間は都会のことも知ろうとするw
だから世界が広い
45: 2019/12/03(火)12:51 ID:dBsSbed7(2/2)調 AAS
井の中の蛙 大海を知らず
されど空の蒼さを知る
46(1): 2019/12/03(火)13:25 ID:g2sdmHcp(1)調 AAS
C言語が出来た時の時代を考えれば十分
「変数名に日本語が使えない言語は糞」
って時代もそのうち来るよ
47: 2019/12/03(火)19:14 ID:90Sp73uq(2/2)調 AAS
>>44
残念ながらそうはなってないんだなw
狭く深くっていう世界だから
要するに田舎でな何をするにもオーバーヘッドが大きいってことな
今はネットでだいぶマシになったけどネット以前の情報収集考えたらアホでもわかる話
48: 2019/12/08(日)02:33 ID:aqWVKWA+(1)調 AAS
アホなデータ食わせるアホなやつのために堅牢な仕組みにする必要はない
49: 2019/12/11(水)01:29 ID:7IDmuKiG(1)調 AAS
>>41
元々は9bit
50: 2019/12/11(水)06:55 ID:IbA4V9X0(1)調 AAS
>>46
メモリが640kバイトしか使えなかった頃からのものだしな
51: 2019/12/11(水)07:59 ID:yA/FdCBI(1)調 AAS
>>5
ストラトック
52: 2019/12/11(水)15:20 ID:JkExA39E(1)調 AAS
大昔って端末やエディタなんかでも1行256とか1024バイト程度しか扱えなかったばず
53: 2019/12/11(水)15:32 ID:8OP/pbId(1)調 AAS
256 の時代は割と長かった希ガス
54: 2019/12/13(金)06:37 ID:o1f1J6fH(1)調 AAS
昔は1行の長さを先に決めてファイルをクリエイトしました
途中で変更はできません
55: 2019/12/14(土)13:26 ID:TlZt0bii(1)調 AAS
関数そのものじゃないが
breakにラベル指定出来なかったのは設計ミスやろ
56: 2019/12/14(土)13:54 ID:JwYnIOEa(1/2)調 AAS
その為のgoto
上下前次1-新書関写板覧索設栞歴
あと 159 レスあります
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル
ぬこの手 ぬこTOP 0.013s