GNU C Library

軟件截圖:
GNU C Library
軟件詳細信息:
版本: 2.28 更新
上傳日期: 16 Aug 18
許可: 免費
人氣: 16

Rating: 3.0/5 (Total Votes: 2)

GNU C Library 是一個開源,免費且功能強大的庫軟件,適用於任何GNU / Linux發行版。它也被稱為Glibc,並且是任何類UNIX計算機操作系統所必需的。 GNU C Library負責定義系統調用,以及各種其他基本功能,如malloc,open,exit,printf等。


默認情況下,在所有基於Linux內核的操作系統中使用

默認情況下,GNU C庫在所有基於Linux內核的操作系統中安裝和使用,該操作系統從頭開始設計,充當GNU系統中的主要C庫以及由Linux內核支持的任何其他操作系統。


設計為便攜式

Glibc是一個高性能的C庫,完全用C編程語言編寫。它設計為便攜式,國際化和工程設計,以支持所有相關標準,包括POSIX.1-2008和ISO C11。


支持眾所周知的UNIX變體的功能

雖然GNU C庫具有完全國際化的接口,但由於其內置的兼容模式,它試圖支持眾所周知的UNIX變體的功能,例如BSD和System V..

GNU C Library入門

雖然GNU C Library默認安裝在幾乎所有GNU / Linux操作系統中,但您也可以使用其網站上分發的源包或Softoware免費重新安裝。首先,下載並保存主目錄中的存檔。

使用存檔管理器實用程序解壓縮存檔,打開終端窗口,轉到已解壓縮存檔文件的位置,運行&。&。configure / rsquo;配置程序的命令(請參閱&./ configure --help’命令以獲取各種優化選項)。

然後運行‘ make’編譯庫的命令,可以通過運行&makequo; make install’來安裝系統。或者‘ sudo make install’命令,取決於您的root用戶還是特權用戶。

此版本中的新功能

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

2.27版中的

新功能

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

