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 hard-float ABI不兼容。 MIPS SIMD ASE和MIPSR6架构都需要使用FR = 1来进行必要的转换。新的o32 ABI扩展使用户能够随着时间的推移从原始的o32 ABI迁移到更新的o32 FP64 ABI。为实现此目的,动态链接器现在跟踪任何加载对象的ABI并验证新对象是否兼容。还将根据需要请求模式转换,并拒绝不受支持的对象。 ABI检查包括o32,n32和n64的软浮动ABI和硬浮动ABI。

意见 GNU C Library

评论没有发现
添加评论
打开图片!