リリース 0.9.15


セキュリティフィックス

Windows版だけが影響を受けます。

.batおよび.cmdファイルをsys-exec経由 (もしくはそれを利用する run-process 等の高レベルAPI経由) で起動した場合、 外部から細工されたコマンドライン引数が与えられていると、外部コマンドの起動が可能でした: https://kb.cert.org/vuls/id/123335

Gaucheでは.bat.cmdファイルを起動する時には拡張子を明示する必要が あるので、ユーザコード側でその場合に引数のチェックを入れることは可能です。 ただ、穴は無い方が良いでしょう。

このリリースでは、.batおよび.cmdファイルを起動する場合に、 (Issue:1017)

他の重要な修正

build-standaloneが壊れていた

0.9.14でスタンドアローンバイナリを作ろうとするとエラーになっていました。 インストールされないプライベートなヘッダファイルへの依存が入り込んでしまっていたためです。 ソースツリー内でのテストではヘッダファイルが見えているので発見が遅れました。 Issue:1013.

新しいMbedTLSでのTLS handshake error

新しめのMbedTLSでTLSサーバソケットを作ろうとするとクライアントからの接続が TLS handshake errorになっていました。

また、--with-tls=mbedtls-internalでconfigureした場合に バンドルされるMbedTLSを3.5.2に上げました。 Issue:1018,Issue:1021.

size-ofメソッドがO(n)になる

コレクションの大きさを返すsize-of メソッドは、 コレクション実装者が最低限のコレクションプロトコルしか実装していない場合、 イテレータで要素を順に呼び出して数えるデフォルトメソッドが使われます。 組み込みのハッシュテーブルとツリーマップでsize-ofにメソッドを定義していなかったので、 これらの構造にsize-ofを適用するとO(n)になっていました。 現在は修正され、またドキュメントでこのデフォルトメソッドの振る舞いについて 注意するようにしてあります。 Issue:987.

互換性のための警告

define-cproc でのレガシーキーワード

かつて、Cインタフェース (define-cproc) の定義には、Common Lisp風の ラムダキーワード (&optional 等) を使っていました。 Schemeでの拡張ラムダ引数の導入に伴って通常のキーワード (:optional等) を使うように切り替えてからずいぶん経ちますが、以前のラムダキーワードも互換性のために サポートしてきました。近い将来この互換性サポートをやめるつもりです。 警告が出たら、ソースをアップデートしてください。

'#<undef> is used in boolean context'

この警告はだいぶ前から入っていて、デフォルトではoffになっているのですが、 環境変数 GAUCHE_CHECK_UNDEFINED_TEST を設定してonにすることを強くお勧めします。 これは、#<undef> が条件分岐の条件判断に使われた時に警告を出すものです。

詳しくはNasty undefinedを参照してください。

新たなモジュールと手続き

その他のバグフィクス


Last modified : 2024/04/24 00:26:37 UTC