GNU C Library

ソフトウェアのスクリーンショット:
GNU C Library
ソフトウェアの詳細:
バージョン: 2.28 更新
日付のアップロード: 16 Aug 18
開発者: Roland McGrath
ライセンス: 無料
人気: 16

Rating: 3.0/5 (Total Votes: 2)

GNU Cライブラリは、GNU / Linuxディストリビューションのための、オープンソースのフリーで強力なライブラリソフトウェアです。 Glibcとも呼ばれ、UNIXのようなコンピュータのオペレーティングシステムで必要です。 GNU Cライブラリは、malloc、open、exit、printfなど、さまざまな他の基本的な機能とシステムコールの定義を担当しています。


すべてのLinuxカーネルベースのオペレーティングシステムでデフォルトで使用されます。

GNU Cライブラリは、すべてのLinuxカーネルベースのオペレーティングシステムにデフォルトでインストールされ、GNUシステムやLinuxカーネルによって動力を与えられる他のオペレーティングシステムのメインCライブラリとして機能するよう設計されています。 p>
ポータブルに設計されています

Glibcは、Cプログラミング言語で書かれた高性能のCライブラリです。 POSIX.1-2008およびISO C11を含むすべての関連標準をサポートするために、ポータブル、国際化、および設計されています。


よく知られているUNIXの亜種の機能をサポート

GNU Cライブラリは完全に国際化されたインタフェースを持っていますが、組み込みの互換モードのおかげで、BSDやSystem Vなどのよく知られたUNIXの機能をサポートしようとしています。

GNU Cライブラリを使い始める

GNU CライブラリはほとんどのGNU / Linuxオペレーティングシステムにデフォルトでインストールされていますが、Webサイトで配布されているソースパッケージやSoftowareを使って無料で再インストールすることもできます。まず、ホームディレクトリにアーカイブをダウンロードして保存します。

アーカイブマネージャユーティリティでアーカイブを解凍し、ターミナルウィンドウを開き、アーカイブファイルが解凍された場所に移動し、‘ ./configure’を実行します。コマンドを使用してプログラムを設定します(さまざまな最適化オプションについては、‘ ./ configure --help’コマンドを参照してください)。

次に、‘ make’を実行します。ライブラリをコンパイルするコマンド。‘ make install’のいずれかを実行してシステム全体にインストールできます。または‘ sudo make install’あなたのルート権限を持っている人か特権を持っている人かによって異なります。

このリリースの新機能:



https://sourceware.org/ml/libc-announce/2018/msg00000.html

バージョン2.27の新機能:



https://sourceware.org/ml/libc-announce/2018/msg00000.html

バージョンの新機能:

