アカウント名:
パスワード:
pledge は流行ると思いますか?
まず pledge がどういうものかを説明します。プログラムって、最初は設定ファイルを読んだり一時ファイルを開いたりするけど、その後メインループに入ったら権限を殆ど必要としないことが多いですよね。だから、 コマンドラインオプション等に応じて [openbsd.org] メインループ直前で権限を落とすという仕組みなんです。
だから最初は tame (調教する [openbsd.org]) という名前の関数でした。獰猛な野獣 (いったん任意のコマンド実行を許す脆弱性があると何でもできちゃう) を手なずける (脆弱性があっても殆どのシステムコールが実行不可能) という感じですね。
現在では主語が変
> tame(TAME_STDIO | TAME_CMSG | TAME_GETPW | TAME_PROC | TAME_DNS, NULL);>というインターフェースにするのが普通の発想じゃないかと思うんですが、この pledge は> tame("stdio cmsg getpw proc dns", NULL);
後者の方が,今風のAPIだと思います
理由は3つ
1) 後者のほうが短い(≒可読性も高い)
古典的なC言語だとtame(TAME_STDIO | TAME_CMSG | TAME_GETPW | TAME_PROC | TAME_DNS, NULL);はよく見かける記述ですが,これ冗長だと思いませんか?
2) 今時のCPUは高速なので,文字列処理は大したオーバヘッドにならない
特に tame() は頻繁に実行する処理で
個人的には,3番目の理由だけで,私は定数をORで指定する方式は選択肢にさえなりません
ですねぇ。加えて言うと、文字列なら他の言語との親和性も高くなりますしね。ヘッダファイル等での余計な定義も不要になりますし。
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
日々是ハック也 -- あるハードコアバイナリアン
pledge (スコア:5, 興味深い)
pledge は流行ると思いますか?
まず pledge がどういうものかを説明します。
プログラムって、最初は設定ファイルを読んだり一時ファイルを開いたりするけど、
その後メインループに入ったら権限を殆ど必要としないことが多いですよね。
だから、 コマンドラインオプション等に応じて [openbsd.org]
メインループ直前で権限を落とすという仕組みなんです。
だから最初は tame (調教する [openbsd.org]) という名前の関数でした。
獰猛な野獣 (いったん任意のコマンド実行を許す脆弱性があると何でもできちゃう) を
手なずける (脆弱性があっても殆どのシステムコールが実行不可能) という感じですね。
現在では主語が変
Re: (スコア:1)
> tame(TAME_STDIO | TAME_CMSG | TAME_GETPW | TAME_PROC | TAME_DNS, NULL);
>というインターフェースにするのが普通の発想じゃないかと思うんですが、この pledge は
> tame("stdio cmsg getpw proc dns", NULL);
後者の方が,今風のAPIだと思います
理由は3つ
1) 後者のほうが短い(≒可読性も高い)
古典的なC言語だと
tame(TAME_STDIO | TAME_CMSG | TAME_GETPW | TAME_PROC | TAME_DNS, NULL);
はよく見かける記述ですが,これ冗長だと思いませんか?
2) 今時のCPUは高速なので,文字列処理は大したオーバヘッドにならない
特に tame() は頻繁に実行する処理で
Re:pledge (スコア:2)
ですねぇ。加えて言うと、文字列なら他の言語との親和性も高くなりますしね。ヘッダファイル等での余計な定義も不要になりますし。
ほえほえ