開発のXNUMXか月後 Glibc2.35の新しいバージョンのリリースが発表されました その中で 66人の開発者からの修正が含まれています 実装された改善のうち、「C.UTF-8」ロケールのサポートが追加されたことがわかります。これには、すべてのUnicodeコードの照合が含まれますが、保存するためのfnmatch、regexec、およびregcomp関数でのASCII範囲の使用に制限されています。空。
ロケールは約400KBで、そのうち346 KBはUnicodeのLC_CTYPEデータであり、個別にインストールする必要があります(Glibcに組み込まれていません)。 Unicode 14.0.0仕様をサポートするために、エンコードデータ、文字タイプ情報、および音訳テーブルが更新されました。
目立つもう一つの変化はそれです Y 結果をより狭いタイプに丸める関数とマクロを実装し、 IEEE 754-2019仕様で説明されている、float、long double、_FloatN、および_FloatNx型の浮動小数点数の最小値と最大値を見つけるための関数とマクロの実装に加えて、
関数用 exp10、対応するマクロがヘッダーファイルに追加されます、特定のタイプにバインドされていないことに加えて、_PRINTF_NAN_LEN_MAXマクロがに追加されました、ドラフトISOC2X標準で提案されています。
ダイナミックリンクシステムは、新しい分類アルゴリズムを実装します 深さ検索(DFS)を使用したDSO ループの依存関係を処理する際のパフォーマンスの問題に対処するため。 DSOソートアルゴリズムを選択するために、glibc.rtld.dynamic_sortパラメーターが提案されます。これを「1」に設定すると、前のアルゴリズムにフォールバックできます。
それに加えて 新しい関数 '__memcmpeq'のサポートが追加されました この関数の戻り値が操作の完了ステータスをチェックするためだけに使用される場合に、コンパイラが `memcmp 'の使用を最適化するために使用するABIに。
ザ・ 自動スレッド登録のサポート Linuxカーネル4.18以降に提供されたrseq(再起動可能シーケンス)システムコールを使用します。 rseqシステムコール 命令のグループの継続的な実行を整理することができます これは中断されず、グループ内の最後のステートメントで結果をコミットします。 基本的に、別のスレッドによって中断された場合にクリーンアップされて再試行される、操作の非常に高速なアトミック実行のための機能を提供します。
一方、それは提供します すべての実行可能ファイルのデフォルトのコンパイル 組み込みプログラムとPIE(位置に依存しない実行可能ファイル)モードのテストスイートの比較。
この動作を無効にするには、 オプション「–disable-default-pie」が提供されていますさらに、Linuxの場合は、glibc.malloc.hugetlb設定を追加して、mmapおよびsbrkのMADV_HUGEPAGEフラグでmadviseシステムコールを使用するようにmalloc実装を変更するか、mmap呼び出しでMAP_HUGETLBフラグを指定して大きなメモリページを直接使用します。
前者の場合、madviseモードで透過的な巨大ページを使用することでパフォーマンスを向上させることができ、後者の場合、システム予約の巨大ページ(巨大ページ)を使用できます。
この新しいバージョンでは、いくつかの脆弱性が修正されていることにも注意してください。
- CVE-2022-23218、CVE-2022-23219:コピーされたデータのサイズをチェックせずにファイル名パラメーターの内容をスタックにコピーすることによって引き起こされるsvcunix_createおよびclnt_create関数のバッファーオーバーフロー。 スタック保護なしで「unix」プロトコルを使用して構築されたアプリケーションの場合、この脆弱性により、非常に長いファイル名を処理するときに悪意のあるコードが実行される可能性があります。
- CVE-2021-3998: スタックからの未クリーンな残余データを含む特定の条件下で誤った値を返すことによって引き起こされるrealpath()関数の脆弱性。 SUIDルートfusermountプログラムの場合、この脆弱性を使用して、プロセスメモリから機密情報を取得することができます。たとえば、ポインタ情報を取得することができます。
- CVE-2021-3999: getcwd()関数でのシングルバイトバッファオーバーフロー。 この問題は、1995年以降に発生したバグが原因で発生します。オーバーフローを呼び出すには、別のマウントポイント名前空間で、「/」ディレクトリのchdir()を呼び出すだけです。
最後に あなたがそれについてもっと知りたいのなら、 あなたはで詳細を確認することができます 次のリンク。