こないだ知ったのですが、
void f(void);
に対して、これまたvoidを返す別関数の中で、間違って
f();
return;
の代わりに
return f();
って書いても、警告てんこ盛りのGCCで怒られませんでした。そうか、voidをreturnしてるから正しい。のか。
Notices by 斎藤ただし (tadd@best-friends.chat)
-
斎藤ただし (tadd@best-friends.chat)'s status on Saturday, 23-Nov-2024 12:52:23 JST 斎藤ただし -
斎藤ただし (tadd@best-friends.chat)'s status on Friday, 08-Nov-2024 00:49:45 JST 斎藤ただし @ikeji コードアナライザとかで、は確かにできそう。メリットある場合もあるかも?その場合はコストと天秤にかけて、Cプログラマが受け入れてよいくらいまで楽で効果的なら、って感じかなぁ。
最後の方のは、一つの案としては、スタックに確保した&バイト数が分かってるやつしか受け入れない、という方針のAPIやらなんやらを作ってみるのはありかもね。
型を強制することによって安全性を確保……になるのかな??かも。 -
斎藤ただし (tadd@best-friends.chat)'s status on Friday, 08-Nov-2024 00:46:20 JST 斎藤ただし @ikeji これでいろいろ考えてたけどとりあえず。Rubyの方はStringValueCStrを呼び出さないと、NUL終端は保証しないはずです(というのがやや最近だったのかも?)。
なので実態としては、「そうであることを助ける機構まではある」くらいじゃないかな。 -
斎藤ただし (tadd@best-friends.chat)'s status on Friday, 08-Nov-2024 00:41:09 JST 斎藤ただし @ikeji 「Cの文字列型」と言われたとき、「……のバイト数が明示的に宣言・制限されたものに限る」という修飾子がつく、という想像は、文脈含めて流石にできなかった(できない)と思いますです。
「Cの文字列型の中には長さが入っているものもある」ならわかる。けど文字列型一般ではないと思う。 -
斎藤ただし (tadd@best-friends.chat)'s status on Friday, 08-Nov-2024 00:33:55 JST 斎藤ただし @ikeji 結論だけおしえてくださると助かる
-
斎藤ただし (tadd@best-friends.chat)'s status on Friday, 08-Nov-2024 00:18:34 JST 斎藤ただし @ikeji うん、それは普通のconst char *じゃないからね。
という、予防線を張っても堂々と無視されると、議論が進まなくてうむむ…… -
斎藤ただし (tadd@best-friends.chat)'s status on Friday, 08-Nov-2024 00:10:47 JST 斎藤ただし @ikeji うん、そう思うー
-
斎藤ただし (tadd@best-friends.chat)'s status on Thursday, 07-Nov-2024 23:45:20 JST 斎藤ただし @ikeji 何となく分かったんだけど、これはtypedefの例えではないってことかな?
-
斎藤ただし (tadd@best-friends.chat)'s status on Thursday, 07-Nov-2024 23:40:45 JST 斎藤ただし @ikeji うん、それはそうだけど。なんだか話がかみ合って無い気がする?
-
斎藤ただし (tadd@best-friends.chat)'s status on Thursday, 07-Nov-2024 23:40:18 JST 斎藤ただし @ikeji 型には入ってないよね?つまり(普通のconst char *では)静的には検証できない。
-
斎藤ただし (tadd@best-friends.chat)'s status on Thursday, 07-Nov-2024 23:26:04 JST 斎藤ただし @ikeji あれ、それは10文字じゃなくて文字列十個だよね?
-
斎藤ただし (tadd@best-friends.chat)'s status on Thursday, 07-Nov-2024 23:09:34 JST 斎藤ただし @ikeji うん、そう思う。つまり短い=255文字まで、なので、それより短い(というか、確保するバイト数が少ない)型は存在しないんじゃない?と言いたかった
-
斎藤ただし (tadd@best-friends.chat)'s status on Thursday, 07-Nov-2024 23:01:01 JST 斎藤ただし @ikeji ざっとFreePascalというのを見たら、むしろ
ShortString = String[255];
と書いてあった。短くても255?
https://www.freepascal.org/docs-html/ref/refsu9.html#x32-370003.2.4 -
斎藤ただし (tadd@best-friends.chat)'s status on Thursday, 07-Nov-2024 22:39:35 JST 斎藤ただし @ikeji おぉ、それらしい感じだね。Pascalは型でそういうのってあるのかな?1バイト目がヘッダ(長さ)なので255まで、とかいう固定長なのはありそう。
In conversation from best-friends.chat permalink -
斎藤ただし (tadd@best-friends.chat)'s status on Thursday, 07-Nov-2024 22:38:31 JST 斎藤ただし @ikeji ところでこないだPascal配列 (???) を作ったので自慢しておきます。 https://github.com/tadd/libscary
In conversation from best-friends.chat permalink Attachments
-
斎藤ただし (tadd@best-friends.chat)'s status on Thursday, 07-Nov-2024 22:08:46 JST 斎藤ただし 差が20バイトあるけど、おそらく先頭のユーザーIDが64ビットの整数で、それを10進で文字列化したものだった(最大20バイト)、としたらとても素直な説明になりそう
In conversation from best-friends.chat permalink -
斎藤ただし (tadd@best-friends.chat)'s status on Thursday, 07-Nov-2024 22:08:46 JST 斎藤ただし アルゴリズムに脆弱性があったのかと誤読しかけたけどそんなことなかった。
もともとbcryptは「入力は72バイトまで」という仕様らしいので(好ましくはないけど脆弱性とは言えないと思う)、それをはみ出る長さのユーザー名を入力として使っちゃった側・仕様を考慮しなかった側が悪いってだけのはず。
https://gigazine.net/news/20241105-okta-ad-ldap-delegated-authentication-username/In conversation from best-friends.chat permalink Attachments
-
斎藤ただし (tadd@best-friends.chat)'s status on Thursday, 07-Nov-2024 22:08:45 JST 斎藤ただし 言語処理系側として考えられるのは…強引かもしんないけど、文字列の長さまで型にできる依存型?
73以上の長い文字列がbcryptの処理に渡される可能性を静的に検出する。いやびみょうかもしれないIn conversation from best-friends.chat permalink -
斎藤ただし (tadd@best-friends.chat)'s status on Thursday, 07-Nov-2024 22:08:45 JST 斎藤ただし ただbcryptの実装として、73文字以上が渡されたら教える、とかするのはやってもいいかも知れない、いややりすぎかも知れない。
In conversation from best-friends.chat permalink -
斎藤ただし (tadd@best-friends.chat)'s status on Wednesday, 30-Oct-2024 11:14:29 JST 斎藤ただし @ikeji が一番詳しそうなので一般論としてお聞きしたいんだけどさ、
ノートパソコンを直すパーツが欲しい時ってどこで手に入れる?アリエクとか?ファンにずっと異音♪があって、掃除してもだめだから自分で替えようと思ってて。けどPCメーカー公式に聞いたら市販の3倍はしそうでアホらしくて、他で買いたい。
Digikeyとかから部品メーカーの本物を買おうとしてもなかなか見つからなくて、あとはAmazon/Ali Expressのアヤシイとこくらいしか分かんなくて、どこがましなんだろう?と悩んでて質問してみました。ちなみにAmazon.co.jpで売ってるのは2.5kくらいで安めなので、まともそうなとこがんばって探した上で変なのが届いても、まーいいかー(今のに戻せるし)と思ってます。
In conversation from best-friends.chat permalink