版本中的新功能

  • 這個版本的GNU C庫可以使用的最小Linux內核版本是3.2,除了i [4567] 86和x86_64,其中Linux內核版本2.6.32或更高版本就足夠了(在已經需要內核的架構上)版本比3.2更新,這些要求保持不變)。所有體系結構都需要Linux 3.2或更高版本的內核頭文件。
  • pap_AN語言環境已被刪除。這已經被棄用了很長時間。已被pap_AW& amp;取代pap_CW,這兩個版本早已包含在以前的版本中。
  • 不推薦使用readdir_r和readdir64_r函數。建議使用readdir和readdir64代替。
  • “聯合等待”類型已被刪除。它在20世紀90年代初被棄用,從未成為POSIX的一部分。應用程序代碼應使用int類型而不是“union wait”。
  • 添加了新的NSS操作以促進大型分佈式系統管理。操作MERGE允許將LDAP等遠程用戶存儲合併到本地用戶存儲(如/ etc / groups)中,以便提供易於使用,更新和管理的合併憑據集。可以在/etc/nsswitch.conf中配置新操作:group:files [SUCCESS = merge] nis由Stephen Gallagher(Red Hat)實現。
  • 已棄用的__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)
  • 以前,即使在應用了CVE-2013-4458的修復程序之後,getaddrinfo也會將大量地址數據複製到堆棧中,這可能會導致堆棧溢出。 getaddrinfo現在使用堆分配。邁克爾佩特蘭報導。 (CVE-2016-3706)
  • 當使用GLOB_ALTDIRFUNC標誌調用並遇到長文件名時,glob函數遇到基於堆棧的緩衝區溢出。 Alexander Cherepanov報導。 (CVE-2016年至1234年)
  • 當使用精心製作的ICMP和UDP消息進行泛洪時,Sun RPC UDP客戶端可能會耗盡所有可用的堆棧空間。 Aldy Hernandez為GCC報告的alloca插件報導。 (CVE-2016-4429)
  • libresolv中的IPv6名稱服務器管理代碼可能導致創建的每個線程發生內存洩漏,執行命名查找失敗並退出。隨著時間的推移,這可能會因內存耗盡而導致拒絕服務。 Matthias Schiffer報導。 (CVE-2016-5417)
  • 此版本解決了以下錯誤:
  • <>[1170] localedata:ne_NP:更新尼泊爾語區域定義文件[3629]手冊:string.texi中的stpcpy描述是指MS-DOG而不是MS-DOS。 [6527] malloc:[powerpc] Malloc對齊不足以用於PowerPC [6796]數學: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:更新所有區域設置w / latest CLDR data [13304] math:fma,fmaf,fmal產生錯誤的結果[14259] build:--localedir arg to configure被忽略[14499] nptl:posix_spawn是否調用atfork handlers / use vfork? [14750] libc:posix_spawn vfork用法與信號處理程序中的競爭條件[14934] localedata:es_CL:錯誤的第一個工作日智利區域[15262] localedata:LC_MESSAGES.yesexpr / noexpr:羅馬化的不一致使用[15263] localedata:LC_MESSAGES.yesexpr / noexpr:不一致使用1/0和+/- [15264] localedata:LC_MESSAGES。yesstr / nostr:缺少許多語言環境[15368] nptl:raise()不是async-signal-safe [15479]數學:ceil,floor,round和trunc引發不精確異常[15578] localedata:kk_KZ:各種更新[16003] localedata:pap_AN:punt old locale [16137] localedata:iw_IL:punt old locale [16190] localedata:eo:new esperanto locale [16374] localedata:lv_LV:將LC_MONETARY中的貨幣符號更改為euro [16742] malloc:競爭條件:pthread_atfork ()在第一個malloc()之前調用會導致意外的鎖定行為/死鎖[16975] localedata:LC_MESSAGES.yesexpr / noexpr:重新訪問所有語言環境中的大小寫[16983] localedata:postal_fmt不允許%l和%n個修飾符[17565] localedata :pt_PT:錯誤(工作)週開始[17899]數學:[powerpc] floorl使用FE_DOWNWARD [17950] build返回負零:使用-msse生成失敗[18205] localedata:be_BY *:錯誤first_weekday和first_workday [18433] libc :posix_spawn在執行失敗時無法正確返回[18453] localedata: charmaps / IBM875:錯誤代碼[18712] string:bits / string2。h與-O2 -Werror = packed -Wsystem-headers不兼容[18896] localedata:he_IL:貨幣的改進[18911] localedata:ro_RO:在羅馬尼亞語語言環境數據[18960]語言環境中修正“星期二”的工作日名稱:s390:_nl_locale_subfreeres在未對齊的符號上使用larl操作碼[19056] libc:Deprecate readdir_r [19133] localedata:pt_ *:days&amp;月份應該是小寫的葡萄牙語[19198] localedata:nl_NL:荷蘭語語言環境的小改進[19257]網絡:__res_vinit中的每線程內存洩漏與IPv6名稱服務器(CVE-2016-5417)[19269] build:tst-audit4 and tst-audit10在非avx機器上使用gcc-6失敗[19400]語言環境:“iso-639.def”中缺少語言,描述中的簡單修復[19431] malloc:fflush,getdelim和fork之間的死鎖[19505] libc: posix_spawn_file_actions_add {open,close,dup2} [19509]中的文件描述符有效性檢查不正確動態鏈接:dlsm,dlvsym在使用RTLD_NEXT [19512]語言環境時不通過dlerror報告錯誤:`intl / {gettextP中陳舊的`#ifndef HAVE_BUILTIN_EXPECT' ,loadinfo}。h'[19534] libc:execle,execlp可以使用malloc [19568] localedata:* _CH:瑞士語言環境的周開始不一致[19573]網絡:res_nclose和__res_maybe_init不同意名稱服務器初始化,打破Hesiod [19575] localedata:狀態GB18030表[19581] localedata:sr_ * date_fmt字符串包含額外的換行符[19583]字符串:需要為AMD挖掘機核心啟用SSSE3_Fast_Copy_Backward標誌[19592]數學:[ldbl-128ibm] ceill在非默認舍入模式下不正確[19593] ]數學:[ldbl-128ibm] truncl在非默認舍入模式下不正確[19594]數學:[ldbl-128ibm] roundl在非默認舍入模式下不正確[19595]數學:[ldbl-128ibm] fmodl對於低於正常的結果不正確雙範圍[19602]數學:[ldbl-128ibm] fmodl處理低零件零的相等參數不正確[19603]數學:[ldbl-128ibm] remainderl,remquol在等式測試中的錯誤符號處理[19610] dynamic-link:ldconfig - X刪除過時的符號鏈接[19613] libc:s390x (64位)宏擴展WCOREDUMP和其他[19633]語言環境:strfmon_l將全局語言環境應用於數字格式[19642] network:getnameinfo [19648] libc:test-skeleton中的內存洩漏。c:不要設置RLIMIT_DATA [19653] libc:glibc-2.22中的NULL指針取消引用(CWE-476)的潛力[19654]數學:[x86_64]需要BZ的測試用例#19590修復[19671] localedata:缺少對malloc的完整性檢查()'tst-fmon.c'中的() 'tst-numeric.c'[19674]數學:[ldbl-128ibm] powl不正確的溢出處理[19677]數學:[ldbl-128ibm] remainderl相等測試不正確的零低部分[19678]數學:[ldbl-128ibm] nextafterl ,nexttowardl零結果的錯誤符號[19679] dynamic-link:gcc-4.9.3 C ++異常處理由於未對齊的堆棧[19726]區域設置而中斷:使用iconv()將UCS4LE轉換為INTERNAL不會更新錯誤情況下的指針和長度。 [19727] locale:使用iconv()從/向UTF-xx轉換並不總是報告UTF-16代理值的錯誤。[19755] nscd:gsc中的nscd斷言失敗[19758]動態鏈接:EXTRA_LD_ENVVARS中的錯誤為x86-64 [19759] libc:mempcpy不應該內聯[19762]動態鏈接:HAS_CPU_FEATURE / HAS_ARCH_FEATURE容易被誤用[ 19765] libc:s390需要一個優化的mempcpy [19779] glob:glob:緩衝區溢出GLOB_ALTDIRFUNC由於NAME_MAX限制假設不正確(CVE-2016-1234)[19783] build:benchtests不支持--enable-hardcoded-path -in-tests [19787] network:getnameinfo中缺少和不正確的截斷檢查[19790]數學:[ldbl-128ibm] nearbyintl在非默認舍入模式下不正確[19791] network:res_query.c中的斷言失敗,名稱不可連接服務器地址[19792] libc:MIPS:backtrace使用makecontext [19822] math:libm產生無限回溯。所以安裝clobbers舊版本[19825] network:resolv:send_vc可以在第二次響應中返回未初始化的數據到getaddrinfo [19830] network:nss_dns:應該檢查RDATA長度與緩衝區長度的關係[19831] network:nss_dns:getaddrinfo在面對時返回未初始化的數據無效大小的A / AAAA記錄[19837] nss:nss_db:對於具有較大緩衝區的某些長行沒有重試[19848]數學:對於n = -4,-5,-6,-7,powl(10,n)是關閉超過1 ULP [19853] stdio:以高精度打印IBM長雙精度有時不正確[19860] build:x86_64:tst-audit10和tst-auditmod10b的編譯錯誤[19861] nptl:libpthread用於fork的IFUNC解析器導致崩潰[19862] network:resolv,nss_dns:刪除意外記錄類型的剩餘記錄[19865]網絡:_nss_dns_getcanonname_r [19868]網絡中的斷言失敗或內存洩漏:nss_dns:內容代碼不跳過非PTR記錄[ 19879] network:nss_dns:getnetbyname實現堆棧溢出(CVE-2016-3075)[19881]字符串:改進x86-64 memset [19907]字符串:不正確的memcpy測試[19916] dynamic-link:S390:解析符號時不保存/恢復fprs / vrs [19925] libc :termios.h XCASE namespace [19928] string:memmove-vec-unaligned-erms。大數據大小的S很慢[19929] libc:limits.h NL_NMAX namespace [19931] stdio:vfprintf中的內存洩漏[19957] libc:clone(CLONE_VM)訪問無效的父內存[19963] localedata:en_IL:新的語言環境[19989 ] stdio:stdio.h cuserid namespace [19994] network:getaddrinfo不恢復gethosts中的RES_USE_INET6標誌[19996] locale:langinfo.h nl_langinfo_l namespace [20005] stdio:fflush用fmemopen打開的文件將位置重置為0 [20010] network:getaddrinfo:託管轉換中的堆棧溢出(CVE-2016-3706)[20012] stdio:libio:fmemopen追加模式失敗[20014] stdio:用於預先線程的stdio.h命名空間POSIX [20017] network:resolv:使用gmtime_r而不是p_secstodate中的gmtime [20023] libc:fcntl.h timespec namespace [20024] math:[x86_64] vectorized sincos tras the stack [20031] network:nss_hesiod:get_txt_records [20041]中的堆溢出時間:sys / time.h timespec namespace [20043] libc:unistd.h缺少UNIX98的cuserid和[20044]之前的libc:unistd .h缺少用於UNIX98的pthread_atfork [20051] libc:錯誤條件下錯誤標頭中的ttyslot [20054] libc:沒有為XPG4 [20055] libc:termios聲明gethostname。h缺少tcgetsid for XPG4 [20072] dynamic-link:x86 init_cpu_features在靜態可執行文件中調用兩次[20073] libc:sys / stat.h fchmod namespace [20074] libc:stdlib.h rand_r namespace [20076] libc:sys / stat .h缺少S_IFSOCK,S_ISSOCK for XPG4 [20094] libc:stdlib.h不應該為XPG3 [20111] libc聲明grantpt,ptsname,unlockpt:struct sockaddr_storage不能被聚合複製[20112] network:sunrpc:stack(frame)overflow在Sun RPC中clntudp_call(CVE-2016-4429)[20115]字符串:memset-vec-unaligned-erms.S中的額外對齊。[20119] libc:來自CPUID的處理器級別類型的錯誤掩碼[20139] dynamic-link:上部如果Glibc是使用不支持AVX512的AS構建的,則zmm為零[20151]數學:[ldbl-128 / ldbl-128ibm] j0l,j1l,y0l,y1l為sNaN參數返回sNaN [20153]數學:[ldbl-128ibm] sqrtl (sNaN)返回sNaN [20156]數學:[ldbl-128ibm] ceill,rintl等返回sNaN for sNaN參數[20157]數學:[powerpc] fabsl(sNaN)錯誤地引發“無效”[20160]數學:[p owerpc] ceil,rint等為sNaN輸入返回sNaN [20178] libc:posix_spawn {p}不應該調用exit [20191] stdio:libio:vtables hardening [20195] string:FMA4檢測需要CPUID執行寄存器eax = 0x80000001 [20198] libc:quick_exit錯誤地破壞C ++ 11線程對象。 [20205]數學:[i386 / x86_64] nextafterl錯誤遞增負次正規[20212]數學:acos(sNaN)返回sNaN [20213]數學:asin(sNaN)返回sNaN [20214]網絡:Linux頭與linux / in6同步。 h和ipv6.h再次。[20218]數學:[i386] asinhl(sNaN)返回sNaN [20219]數學:[i386] atanhl(sNaN)返回sNaN [20222] stdio:fopencookie:Mangle函數指針[20224] math:[i386] cbrtl(sNaN)返回sNaN [20225]數學:ldexp,scalbn,scalbln為sNaN輸入返回sNaN [20226]數學:[i386 / x86_64] expl,exp10l,expm1l為sNaN輸入返回sNaN [20227]數學:[i386 / x86_64] logl(sNaN )返回sNaN [20228]數學:[i386 / x86_64] log10l(sNaN)返回sNaN [20229]數學:[i386 / x86_64] log1pl(sNaN)返回sNaN [20232]數學:[ldbl-128] expm1l(sNaN)返回sNaN [20233]數學:[ldbl-128ibm] expm1l(sNaN)返回sNaN [20234]數學:[ldbl-128ibm] log1pl(sNaN)返回sNaN [20235]數學:[i386 / x86_64] log2l(sNaN)返回sNaN [ 20237] nss:nss_db:get * ent段錯誤,沒有先前的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]數學:[i386 / x86_64] fdiml為sNaN輸入返回sNaN [20260] string:../ sysdeps / x86 /bits / string。

    h:1092:3:錯誤:數組下標低於數組邊界[-Werror = array-bounds] [20262] nis:_nss_nis_initgroups_dyn總是返回NSS_STATUS_NOTFOUND [20263] nptl:健壯的互斥鎖死鎖如果其他線程請求timedlock(只有arm) / linux)[20277] libc:$ dp未在sysdeps / hppa / start.S中正確初始化。[20284] malloc:malloc:腐敗競技場避免導致不必要的mmap回退[20296]數學:[i386 / x86_64] scalbl返回sNaN sNaN輸入,缺少“無效”異常[20314] nptl:make [4]:*** [/usr/include/stdlib.h]錯誤1 [20316] localedata:id_ID:Februari而不是Pebruari [20327]字符串:POWER8 strcasecmp返回不正確的結果[20347]數學:失敗:測試:j0_downward(0xap + 0)[20348] libc:失敗:misc / tst-preadvwritev64 [20349] libc:64位值在p {readv,writev}中以不同方式傳遞{64} [20350] libc:p {read,write}沒有測試64 [20357]數學:1.5174239687223976 [20384]構建的錯誤cos結果:不要在非avx m上運行libmvec-sincos-avx *測試achines


