アカウント名:
パスワード:
それ直したっていうコミット [www.sudo.ws]とその部分のソース [www.sudo.ws]見てみたんだけど、一瞬直し損なったのかと空目するような直し方だった。多分肝心なのは
+ cp = buf;
だと思うので、writeがコケる状態で文字を入れてはsudo_term_killを入力してleftとcpを乖離させる攻撃だったのかなと思うのだが、write失敗でbreakしても入力ループ自体抜けてしまい問題の少なそうなsudo_term_eraseで
そうじゃないでしょ。
コピペ元(って便宜上呼ぶけど)のbreakは直近のwhile (cp > buf) の{}から抜けるために使ってるから、全く正しい。ところが、コピペ先の{}はwhileじゃなくてifだから、ここでbreakを呼ぶと大元のwhile(--left)から抜けてしまう。読み込んでないけど、修正された差分をみると、これは完全にやらかしてたってことだよ。コピペまでして対称的に書いてるつもりなのに全く違う動作になるから、気付いたら青ざめる系のうっかりだ。
#インクリメントの前置後置で笑ってしまう。
やっぱgotoって必要だよなーって思う。どこからでも飛べてどこへでも飛べると複雑になりすぎるのでナウい言語(21世紀初頭くらい)の制限が必要だけども。
使い手のスキル次第で猛毒になるだけですよねホント。。そしてそんなのはコンパイラは弾けない…#同一メソッド内コードクローンも弾けそうで弾けない…
より多くのコメントがこの議論にあるかもしれませんが、JavaScriptが有効ではない環境を使用している場合、クラシックなコメントシステム(D1)に設定を変更する必要があります。
あと、僕は馬鹿なことをするのは嫌いですよ (わざとやるとき以外は)。-- Larry Wall
直ってんのか不安になる直し方 (スコア:0)
それ直したっていうコミット [www.sudo.ws]とその部分のソース [www.sudo.ws]見てみたんだけど、
一瞬直し損なったのかと空目するような直し方だった。
多分肝心なのは
だと思うので、
writeがコケる状態で文字を入れてはsudo_term_killを入力してleftとcpを乖離させる攻撃だったのかなと思うのだが、
write失敗でbreakしても入力ループ自体抜けてしまい問題の少なそうなsudo_term_eraseで
Re: (スコア:0)
そうじゃないでしょ。
コピペ元(って便宜上呼ぶけど)のbreakは直近のwhile (cp > buf) の{}から抜けるために使ってるから、全く正しい。ところが、コピペ先の{}はwhileじゃなくてifだから、ここでbreakを呼ぶと大元のwhile(--left)から抜けてしまう。読み込んでないけど、修正された差分をみると、これは完全にやらかしてたってことだよ。コピペまでして対称的に書いてるつもりなのに全く違う動作になるから、気付いたら青ざめる系のうっかりだ。
#インクリメントの前置後置で笑ってしまう。
Re:直ってんのか不安になる直し方 (スコア:0)
やっぱgotoって必要だよなーって思う。
どこからでも飛べてどこへでも飛べると複雑になりすぎるのでナウい言語(21世紀初頭くらい)の制限が必要だけども。
Re: (スコア:0)
使い手のスキル次第で猛毒になるだけですよねホント。。
そしてそんなのはコンパイラは弾けない…
#同一メソッド内コードクローンも弾けそうで弾けない…