Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

wstringをWCHAR[N]にコピーする処理でNUL終端が付かない不具合を修正 #1235

Conversation

berryzplus
Copy link
Contributor

PR の目的

PR #1034 で入れた不具合を修正します。

カテゴリ

  • 不具合修正

PR の背景

#1234 (comment) 参照。

修正対象は正規表現で抽出しました。

m/\b(.+?)\s*\.\s*copy\s*\(\s*(.+?)\s*,\s*\1\s*\.\s*length\s*\(\s*\)/

対象は2箇所です。

PR のメリット

PR のデメリット (トレードオフとかあれば)

  • 特にありません。

PR の影響範囲

  • 以下のアプリ(=サクラエディタ)の機能に影響します。
    • タイプ別設定 - キーワードヘルプ一覧ダイアログ(プロパティページ)
    • タイプ別設定 インポート処理

関連チケット

close #1234
amend #1034

参考資料

正規表現で対象を抽出(対象2箇所)

m/\b(.+?)\s*\.\s*copy\s*\(\s*(.+?)\s*,\s*\1\s*\.\s*length\s*\(\s*\)/
@AppVeyorBot
Copy link

@ds14050
Copy link
Contributor

ds14050 commented Apr 22, 2020

修正対象は正規表現で抽出しました。

対象の抽出はそれで良しとして、効果の確認は個別ですよね?

@beru
Copy link
Contributor

beru commented Apr 22, 2020

本来コピーが不要な箇所でコピーをしてる事から直したほうが良いと思います。

void CTextInputStream::ReadLineW(CNativeW& line);

それはつまり上記のメソッドを追加する事になりますが、それよりとりあえず早期に不具合を直したい感じでしょうか?

Copy link
Contributor

@beru beru left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

動作確認はしてませんが変更内容は問題ないと思います。
バッファオーバーランが起きうる記述のままなのが気になりますが別のPRで対処入れようと思います。

@berryzplus
Copy link
Contributor Author

レビューありがとうございます。
書き込み先バッファサイズを考慮してない問題がありますが、
crash対策にはなってると思うので、とりあえずマージしてしまいます。

@berryzplus berryzplus merged commit 82e4761 into sakura-editor:master Apr 23, 2020
@berryzplus berryzplus deleted the feature/amend_pr1034_copy_of_wstring branch April 23, 2020 03:23
@ds14050
Copy link
Contributor

ds14050 commented Apr 23, 2020

@beru「動作確認はしてませんが

@beru「変更内容は問題ないと思います。

@beru「バッファオーバーランが起きうる記述のままなのが気になりますが別のPRで対処入れようと思います。

@berryzplus「書き込み先バッファサイズを考慮してない問題がありますが、crash対策にはなってると思うので

この PR がマージされたことにより Issue #1234 が閉じられました。何をもってそれを是としましたか。

@ds14050
Copy link
Contributor

ds14050 commented Apr 23, 2020

@beru さんには特に次のような表現に警戒心を持ってもらいたい。信頼できる者を見極めるために。

@berryzplusコンテキスト的に line から line.length() 文字分 szAbout にコピーする。

コンテキストで判断するところではありません。定義に基づいて理解すべきです。

@berryzplus通常 line[length()] は '\0' なので。

「通常」とは? 通常でないときがあるのなら危険なのでは?

実は知らなかったのですが、operator[] は範囲外アクセスに対して、特に size() と等しい添え字に対しては以前から、デフォルトコンストラクトされた文字への参照を返していたみたいです。意外な優しさ……。

もちろん範囲外は範囲外ですから、at() などは例外を投げます。範囲外にある何がコピーされることを期待したんでしょうか。

@berryzpluscrash対策にはなってると思うので、とりあえずマージしてしまいます。

何も確認していない。

@beru
Copy link
Contributor

beru commented Apr 23, 2020

@ds14050 さん
ちゃんと確認しろよ!って事ですね。はい、確認します。少々お待ちください。
まぁでもそのコメントをする手間を掛けられるなら、そちらで確認も出来るのでは…。:sweat:
いやまぁ、俺が何をするかは俺の自由だ、と言われればその通りなんですが。

@ds14050
Copy link
Contributor

ds14050 commented Apr 23, 2020

もちろん落ちることは確認しています。

また、必ずしもレビュアに動作確認をさぼるなとは言いませんが、コードの読解が正しいことが条件になると思います。間違っていますから Issue の方を参照して下さい。

@beru
Copy link
Contributor

beru commented Apr 23, 2020

このPRの修正内容が不十分でまだ落ちるという事ですね?
それを確認したならまずそれを報告する事の方が有意義では…。

@beru
Copy link
Contributor

beru commented Apr 23, 2020

まぁモグラたたきいくらやってもしょうがないという事もあるので、コード変更したりレビューする側はちゃんと確認しないといけないというのはその通りではあります。

@beru
Copy link
Contributor

beru commented Apr 23, 2020

情報提供は Issue の方でやってるんですよ……

  1. #1234 (comment)
  2. #1234 (comment)
  3. #1234 (comment)

読まない、反応しない、理解しないことのフォローまではできません。

PRの方にもお願いしますね。

@ds14050
Copy link
Contributor

ds14050 commented Apr 23, 2020

@beru さんは Issue からやってきた私を含む二人と比較して前提知識に不利があったみたいですね。その点は同情します。しかし手を抜くときはくれぐれも相手を見定めて下さい。そこは迂闊だったと思います。

@beru
Copy link
Contributor

beru commented Apr 23, 2020

まぁレビューする際にちゃんとロジックと問題を理解せずにコードの差異だけ見て手抜きでヨシ!としてしまうのはザル過ぎるという事ですね。。

@ds14050
Copy link
Contributor

ds14050 commented Apr 23, 2020

引きずられて同じレベルに評価を落とすのはもったいないですから。

@beru
Copy link
Contributor

beru commented Apr 23, 2020

いやいや自分は結構適当にやる人間ですよ。

@berryzplus
Copy link
Contributor Author

情報提供は Issue の方でやってるんですよ……
1.#1234 (comment)
2.#1234 (comment)
3.#1234 (comment)

読まない、反応しない、理解しないことのフォローまではできません。

なんで自分でPRせずに他人のせいにしてるんですかね?

@ds14050
Copy link
Contributor

ds14050 commented Apr 25, 2020

ローカルビルド環境を破壊されたままの私は、自分ができる範囲のことをしたというだけの報告です。勝手に「責められ」ないでください。

@berryzplus
Copy link
Contributor Author

ローカルビルド環境を破壊されたままの私は、自分ができる範囲のことをしたというだけの報告です。勝手に「責められ」ないでください。

それも「PRしたら済む話やん?」なんです。

ごちゃごちゃしてて理解不能だ、とコメントしてあったと思います。
だったらアフォでも分かりそうなレベルまでバラして提示したらいいんだと思います。

もしそれができないってんなら、まだその域に達してないってことなんですよね、結局。
(個人的にはできんわけがなかろう、と思ってます。だから、放置を続けてるんです。)

@ds14050
Copy link
Contributor

ds14050 commented Apr 25, 2020

何を指すかは通じているみたいですね。>ローカルビルド

ごちゃごちゃしてて理解不能だ、とコメントしてあったと思います。
だったらアフォでも分かりそうなレベルまでバラして提示したらいいんだと思います。

もしそれができないってんなら、まだその域に達してないってことなんですよね、結局。

私を絶望にたたき込むのがこの強さです。正論をものともしないこの強さです。

@berryzplus
Copy link
Contributor Author

何を指すかは通じているみたいですね。>ローカルビルド

MinGWビルドでgoogletestのパッケージインストールを強要するのは理不尽だ、
という話だと勝手に理解して書いております。

別な話だったらすまんですが理解できてないと思います。

私を絶望にたたき込むのがこの強さです。正論をものともしないこの強さです。

正論には正論を打ち返すのが礼儀ですから。

@ds14050
Copy link
Contributor

ds14050 commented Apr 25, 2020

正論と信じられるところがあなたの強さですよ。

@ds14050
Copy link
Contributor

ds14050 commented Apr 25, 2020

信じると言えば自分も同じ。疑うこと検証すること他者の反応を伺うことをするかどうかが分かれ目でしょうか。

HoppingTappy pushed a commit to HoppingTappy/sakura that referenced this pull request Jun 16, 2020
…r1034_copy_of_wstring

wstringをWCHAR[N]にコピーする処理でNUL終端が付かない不具合を修正
@beru beru added the 🐛bug🦋 ■バグ修正(Something isn't working) label Mar 21, 2021
@beru beru added the 💩degradation🧻🚽 デグレ (前に動いていた機能が動かなくなった) label Mar 21, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
🐛bug🦋 ■バグ修正(Something isn't working) 💩degradation🧻🚽 デグレ (前に動いていた機能が動かなくなった)
Projects
None yet
Development

Successfully merging this pull request may close these issues.

SJISエンコードのキーワードヘルプ辞書を設定するとき表示化け・Crashする
4 participants