版本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,17485,17501,17506,17508,17522,17555,17570,17571,17572,17573, 17574,17582,17583,17584,17585,17589,17594,17601,17608,17616,17625,17630,17633,17634,17635,17647,17653,17657,17658,17664,17665,1766,17682,17702,17717, 17719,17722,17723,17724,17725,17732,17733,17744,17745,17742,17774,17748,17775,17777,17780,1778,17782,17791,17793,17792,17779,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使用。
  • Altera Nios II的端口由Mentor Graphics提供。
  • 針對powerpc64 / powerpc64le優化了strcpy,stpcpy,strncpy,stpncpy,strcmp和strncmp實現。由Adhemerval Zanella(IBM)實施。
  • 在powerpc32,powerpc64和powerpc64le上添加了對pthread互斥鎖的TSX鎖定省略的支持。這可以改善支持HTM的系統上的現有程序的鎖定縮放。鎖定省略代碼僅使用--enable-lock-elision = yes啟用。此外,powerpc的TSX鎖定省略實現將在每個系統調用上發出事務中止,以避免在事務外部看到副作用。
  • 優化了AArch64的strcpy,stpcpy,strchrnul和strrchr實現。供稿人:ARM Ltd.
  • 使用SSE2未對齊加載/存儲優化的i386 memcpy函數。
  • CVE-2104-7817在某些輸入條件下,wordexp函數可以忽略WRDE_NOCMD標誌,導致在應用程序未請求時執行命令替換的shell。該實現現在在執行shell之前立即檢查WRDE_NOCMD並按預期返回錯誤WRDE_CMDSUB。
  • CVE-2012-3406 printf樣式函數在處理具有大量格式說明符的格式字符串時可能會遇到堆棧溢出。
  • CVE-2014-9402如果DNS響應包含意外格式的PTR記錄,則getnetbyname的nss_dns實現可能會遇到無限循環。
  • 可用於構建此版本GNU C庫的最低GCC版本是GCC 4.6。較舊的GCC版本和非GNU編譯器仍可用於使用GNU C庫編譯程序。
  • 現在,GNU C庫默認使用-Werror構建。可以通過使用--disable-werror配置來禁用此功能。
  • 新區域設置:tu_IN,bh_IN,raj_IN,ce_RU。
  • 已刪除過時的sigvec功能。這是啟動POSIX.1 sigaction接口的原始4.2BSD接口,該程序已經使用了大約25年。當然,使用sigvec的舊二進製文件的ABI兼容性保持不變。
  • 將gettext 0.19.3合併到intl子目錄中。這修復了使用較新版本的野牛的建築。
  • 支持MIPS o32 FPXX,FP64A和FP64 ABI擴展。原始MIPS o32硬浮ABI需要一個FPU,其中雙精度寄存器覆蓋兩個連續的單精度寄存器。 MIPS32R2引入了一種新的FPU模式(FR = 1),其中雙精度寄存器擴展了相應的單精度寄存器,這與o32硬浮點ABI不兼容。 MIPS SIMD ASE和MIPSR6架構都需要使用FR = 1來進行必要的轉換。新的o32 ABI擴展使用戶能夠隨著時間的推移從原始的o32 ABI遷移到更新的o32 FP64 ABI。為實現此目的,動態鏈接器現在跟踪任何加載對象的ABI並驗證新對像是否兼容。還將根據需要請求模式轉換,並拒絕不受支持的對象。 ABI檢查包括o32,n32和n64的軟浮動ABI和硬浮動ABI。

意見 GNU C Library

評論沒有發現
添加評論
打開圖片!