このバージョンのGNU Cライブラリを使用できる最小のLinuxカーネルバージョンは、Linuxカーネルバージョン2.6.32以降で十分であるi [4567] 86およびx86_64(ただし、すでにカーネルバージョンを必要としているアーキテクチャ3.2よりも、これらの要件は変わらない)。 Linux 3.2以降のカーネルヘッダーはすべてのアーキテクチャーで必要です。
pap_ANロケールが削除されました。これは長い間非難されています。これは、pap_AW& amp; pap_CW、どちらも以前のリリースに含まれていました。
readdir_rおよびreaddir64_r関数は廃止予定です。代わりにreaddirとreaddir64を使用することをお勧めします。
タイプ "union wait"は削除されました。これは1990年代初めに非難され、POSIXの一部ではありませんでした。アプリケーションコードは、 "union wait"の代わりにint型を使用する必要があります。大規模な分散システム管理を容易にするために、新しいNSSアクションが追加されました。アクションMERGEを使用すると、LDAPなどのリモートユーザーストアを/ etc / groupsなどのローカルユーザーストアにマージして、使いやすい、更新された、管理されたマージされた資格情報のセットを提供できます。 group:files [SUCCESS = merge] nis Stephen Gallagher(Red Hat)が実装しました。新しいアクションは/etc/nsswitch.confで設定することで使用できます。
廃止予定の__malloc_initialize_hook変数がAPIから削除されました。
未使用の長いlocaledef -old-styleオプションが削除されました。 16年以上も何もしていません。このオプションを使用するスクリプトは安全に削除できます。
nextupl、nextup、nextupf、nextdownl、nextdown、nextdownfがlibmに追加されました。これらはTS 18661とIEEE754-2008で定義されています。 nextup関数は次の表現可能な値を正の無限大の方向に返し、nextdown関数は次の表現可能な値を負の無限大の方向に返します。これらは現在、GNU拡張として有効になっています。
セキュリティ関連の変更:
_nss_dns_getnetbyname_rの不要なスタックコピーが削除されました。 getnetbynameが非常に長い名前で呼び出されたときに、スタックオーバーフローが発生する可能性があります。 (CVE-2016-3075)以前は、getaddrinfoは、CVE-2013-4458の修正が適用された後でも、大量のアドレスデータをスタックにコピーしたため、スタックオーバーフローが発生する可能性がありました。 getaddrinfoはヒープ割り当てを使用するようになりました。マイケルPetlanによって報告される。 (CVE-2016-3706)
glob関数は、GLOB_ALTDIRFUNCフラグを指定して呼び出されたときにスタックベースのバッファオーバーフローが発生し、長いファイル名が発生しました。 Alexander Cherepanovによって報告されました。 (CVE-2016-1234)
Sun RPC UDPクライアントは、細工されたICMPおよびUDPメッセージでいっぱいになると、使用可能なすべてのスタック領域を使い果たす可能性があります。 GCCのAldy Hernandezのallocaプラグインによって報告されました。 (CVE-2016-4429)
libresolvのIPv6ネームサーバ管理コードは、作成された各スレッドのメモリリークを引き起こし、失敗したネーミングルックアップを実行して終了する可能性があります。時間が経つと、メモリが枯渇してサービス不能に陥る可能性があります。 Matthias Schifferによって報告されました。 (CVE-2016-5417)
このリリースでは、次のバグが修正されています。[1170] localedata:ne_NP:ネパールロケール定義ファイルの更新[3629]マニュアル:stpcpy string.texi内の説明は、MS-DOSの代わりにMS-DOGを参照します。 [6527] malloc:[powerpc] PowerPC用のMallocの整列が不十分です。[6796] math:fdim()はerrnoをオーバーフローに設定しません[10354] libc:posix_spawnは現在より多くの場合vfork()を使用します[11213] localedata:localedata:ロケールファイルに著作権放棄を追加する[12143] localedata:chr_US:新しいチェロキーロケール[12450] localedata:sgs_LT:新しいロケール[12676] localedata:ln_CD:新しいロケール[13237] localedata:LC_ADDRESS.country_name:最新のCLDRを含むすべてのロケールを更新するデータ:[13304]数学:fma、fmaf、fmal誤った結果を生む[14259] build:--localedir設定する引数が無視される[14499] nptl:posix_spawnがatforkハンドラを呼び出すかvforkを使用しますか? [14750] libc:posix_spawnの競合状態vforkの使用状況vsシグナルハンドラ[14934] localedata:es_CL:最初の平日のチリロケールが間違っている[15262] localedata:LC_MESSAGES.yesexpr / noexpr:ローマ字化の一貫性がない[15263] localedata:LC_MESSAGES.yesexpr / noexpr:1/0および+/- [15264]ローカルデータの一貫性のない使用:LC_MESSAGES。多くのロケールには欠けている[15368] nptl:raise()は非同期シグナルセーフではありません[15479] math:ceil、floor、round、trunc不正確例外を発生させます[15578] localedata:kk_KZ:various updates [16003] lv_LV:LC_MONETARY内の通貨記号をユーロに変更する[16742] malloc:競合条件:pthread_atfork pap_an:puntle_atfork pap_AN:punt old locale [16137] localedata:iw_IL:古いロケールをパントする[16190] localedata:eo:新しいesperantoロケール[16374] LC_MESSAGES.yesexpr / noexpr:すべてのロケールで大文字を再訪[16983] localedata:postal_fmtは%lと%n修飾子を許可しません[17565] localedata :pt_PT:間違った(仕事)週の始まり[17899]数学:[powerpc] floorlはFE_DOWNWARDで負のゼロを返します[17950]ビルド:-msseでビルドできません[18205] localedata:be_BY *:first_weekdayとfirst_workday [18433] :実行失敗時にposix_spawnが正しく返されない[18453] localedata: charmaps / IBM875:不正なコード[18712] string:bits / string2。h -ILER = packed -Wsystem-headersと互換性がありません。[18896] localedata:he_IL:通貨の改善[18911] localedata:ro_RO:ルーマニアロケールデータの「Tuesday」の曜日の日付を修正します。[18960]ロケール:s390:_nl_locale_subfreeresは、整列していないシンボルにlarlオペコードを使用します。[19056] libc:Deprecate readdir_r [19133] localedata:pt_ *:days& [19198] localedata:nl_NL:オランダ語ロケールの小規模な改善[19257]ネットワーク:IPv6ネームサーバ(CVE-2016-5417)による__res_vinitのスレッドごとのメモリリーク[19269] build:tst-audit4 [19400]ロケール:「iso-639.def」の記述が不足している[19431] malloc:fflush、getdelim、およびfork間のデッドロック[19505] libc: posix_spawn_file_actions_add {open、close、dup2}のファイル記述子の妥当性チェックが正しくない[19509]動的リンク:dlsym、dlvsymはRTLD_NEXTを使用するとdlerrorによってエラーを報告しません[19512]ロケール: `intl / {gettextP 、loadinfo}Hesiod [19575] localedata:ステータス[19534] libc:execle、execlpがmalloc [19568] localedataを使用する可能性があります:* _CH:スイスロケールの開始が矛盾しています[19573] network:res_ncloseと__res_maybe_init 19583]文字列:SSSE3_Fast_Copy_BackwardフラグをAMD Excavatorコア[19592]で有効にする必要があります。[19592] math:[ldbl-128ibm]がデフォルト以外の丸めモードで間違っています。[19593] [19583] localedata:sr_ * date_fmt文字列に改行が追加されました。 ] math:[ldbl-128ibm] trunclがデフォルト以外の丸めモードで間違っている[19594] math:[ldbl-128ibm] roundlがデフォルト以外の丸めモードで正しくない[19595] math:[ldbl-128ibm] fmodl [19603] math:[ldbl-128ibm] remainderl、remquol等価性テストでの不正な記号の処理[19610] dynamic-link:ldconfig - Xは古いシンボリックリンクを削除する[19613] libc:s390x (64ビット)マクロ展開WCOREDUMPなど[19633]ロケール:strfmon_lはグローバルロケールを数値書式に適用します[19642] network:getnameinfo [19648]のメモリリーク[19648] libc:test-skeleton。libc:glibc-2.22のNULLポインタ・デリファレンス(CWE-476)の可能性[19654] math:[x86_64] BZ#19590のテストケースが必要修正[19671] localedata:mallocの健全性チェックが欠落しています'tst-fmon.c'& [19674]数学:[ldbl-128ibm]数学:[ldbl-128ibm] powl間違ったオーバーフローの扱い[19677]数学:[ldbl-128ibm] remainderl等価性テストが正しくない低部分[19678]数学:[ldbl-128ibm] nextafterl (19679)動的リンク:gcc-4.9.3整列されていないスタックによってC ++例外処理が壊れた[19726]ロケール:iconv()でUCS4LEを内部に変換すると、エラーの場合にポインタと長さが更新されない。 [19727] locale:iconv()を使用してUTF-xxをUTF-xxに変換すると、UTF-16サロゲート値のエラーは必ずしも報告されません。[19755]動的リンク:HAS_CPU_FEATURE / HAS_ARCH_FEATUREは誤用されやすい[19755]動的リンク:HAS_CPU_FEATURE / HAS_ARCH_FEATUREは、 19765] libc:s390は最適化されたmempcpyを必要とする[19779] glob:glob:不正なNAME_MAX制限仮定(CVE-2016-1234)によりGLOB_ALTDIRFUNCでバッファオーバーフロー[19783] build:benchtestsは--enable-hardcoded-pathをサポートしていない-in-tests [19787]ネットワーク:getnameinfoの欠落と不正確な切り捨てチェック[19790]数学:[ldbl-128ibm]がデフォルト以外の丸めモードで不正です[19791] network:un_connectable nameを持つres_query.cのアサーションエラーサーバアドレス[19792] libc:MIPS:backtraceはmakecontext [19822] math:libmで無限のバックトレースを生成します。nss_dns:バッファの長さに対してRDATAの長さをチェックする必要があります。[19831]ネットワーク:nss_dns:getaddrinfoは、初期化されていないデータを返します。無効なサイズのA / AAAAレコード[19837] nss:nss_db:大きなバッファを持つ長い行の再試行なし[19848] math:n = -4、-5、-6、-7のpowl(10、n) tst-audit10とtst-auditmod10bのコンパイルエラーが発生しました。[19861] nptl:libpthreadフォーク用のIFUNCリゾルバネットワーク:resolv、nss_dns:予期しないレコードタイプの残りのログを削除する[19865] network:_nss_dns_getcanonname_r [19868]ネットワークのアサーションエラーまたはメモリリークnss_dns:netentコードがPTR以外のレコードをスキップしない[ 19879]ネットワーク:nss_dns:getnetbyname implementaのスタックオーバーフロー文字列:x86-64 memsetの改善[19907] string:不正なmemcpyテスト[19916] dynamic-link:S390:シンボルの解決中にfprs / vrsが保存/復元されない[19925] libc(CVE-2016-3075) :termios.h XCASE名前空間[19928]文字列:memmove-vec-unaligned-erms。データサイズが大きいとSが遅い[19929] libc:limits.h NL_NMAX名前空間[19931] stdio:vfprintfのメモリリーク[19957] libc:クローン(CLONE_VM)が不正な親メモリにアクセスする[19963] localedata:en_IL:新しいロケール[19989 ] stdio:stdio.h cuserid namespace [19994]ネットワーク:getaddrinfoはgethostsのRES_USE_INET6フラグを復元しません[19996]ロケール:langinfo.h nl_langinfo_l名前空間[20005] stdio:fmemopenでオープンされたファイルのfflushが0にリセットされます[20010]ネットワーク:getaddrinfo:ホストの翻訳におけるスタックオーバーフロー(CVE-2016-3706)[20012] stdio:libio:fmemopen append modeの失敗[20014] stdio:stdio.hプリスレッドの名前空間POSIX [20017]ネットワーク:resolv:use gmtime_r nss_hesiod:get_txt_records [20041]のヒープオーバーフロー時間:sys / time.h timespec(2003年1月1日以降に発行されたもの):p_secstodateのgmtimeの代わりにlibc:fcntl.h timespec namespace [20024] math:[x86_64]名前空間[20043] libc:unistd.h UNIX98用および[20044]以前のcuseridがありませんlibc:unistd .h UNIX98のpthread_atforkがありません[20051] libc:間違った条件で間違ったヘッダのttyslot [20054] libc:XPG4 [20055]のlibc:gethostnameが宣言されていません。libc:sys / stat.h fchmod名前空間[20074] libc:stdlib.h rand_r名前空間[20076] libc:sys / stat libc:sys / statは、XPG4 [20072]のtcgetsidがない動的リンクです。 libc:struct sockaddr_storageは集約コピーできません[20112] network:sunrpc:stack(frame)オーバーフローします。 [20119]文字列:memset-vec-unaligned-erms.Sの余分なアライメントlibc:CPUIDのプロセッサレベルタイプの間違ったマスク[20139] dynamic-link:上の部分[ldbl-128 / ldbl-128ibm] j0l、j1l、y0l、y1l sNaN引数のためにsNaNを返す[20153] math:[ldbl-128ibm] sqrtl (sNaN)はsNaNを返す[20156]数学:[ldbl-128ibm] ceill、rintlなどsNaN引数のためにsNaNを返す[20157]数学:[powerpc] fabsl(sNaN)が誤って "無効"を生成する[20160] owerpc] ceil、rintなどlibc:posix_spawn {p} exitを呼び出してはいけません[20191] stdio:libio:vtables hardening [20195]文字列:FMA4検出でレジスタeax = 0x80000001でCPUIDを実行する必要があります[20198] libc:quick_exitが間違って破棄されます。 C ++ 11個のスレッドオブジェクト。 [20205]数学:[i386 / x86_64] nextafterl不正確な負のサブノールを増やす[20212]数学:acos(sNaN)がsNaNを返す[20213]数学:asin(sNaN)がsNaNを返す[20214]ネットワーク:linux / in6とLinuxヘッダーの同期。 hとipv6.hを再度実行します。Math関数ポインタ(20224)math:[i386] cbrtl(sNaN)math関数のポインタは、次のようになります。 sNaNを入力します。[20226] math:[i386 / x86_64] expl、exp10l、expm1l sNaNを入力するとsNaNを返します。[20227] math:[i386 / x86_64] logl(sNaN (sNaN)はsNaNを返します。[i386 / x86_64] log1pl(sNaN)はsNaNを返します。[ldbl-128] expm1l(sNaN)は、sNaN [20228] (sNaN)はsNaNを返す。log2l(sNaN)はsNaN [s]を返す。ここで、sNaNはsNaNを返す。 20237] nss:nss_db:get * ent segfaults without set * ent [20240] math:modf(sNaN)はsNaNを返す[20248] libc:debug / tst-longjump_chk2はシグナルハンドラからprintfを呼び出す[20250] math:frexp(sNaN )はsNaNを返します。[20252]数学:atan2(sNaN、qNaN)が「無効」を生成できません[20255] ma th:[i386] fdim、fdimfは超過範囲と精度/二重丸めを返します。[20256] math:[i386 / x86_64] fdimlはsNaN入力[20260]の文字列:../sysdeps/x86/bits/stringに対してsNaNを返します。[20262] nis:_nss_nis_initgroups_dynは常にNSS_STATUS_NOTFOUNDを返します。[20263] nptl:他のスレッド要求がタイムアウトロックされている場合のロバストmutexデッドロック(アームのみ) / linux)[20277] libc:$ dpがsysdeps / hppa / start.Sで正しく初期化されていません。[20284] malloc:malloc:アリーナ回避によって不要なmmapフォールバックが発生します[2026] math:[i386 / x86_64] scalblはsNaN [20316] nptl:make [4]:*** [/usr/include/stdlib.h]エラー1 [20316] localedata:id_ID:Pebruariの代わりにFebruari [20327]文字列:POWER8 libc:FAIL:misc / tst-preadvwritev64 [20349] libc:p(readv、writev)で64ビットの値が異なって渡されている[20347] math:失敗:テスト:j0_downward(0xap + 0)[20348] {64} [20350] libc:p {read、write}のテストはありません64 [20357] math:1.5174239687223976の不正なcos結果[20384]ビルド:libmvec-sincos-avx *を実行しないでください。アキン類

バージョン2.23の新機能:



CVE-2015-7547:glibc getaddrinfo()スタックベースのバッファオーバーフロー - glibc 2.23リリースの開発ブランチで修正されました。

バージョン2.21の新機能:

このリリースでは、次のバグが解決されています:6652、10672、12674、12847、12926、13862,14132,14138,14171,14498,15215,15378,15884,16009,16418,16191,16469,16576,16617,16618,16619 、16657、16740、16857、17192、17266、17273、17344、17363、17370、17371、17411、17460、17475、17506、17508、17522、17555、17570、17571、17572、17573、17574、17582 、17583、17584、17585、17589、17594、17601、17608、17616、17625、17630、17633、17634、17635、17657、17658、17664、17665、17668、17682、17702、17717、17719、17722 17723,17723,17724,17725,17732,173333,17744,17745,17746,17747,17748,17775,17777,17780,17781,17782,17791,17793,17796,17797,17801,17803,17806,17834,17844,17848 、17868、17869、17870、17885、17892。
CVE-2015-1472特定の条件下では、wscanfはスキャン対象の引数に少なすぎるメモリを割り当てて、割り当てられたバッファをオーバーフローさせる可能性があります。実装は、mallocを使用するときに必要なバッファサイズを正しく計算するようになりました。新しいセマフォーアルゴリズムは、すべてのマシン用の汎用Cコードで実装されています。セマフォの以前のカスタムアセンブリの実装は、それらが安全であることを推論することまたは確実にすることは困難でした。新しいバージョンのセマフォーは、64ビットまたは32ビットのアトミック操作を持つマシンをサポートします。新しいセマフォーアルゴリズムは、sem_init、sem_open、sem_post、sem_wait、sem_timedwait、sem_trywait、およびsem_getvalueによって使用されます。
アルテラのポートNios IIはメンター・グラフィックスから寄せられています。
powerpc64 / powerpc64leのstrcpy、stpcpy、strncpy、stpncpy、strcmp、およびstrncmpの実装を最適化しました。 Adhemerval Zanella(IBM)によって実装されました。
powerpc32、powerpc64、およびpowerpc64leのpthread mutexのTSXロック・エリートのサポートが追加されました。これにより、HTM対応システム上の既存プログラムのロックスケーリングが向上する可能性があります。ロックエリミッションコードは、 - enable-lock-elision = yesでのみ有効です。また、powerpcのTSXロック・エリミッション実装は、トランザクションの外部で副作用が発生するのを避けるために、すべてのシステム・コールに対してトランザクション・アボートを発行します。
AArch64のstrcpy、stpcpy、strchrnul、およびstrrchrの実装を最適化しました。 ARM Ltd.による寄稿
i386 memcpy関数は、SSE2アンアラインドロード/ストアで最適化されています。CVE-2104-7817 wordexp関数は、特定の入力条件でWRDE_NOCMDフラグを無視して、アプリケーションがコマンドを要求しなかったときにコマンド置換用のシェルを実行する可能性があります。この実装は、シェルを実行する直前にWRDE_NOCMDをチェックし、WRDE_CMDSUBというエラーを期待通りに返します。
CVE-2012-3406多数の書式指定子で書式文字列を処理すると、printf形式の関数がスタックオーバーフローに陥ってしまう可能性があります。
CVE-2014-9402 DNSレスポンスに予期しない形式のPTRレコードが含まれていると、getnetbynameのnss_dns実装が無限ループに陥ることがありました。
このバージョンのGNU Cライブラリを構築するために使用できる最小のGCCバージョンは、GCC 4.6です。 GNU Cライブラリを使ってプログラムをコンパイルするには、以前のGCCのバージョンとGNU以外のコンパイラを使用することができます。
GNU Cライブラリはデフォルトで-Werrorで構築されています。これは--disable-werrorで設定することで無効にすることができます。
新しいロケール:tu_IN、bh_IN、raj_IN、ce_RU。廃止されたsigvec関数は削除されました。これは、元の4.2BSDインターフェースで、POSIX.1 sigactionインターフェースを刺激しました。このインターフェースは、約25年間代わりに使用されています。もちろん、sigvecを使用する古いバイナリのABI互換性はそのままです。
gettext 0.19.3をintlサブディレクトリにマージしました。これは、新しいバージョンのbisonでビルドを修正します。MIPS o32 FPXX、FP64AおよびFP64 ABI拡張のサポート。オリジナルのMIPS o32ハードフロートABIは、倍精度レジスタが連続する2つの単精度レジスタをオーバーレイするFPUを必要とします。 MIPS32R2は、倍精度レジスタがo32ハードフロートABIと互換性のない対応する単精度レジスタを拡張する新しいFPUモード(FR = 1)を導入しました。 MIPS SIMD ASEおよびMIPSR6アーキテクチャは両方とも、FR = 1の使用を必要とし、遷移を必要とする。新しいo32 ABI拡張により、オリジナルのo32 ABIから更新されたo32 FP64 ABIまで、ユーザーは時間の経過とともに移行することができます。これを実現するために、ダイナミックリンカはロードされたオブジェクトのABIを追跡し、新しいオブジェクトが互換性があることを確認します。必要に応じてモード遷移も要求され、サポート対象外のオブジェクトは拒否されます。 ABIチェックには、o32、n32、n64のソフトフロートABIとハードフロートABIの両方が含まれます。

へのコメント GNU C Library

コメントが見つかりません
コメントを追加
画像をオンにする!