第5章 コンパイラーとツール

tail --follow が VXFS (Veritas Clustered file system) のファイルで正しく動作

VXFS はリモートのファイルシステムです。リモートのファイルシステムの場合、tail では --follow モードの inotify 機能は使用できません。VXFS がリモートのファイルシステム一覧に追加され、inotify ではなくポーリングモードが使用されるようになりました。これにより VXFS 上のファイルで tail --follow を使用した場合に正しく動作するようになりました。

dd コマンドで転送の進捗状況を表示する機能

バイト単位でのファイルのコピーに使用する dd コマンドで転送の進捗状況を表示する status=progress オプションを提供するようになりました。残り時間を推測し、転送によるぜんざい的な問題を検出することができるようになるため、大きなサイズのファイル転送に特に便利です。

libcurl で待機時間が改善

libcurl ライブラリーは短い動作であってもアクティブなファイル記述子のない動作に対しては不必要に長いブロック遅延を使用していました。つまり、/etc/hosts を使ったホスト名の解決など一部の動作の完了には故意に時間がかかるようになっていました。libcurl 内のブロックコードが修正され初期遅延が短くなり、イベントが発生するまで徐々に増えていくようになりました。libcurl の高速動作がより迅速に終了するようになります。

libcurl ライブラリーでブロック以外の SSL ハンドシェイクを実装

libcurl ライブラリーは以前はブロック以外の SSL ハンドシェイクは実装していませんでした。このため libcurl マルチ API をベースとするアプリケーションのパフォーマンスにマイナスに影響していました。この問題を解決するためブロック以外の SSL ハンドシェイクが libcurl に実装され、libcurl マルチ API がベースのネットワークソケットからのデータの読み取りおよびソケットへのデータの書き込みを行えない場合は常にアプリケーションに対して直ちに制御を返すようになります。

IBM Power System の GDB がシンボルテーブルにアクセスする際失敗しなくなる

バイナリーのデバッグ用にシンボルテーブルを保持している重要な変数が 64 ビット IBM Power System の GDB では誤って解放されていました。このため GDB でシンボルテーブルへのアクセスが試行されるとセグメンテーション違反が発生していました。この問題を解決するため、この変数が永続的になり不正なメモリー領域を読み取ることなく GDB がデバッグセッション時に必要な情報にアクセスできるようになります。

nscd が更新され設定データを自動で再ロード

nscd (ネームサーバーキャッシングデーモン) の更新では nscd 設定ファイルに対する inotify ベースのモニタリングと stat ベースのバックアップモニタリングのシステムが追加され、nscd がその設定に対する変更を正しく検出してデータを再ロードするようになります。これにより nscd が古いデータを返すことがなくなります。

dlopen ライブラリー機能が再帰的な呼び出しでクラッシュしなくなる

ライブラリー機能 dlopen の不具合によりこの機能に対する再帰的な呼び出しがライブラリーのアサーションでクラッシュまたは停止していました。ユーザー入力による malloc 実装で dlopen を呼び出すと再帰的な呼び出しが可能になります。
この実装はリエントラントになり、再帰的な呼び出しがアサーションでクラッシュまたは停止しなくなります。

operf ツールで静的な huge ページの識別子を認識

JIT (Java just-in-time) でコンパイルしたコードのパフォーマンスを静的な huge ページを有効にした状態でプロファイリングすると OProfile の operf コマンドで大量のイベントサンプルが適切な Java メソッドではなく anonymous メモリー (anon_hugepage) に記録されていました。本更新では operf が静的な huge ページの識別子を認識するようになり、静的に割り当てた huge ページを使用する場合にサンプルを Java メソッドに正しくマッピングするようになります。

rsync -X コマンドが正しく動作

これまでは rsync ツールはファイルの所有権の変更をセキュリティー属性の設定前ではなく設定後に行っていました。このためターゲット上のセキュリティー属性がなくなり、rsync -X コマンドの実行が特定の状況下では正しく動作しませんでした。今回の更新では動作の順序が変更され、rsync は所有権の変更をセキュリティー属性の設定前に行うようになりました。このため、セキュリティー属性が問題となっていた状況で期待通りに存在するようになります。

Subversion の実行可能ファイルを完全な RELRO データで構築

subversion パッケージで供給される実行可能ファイルが完全な読み取り専用再配置データ (RELRO) で構築されるようになります。メモリー破損攻撃の特定タイプに対して保護の役割を果たします。結果、今後、脆弱性が発見された場合に Subversion の悪用がより困難になります。

TCL でのスレッド拡張が正しく動作

これまでは、TCL (ツールコマンド言語) でのスレッド化サポートは最適な実装ではありませんでした。fork() 呼び出しを TCL 変換機能でスレッド拡張を有効にして使用するとプロセスが応答しなくなることがありました。このため TCL 変換機能および TK アプリケーションはスレッド化拡張を無効にした状態で配信されていました。このためスレッド化 TCL や TK に依存するサードパーティーのアプリケーションが正しく動作しませんでした。このバグを修正するためのパッチが実装され、TCL および TK はデフォルトでスレッド拡張が有効になっています。

AES 暗号化スイートを TLS 向けに明示的に有効、無効にできる

更新された curl パッケージでは、TLS プロトコルに使用する新たな Advanced Encryption Standard (AES) 暗号化スイートを明示的に有効または無効にできます。

OpenJDK 7 が ECC に対応

OpenJDK 7 が Elliptic Curve Cryptography (ECC) と TLS 接続に関連する暗号に対応しています。安全なネットワーク接続を作成するには、多くの場合、旧式の暗号化ソリューションではなく ECC の使用が望まれます。

ABRT は coredump 全体ではなく、core_backtrace ファイルの保存が可能

ABRT は、coredump ファイルをディスクに書き出すことなく backtrace を生成するように設定することが可能になりました。これは、大量のメモリーブロックを割り当てるプロセスで作業する際に、時間の節約につながります。この機能は、/etc/abrt/plugins/CCpp.conf ファイルで CreateCoreBacktrace オプションを yes に設定し、SaveFullCore オプションを no に設定することで有効にできます。

Python 標準ライブラリーにセキュリティー機能を追加

466 Python Enhancent Proposal (http://legacy.python.org/dev/peps/pep-0466/) に記載の多くのセキュリティー強化機能が Python 標準ライブラリーにバックポートされました。セキュリティー強化には、Server Name Indication (SNI) や新たな TLSv1.x プロトコルのサポートといったssl モジュールの新機能や、hashlib module の新ハッシュアルゴリズムなどがあります。

Python 標準ライブラリーでの SSL/TLS 証明書確認に新たなグローバル設定

新オプションが追加され、Python 標準ライブラリーの HTTP クライアント (urllib、httplib、xmlrpclib など) で SSL/TLS 証明書の確認をユーザーがグローバルに有効または無効とすることができます。オプションは、493 Python Enhancement Proposal (https://www.python.org/dev/peps/pep-0493/) に記載されています。デフォルト値では、証明書を確認しません。詳細は、https://access.redhat.com/articles/2039753 を参照してください。