いけむランド

はてダからやってきました

build.gradle のクソデカ化と戦っている

Log4Shell みたいなことが起きた時に慌てるのは嫌だなということで、去年の年末以降は dependency-check や trivy のレポートとにらめっこしてる。 (実際には 0-day は防げないため、直接は関係しないが、芽を摘んでおくことは良いことであるはず。)

github.com

github.com

続きを読む

If fixing a bug is a breaking change then it is a breaking change

仕様と実装が違っていて、実装を仕様にあわせる (不具合修正する) と、結果的に今の実装からの破壊的な変更 (breaking change) が発生する場合に semver の major を bump するべきか?がわからなかったため、ググったら面白いスレッドがあったから読んでた。

続きを読む

Differences between Verification and Validation

コードレビューなどをしていて、たまに「これってメソッド名として verify より validate の方が適切じゃね?(または逆)」というパターンを見かけることがあったため、自分の中での解釈をメモしておく。

以下、主観も入っていると思われるため、参考にする場合はほどほどでお願いします。

続きを読む

ctype: use less short names in public header

cygwin.com

今までだと _P のような、ユーザコードでも使われがちなシンボル (_[A-Z]) をマクロとして、グローバルなヘッダで定義してしまっていたため、コンパイル時に展開されて、文法エラーになるようなことが多々あった。

この修正でこの問題が解消されるようでありがたい。

#include <ctype.h>

void func()
{
    int _P;
}
$ gcc -c ctype.c
In file included from ctype.c:1:
ctype.c: In function ‘func’:
ctype.c:5:13: error: expected identifier or ‘(’ before numeric constant
    5 |         int _P;
      |             ^~

とあるネトゲの不具合報告を見ての感想

ちょっと目に入ったので思ったことをメモしておく。

f:id:fd0:20210929075323p:plain

https://shop.p-eternal.jp/information/detail/?information_id=114

使用プラットフォームのタイムゾーンで日本時間(JST/GMT+9:00)以外を設定している場合、相手への攻撃が無効になる

この挙動を見ると、クライアントからタイムゾーンの情報をもらって、それを元にサーバ側の時間に変換したもので攻撃判定をしているのかなと思ってしまうが、ネトゲの場合、基本的にクライアントから来る情報は最低限しか信用してはいけない (でないとパケット内容をいじって、いくらでもチートされる可能性がある) という認識なので、これはそもそもの設計が良くないんだろうな、なんてことを読みながら思ってた。