GNU C Library

Phần mềm chụp màn hình:
GNU C Library
Các chi tiết về phần mềm:
Phiên bản: 2.28 Cập nhật
Ngày tải lên: 16 Aug 18
Nhà phát triển: Roland McGrath
Giấy phép: Miễn phí
Phổ biến: 16

Rating: 3.0/5 (Total Votes: 2)

Thư viện GNU C là một phần mềm thư viện mã nguồn mở, miễn phí và mạnh mẽ cho bất kỳ bản phân phối GNU / Linux nào. Nó còn được gọi là Glibc và được yêu cầu bởi bất kỳ hệ điều hành máy tính giống UNIX nào. Thư viện GNU C chịu trách nhiệm xác định các cuộc gọi hệ thống, cũng như các chức năng cơ bản khác, chẳng hạn như malloc, mở, thoát, printf, v.v.


Được sử dụng theo mặc định trong tất cả các hệ điều hành dựa trên hạt nhân Linux

Thư viện GNU C được cài đặt và sử dụng theo mặc định trong tất cả hệ điều hành dựa trên hạt nhân Linux, được thiết kế từ nền tảng để hoạt động như thư viện C chính trong các hệ thống GNU và bất kỳ hệ điều hành nào khác được nhân Linux hỗ trợ.


Được thiết kế để di động

Glibc là một thư viện C hiệu năng cao, được viết hoàn toàn bằng ngôn ngữ lập trình C. Nó được thiết kế để di động, quốc tế hóa và được thiết kế để hỗ trợ tất cả các tiêu chuẩn có liên quan, bao gồm POSIX.1-2008 và ISO C11.


Hỗ trợ các tính năng của các biến thể UNIX nổi tiếng

Trong khi Thư viện GNU C có giao diện được quốc tế hoá hoàn toàn, nó cố gắng hỗ trợ các tính năng của các biến thể UNIX nổi tiếng, chẳng hạn như BSD và System V, nhờ vào các chế độ tương thích được tích hợp sẵn.

Bắt đầu với Thư viện GNU C

Mặc dù Thư viện GNU C được cài đặt mặc định trong hầu hết các hệ điều hành GNU / Linux, bạn cũng có thể tự cài đặt lại nó bằng cách sử dụng gói nguồn được phân phối trên trang web hoặc Softoware miễn phí. Để bắt đầu, hãy tải xuống và lưu tệp lưu trữ trên thư mục Nhà của bạn.

Giải nén tệp lưu trữ bằng tiện ích trình quản lý lưu trữ, mở cửa sổ đầu cuối, chuyển đến vị trí lưu trữ các tệp lưu trữ, chạy & lsquo; ./ configure & rsquo; lệnh để định cấu hình chương trình (xem lệnh & lsquo; ./ configure --help & rsquo; cho các tùy chọn tối ưu hóa khác nhau).

Sau đó chạy & lsquo; tạo & rsquo; lệnh biên dịch thư viện, có thể cài đặt toàn bộ hệ thống bằng cách chạy một trong các phần & lsquo; hãy cài đặt & rsquo; hoặc & lsquo; sudo cài đặt & rsquo; lệnh, tùy thuộc vào gốc của bạn hoặc người dùng đặc quyền.

Có gì mới trong bản phát hành này:

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

Tính năng mới trong phiên bản 2.27:

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

Có gì mới trong phiên bản:

  • Phiên bản hạt nhân Linux tối thiểu mà phiên bản này của Thư viện GNU C có thể được sử dụng với 3.2, ngoại trừ trên i [4567] 86 và x86_64, trong đó phiên bản kernel 2.6.32 hoặc mới hơn đủ (trên kiến ​​trúc đã yêu cầu kernel phiên bản mới hơn 3.2, những yêu cầu đó vẫn không thay đổi). Các tiêu đề hạt nhân Linux 3.2 hoặc mới hơn được yêu cầu trên tất cả các kiến ​​trúc.
  • Ngôn ngữ pap_AN đã bị xóa. Điều này đã không được chấp nhận trong một thời gian dài. Nó đã được thay thế bởi pap_AW & amp; pap_CW, cả hai từ khóa đã được bao gồm trong các bản phát hành trước.
  • Các hàm readdir_r và readdir64_r đã không được chấp nhận. Chúng tôi khuyên bạn nên sử dụng readdir và readdir64 thay thế.
  • Loại "chờ đợi công đoàn" đã bị xóa. Nó đã không được chấp nhận vào đầu những năm 1990 và không bao giờ là một phần của POSIX. Mã ứng dụng nên sử dụng loại int thay vì "chờ đợi công đoàn".
  • Một hành động NSS mới được thêm vào để tạo thuận lợi cho việc quản trị hệ thống phân tán lớn. Hành động, MERGE, cho phép các cửa hàng người dùng từ xa như LDAP được hợp nhất vào các cửa hàng người dùng cục bộ như / etc / groups để cung cấp bộ thông tin đăng nhập được hợp nhất, được cập nhật và quản lý dễ dàng. Hành động mới có thể được sử dụng bằng cách cấu hình nó trong /etc/nsswitch.conf: group: files [SUCCESS = merge] nis Được thực hiện bởi Stephen Gallagher (Red Hat).
  • Biến __malloc_initialize_hook không được chấp nhận đã bị xóa khỏi API.
  • Tùy chọn kiểu địa phương - chưa được sử dụng dài đã bị xóa. Nó đã không làm bất cứ điều gì trong hơn 16 năm. Các tập lệnh sử dụng tùy chọn này có thể thả nó một cách an toàn.
  • nextupl, nextup, nextupf, nextdownl, nextdown và nextdownf được thêm vào libm. Chúng được xác định bởi TS 18661 và IEEE754-2008. Các hàm tiếp theo trả về giá trị biểu diễn tiếp theo theo hướng của vô cực dương và hàm kế tiếp trả về giá trị biểu diễn tiếp theo theo hướng vô cực âm. Các tiện ích này hiện được bật dưới dạng tiện ích mở rộng GNU.
  • Các thay đổi liên quan đến bảo mật:
  • Một bản sao ngăn xếp không cần thiết trong _nss_dns_getnetbyname_r đã bị xóa. Nó có thể dẫn đến một tràn ngăn xếp khi getnetbyname được gọi với một tên quá dài. (CVE-2016-3075)
  • Trước đây, getaddrinfo đã sao chép một lượng lớn dữ liệu địa chỉ vào ngăn xếp, ngay cả sau khi sửa chữa CVE-2013-4458 đã được áp dụng, có khả năng dẫn đến tràn ngăn xếp. Bây giờ getaddrinfo sử dụng phân bổ heap. Báo cáo bởi Michael Petlan. (CVE-2016-3706)
  • Hàm glob bị tràn bộ đệm dựa trên stack khi nó được gọi với cờ GLOB_ALTDIRFUNC và gặp phải một tên tệp dài. Alexander Cherepanov khai báo. (CVE-2016-1234)
  • Ứng dụng khách RDP Sun RPC có thể xả hết không gian ngăn xếp khi tràn ngập các thông điệp ICMP và UDP được tạo thủ công. Báo cáo bởi Aldy Hernandez 'alloca plugin cho GCC. (CVE-2016-4429)
  • Mã quản lý máy chủ tên IPv6 trong libresolv có thể dẫn đến rò rỉ bộ nhớ cho mỗi chuỗi được tạo, thực hiện tra cứu đặt tên không thành công và thoát. Theo thời gian, điều này có thể dẫn đến việc từ chối dịch vụ do cạn kiệt bộ nhớ. Báo cáo của Matthias Schiffer. (CVE-2016-5417)
  • Các lỗi sau được giải quyết với bản phát hành này:
  • [1170] localedata: ne_NP: cập nhật tập tin định nghĩa miền địa phương Nepal [3629]: mô tả stpcpy trong string.texi đề cập đến MS-DOG thay vì MS-DOS. [6527] malloc: [powerpc] Liên kết Malloc không đủ cho PowerPC [6796] toán học: fdim () không đặt errno trên tràn [10354] libc: posix_spawn nên sử dụng vfork () trong nhiều trường hợp hơn hiện tại [11213] localedata: localedata: thêm tuyên bố từ chối bản quyền cho các tệp cục bộ [12143] localedata: chr_US: locale Cherokee mới [12450] localedata: sgs_LT: locale mới [12676] localedata: ln_CD: locale mới [13237] localedata: LC_ADDRESS.country_name: cập nhật tất cả các ngôn ngữ w / CLDR mới nhất dữ liệu [13304] toán học: fma, fmaf, fmal tạo kết quả sai [14259] build: --localedir arg để cấu hình bị bỏ qua [14499] nptl: Liệu posix_spawn có gọi trình xử lý atfork / sử dụng vfork không? [14750] libc: Điều kiện chủng tộc trong việc sử dụng posix_spawn vfork và trình xử lý tín hiệu [14934] localedata: es_CL: sai ngày đầu tiên của ngày trong tuần chilean locale [15262] localedata: LC_MESSAGES.yesexpr / noexpr: sử dụng không phù hợp của romanisation [15263] localedata: LC_MESSAGES.yesexpr / noexpr: sử dụng không nhất quán 1/0 và +/- [15264] localedata: LC_MESSAGES.yesstr / nostr: thiếu nhiều ngôn ngữ [15368] nptl: raise () không phải là async-signal-safe [15479] toán học: ceil, floor, round và trunc tăng ngoại lệ không chính xác [15578] localedata: kk_KZ: các bản cập nhật khác nhau [16003] localedata: pap_AN: punt old locale [16137] localedata: iw_IL: punt old locale [16190] localedata: eo: new esperanto locale [16374] localedata: lv_LV: thay đổi ký hiệu tiền tệ trong LC_MONETARY thành euro [16742] malloc: race condition: pthread_atfork () được gọi trước malloc đầu tiên () dẫn đến hành vi khóa / khóa chết bất ngờ [16975] localedata: LC_MESSAGES.yesexpr / noexpr: xem lại viết hoa ở tất cả các ngôn ngữ [16983] localedata: postal_fmt không cho phép% l và% n modifier [17565] localedata : pt_PT: sai (work-) tuần bắt đầu [17899] toán học: [powerpc] floorl trả về số không âm với FE_DOWNWARD [17950] build: Xây dựng thất bại với -msse [18205] localedata: be_BY *: sai first_weekday và first_workday [18433] libc : posix_spawn không trả lại đúng khi không thực thi [18453] localedata: charmaps / IBM875: mã không chính xác [18712] string: bits / string2.h không tương thích với -O2 -Werror = đóng gói -Windystem-header [18896] localedata: he_IL: cải tiến cho tiền tệ [18911] localedata: ro_RO: Sửa tên ngày trong tuần cho "Thứ ba" trong dữ liệu ngôn ngữ Rumani [18960] ngôn ngữ: s390: _nl_locale_subfreeres sử dụng opl opcode trên biểu tượng không được ký hiệu [19056] libc: Ngừng sử dụng readdir_r [19133] localedata: pt_ *: days & amp; tháng phải là chữ thường trong tiếng Bồ Đào Nha [19198] localedata: nl_NL: các cải tiến nhỏ cho ngôn ngữ Hà Lan [19257]: Rò rỉ bộ nhớ trên mỗi luồng trong __res_vinit với máy chủ tên IPv6 (CVE-2016-5417) [19269] build: tst-audit4 và thất bại tst-audit10 với gcc-6 trên máy phi avx [19400] ngôn ngữ: Ngôn ngữ bị thiếu trong "iso-639.def", sửa lỗi nhỏ trong mô tả [19431] malloc: Deadlock giữa fflush, getdelim và fork [19505] libc: Kiểm tra tính hợp lệ của bộ mô tả tệp không đúng trong posix_spawn_file_actions_add {mở, đóng, dup2} [19509] liên kết động: dlsym, dlvsym không báo cáo lỗi thông qua dlerror khi sử dụng RTLD_NEXT [19512] locale: Stale `#ifndef HAVE_BUILTIN_EXPECT 'trong` intl / {gettextP , loadinfo}.h '[19534] libc: execle, execlp có thể sử dụng malloc [19568] localedata: * _CH: Địa phương của Thụy Sĩ có sự khởi đầu không ổn định trong tuần [19573] mạng: res_nclose và __res_maybe_init không đồng ý về việc khởi tạo máy chủ tên, phá vỡ Hesiod [19575] localedata: Trạng thái trong số các bảng GB18030 [19581] localedata: sr_ * date_fmt chứa chuỗi mới bổ sung [19583]: SSSE3_Fast_Copy_Backward flag cần được kích hoạt cho lõi máy xúc AMD [19592]: [ldbl-128ibm] không đúng ở chế độ làm tròn không mặc định [19593] ]: [ldbl-128ibm] truncl không chính xác trong chế độ làm tròn không mặc định [19594]: [ldbl-128ibm] làm tròn không chính xác ở chế độ làm tròn không mặc định [19595]: [ldbl-128ibm] fmodl không chính xác cho kết quả trong subnormal phạm vi [19602] toán học: [ldbl-128ibm] fmodl xử lý các đối số bằng với phần 0 không chính xác [19603] toán học: [ldbl-128ibm] remainderl, remquol xử lý dấu không chính xác trong kiểm tra bình đẳng [19610] dynamic-link: ldconfig - X xóa các liên kết tượng trưng cũ [19613] libc: s390x (64 bit) mở rộng macro WCOREDUMP và các ngôn ngữ khác [19633] ngôn ngữ: strfmon_l áp dụng ngôn ngữ toàn cục cho định dạng số [19642] mạng: rò rỉ bộ nhớ trong getnameinfo [19648] libc: test-skeleton.c: Không đặt RLIMIT_DATA [19653] libc: Tiềm năng cho con trỏ NULL dereference (CWE-476) trong glibc-2.22 [19654] toán học: [x86_64] Cần testcase cho BZ # 19590 sửa [19671] localedata: Mất kiểm tra tính trung thực cho malloc () trong 'tst-fmon.c' & amp; 'tst-numeric.c' [19674] math: [ldbl-128ibm] powl overflow handling [19677] math: [ldbl-128ibm] remainderl kiểm tra bình đẳng không chính xác cho phần không thấp [19678] toán học: [ldbl-128ibm] nextafterl , nexttowardl dấu không chính xác của kết quả không [19679] liên kết động: gcc-4.9.3 Xử lý ngoại lệ C ++ bị hỏng do chồng không được sắp xếp [19726] locale: Chuyển đổi UCS4LE thành INTERNAL với biểu tượng () không cập nhật con trỏ và độ dài trong trường hợp lỗi . [19727] ngôn ngữ: Chuyển đổi từ / sang UTF-xx bằng biểu tượngv () không phải lúc nào cũng báo cáo lỗi trên các giá trị thay thế UTF-16.[19755] nscd: lỗi xác nhận nscd trong gc [19758] liên kết động: Typo trong EXTRA_LD_ENVVARS cho x86-64 [19759] libc: mempcpy không được gạch chân [19762] liên kết động: HAS_CPU_FEATURE / HAS_ARCH_FEATURE rất dễ sử dụng sai [ 19765] libc: s390 cần một mempcpy được tối ưu hóa [19779] glob: glob: tràn bộ nhớ đệm với GLOB_ALTDIRFUNC do không đúng giới hạn giả định NAME_MAX (CVE-2016-1234) [19783]: benchtests không hỗ trợ --enable-hardcoded-path mạng kiểm tra trong [19787]: kiểm tra cắt ngắn và không chính xác trong getnameinfo [19790] toán học: [ldbl-128ibm] nearbyintl không đúng trong chế độ làm tròn không mặc định [19791]: Lỗi xác nhận trong res_query.c với tên không thể kết nối địa chỉ máy chủ [19792] libc: MIPS: backtrace mang lại backtrace vô hạn với makecontext [19822] math: libm.do đó cài đặt clobbers phiên bản cũ [19825] mạng: resolv: send_vc có thể trả về dữ liệu chưa được khởi tạo trong phản hồi thứ hai cho mạng getaddrinfo [19830]: nss_dns: nên kiểm tra độ dài RDATA theo chiều dài bộ đệm [19831] mạng: nss_dns: getaddrinfo trả về dữ liệu chưa được khởi tạo khi đối mặt với A / Bản ghi AAAA có kích thước không hợp lệ [19837] nss: nss_db: Không thử lại một số dòng dài có bộ đệm lớn hơn [19848] toán: powl (10, n) cho n = -4, -5, -6, -7 là tắt bởi hơn 1 ULP [19853] stdio: In ấn IBM dài gấp đôi trong thập phân với độ chính xác cao đôi khi không chính xác [19860] build: x86_64: biên dịch lỗi cho tst-audit10 và tst-auditmod10b [19861] nptl: libpthread IFUNC resolver for fork có thể dẫn đến sự cố [19862] mạng: resolv, nss_dns: Xóa đăng nhập còn lại của các loại bản ghi bất ngờ [19865] mạng: Lỗi xác nhận hoặc rò bộ nhớ trong mạng _nss_dns_getcanonname_r [19868]: nss_dns: mã netent không bỏ qua các bản ghi không phải PTR [ 19879] mạng: nss_dns: Stack tràn trong getnetbyname implementa chuỗi tion (CVE-2016-3075) [19881]: Cải thiện bộ nhớ x86-64 [19907]: Kiểm tra memcpy không chính xác [19916] liên kết động: S390: fprs / vrs không được lưu / khôi phục trong khi giải quyết các biểu tượng [19925] libc : termios.h XCASE namespace [19928] string: memmove-vec-unaligned-erms.S chậm với kích thước dữ liệu lớn [19929] libc: limits.h NL_NMAX namespace [19931] stdio: Rò rỉ bộ nhớ trong vfprintf [19957] libc: clone (CLONE_VM) truy cập bộ nhớ gốc không hợp lệ [19963] localedata: en_IL: New locale [19989 ] stdio: stdio.h cuserid namespace [19994] network: getaddrinfo không khôi phục lại cờ RES_USE_INET6 trong gethosts [19996] locale: langinfo.h nl_langinfo_l namespace [20005] stdio: fflush trên một tệp được mở bằng vị trí đặt lại fmemopen thành 0 [20010] mạng: getaddrinfo: Stack tràn trong bản dịch hostent (CVE-2016-3706) [20012] stdio: libio: fmemopen nối thêm chế độ thất bại [20014] stdio: stdio.h không gian tên cho tiền đề POSIX [20017] mạng: resolv: Sử dụng gmtime_r thay vì gmtime trong p_secstodate [20023] libc: fcntl.h timespec namespace [20024] math: [x86_64] vectorized sincos trashes stack [20031] network: nss_hesiod: Heap overflow trong get_txt_records [20041] time: sys / time.h timespec không gian tên [20043] libc: unistd.h thiếu cuserid cho UNIX98 và trước [20044] libc: unistd .h thiếu pthread_atfork cho UNIX98 [20051] libc: ttyslot trong tiêu đề sai trong điều kiện sai [20054] libc: gethostname không được khai báo cho XPG4 [20055] libc: termios.h thiếu tcgetsid cho XPG4 [20072] dynamic-link: x86 init_cpu_features được gọi hai lần trong thực thi tĩnh [20073] libc: sys / stat.h fchmod namespace [20074] libc: stdlib.h rand_r namespace [20076] libc: sys / stat .h thiếu S_IFSOCK, S_ISSOCK cho XPG4 [20094] libc: stdlib.h không nên khai báo grantpt, ptsname, unlockpt cho XPG3 [20111] libc: struct sockaddr_storage không thể được tổng hợp sao chép [20112] mạng: sunrpc: stack (frame) overflow trong Sun RPC clntudp_call (CVE-2016-4429) [20115] string: Thêm liên kết trong memset-vec-unaligned-erms.S [20119] libc: Mặt nạ sai cho các loại bộ xử lý cấp từ liên kết động CPUID [20139]: Phần trên của zmm là zeroed nếu Glibc được xây dựng với AS không hỗ trợ AVX512 [20151] toán học: [ldbl-128 / ldbl-128ibm] j0l, j1l, y0l, y1l trả về sNaN cho đối số sNaN [20153] math: [ldbl-128ibm] sqrtl (sNaN) trả về sNaN [20156] toán học: [ldbl-128ibm] ceill, rintl vv trả về sNaN cho đối số sNaN [20157]: [powerpc] fabsl (sNaN) sai làm tăng "không hợp lệ" [20160] toán học: [p owerpc] ceil, rint, v.v.return sNaN cho đầu vào sNaN [20178] libc: posix_spawn {p} không nên gọi exit [20191] stdio: libio: vtables hardening [20195] string: phát hiện FMA4 yêu cầu thực thi CPUID với thanh ghi eax = 0x80000001 [20198] libc: quick_exit hủy không chính xác Đối tượng chuỗi C ++ 11. [20205] math: [i386 / x86_64] nextafterl không chính xác incrementing subnormals tiêu cực [20212] math: acos (sNaN) trả về sNaN [20213] math: asin (sNaN) trả về sNaN [20214] network: Linux header sync with linux / in6. h và ipv6.h một lần nữa.[20218] toán học: [i386] asinhl (sNaN) trả về sNaN [20219] toán học: [i386] atanhl (sNaN) trả về sNaN [20222] stdio: fopencookie: Con trỏ hàm mangle [20224] toán học: [i386] cbrtl (sNaN) trả về sNaN [20225] math: ldexp, scalbn, scalbln return sNaN cho đầu vào sNaN [20226]: [i386 / x86_64] expl, exp10l, expm1l trả về sNaN cho đầu vào sNaN [20227] math: [i386 / x86_64] logl (sNaN ) trả về sNaN [20228] math: [i386 / x86_64] log10l (sNaN) trả về sNaN [20229] math: [i386 / x86_64] log1pl (sNaN) trả về sNaN [20232] math: [ldbl-128] expm1l (sNaN) trả về sNaN [20233] math: [ldbl-128ibm] expm1l (sNaN) trả về sNaN [20234] math: [ldbl-128ibm] log1pl (sNaN) trả về sNaN [20235] math: [i386 / x86_64] log2l (sNaN) trả về sNaN [ 20237] nss: nss_db: get * ent segfaults mà không cần thiết lập trước * ent [20240] math: modf (sNaN) trả về sNaN [20248] libc: debug / tst-longjump_chk2 gọi printf từ trình xử lý tín hiệu [20250] math: frexp (sNaN) ) trả về sNaN [20252] toán học: atan2 (sNaN, qNaN) không tăng "không hợp lệ" [20255] ma th: [i386] fdim, fdimf trả về với phạm vi thừa và độ chính xác / làm tròn đôi [20256] toán học: [i386 / x86_64] fdiml trả về sNaN cho chuỗi đầu vào sNaN [20260]: ../sysdeps/x86/bits/string.

    h: 1092: 3: lỗi: chỉ số mảng nằm dưới giới hạn mảng [-Werror = array-bounds] [20262] nis: _nss_nis_initgroups_dyn luôn trả về NSS_STATUS_NOTFOUND [20263] nptl: deadlocks mạnh mẽ mutex nếu các yêu cầu thread timedlock (Chỉ nhánh / linux) [20277] libc: $ dp không được khởi tạo đúng trong sysdeps / hppa / start.S [20284] malloc: malloc: Tham nhũng tránh trường gây ra các lỗi không cần thiết mmap [20296] toán học: [i386 / x86_64] scalbl trả về sNaN cho Đầu vào sNaN, thiếu các ngoại lệ "không hợp lệ" [20314] nptl: make [4]: ​​*** [/usr/include/stdlib.h] Lỗi 1 [20316] localedata: id_ID: Februari thay vì chuỗi Pebruari [20327]: POWER8 strcasecmp trả về kết quả không đúng [20347] toán học: Thất bại: Kiểm tra: j0_downward (0xap + 0) [20348] libc: FAIL: misc / tst-preadvwritev64 [20349] libc: giá trị 64 bit được truyền khác nhau trong p {readv, writev} {64} [20350] libc: Không có phép thử cho phép toán p {read, write} 64 [20357]: Kết quả cos không chính xác cho 1.5174239687223976 [20384] build: Không chạy các thử nghiệm libmvec-sincos-avx * trên non avx m achines

Tính năng mới trong phiên bản 2.23:

  • CVE-2015-7547: glibc getaddrinfo () tràn bộ đệm dựa trên ngăn xếp - Cố định trên nhánh phát triển cho bản phát hành glibc 2.23.

Tính năng mới trong phiên bản 2.21:

  • Các lỗi sau được giải quyết với bản phát hành này: 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, 17668, 17682, 17702, 17717, 17719, 17722, 17723, 17724, 17725, 17732, 17733, 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 Trong những điều kiện nhất định, wscanf có thể cấp phát bộ nhớ quá ít cho các đối số được quét và tràn bộ đệm được cấp phát. Bây giờ việc triển khai thực hiện chính xác kích thước bộ đệm cần thiết khi sử dụng malloc.
  • Một thuật toán semaphore mới đã được triển khai trong mã C chung cho tất cả các máy. Các triển khai lắp ráp semaphore tùy chỉnh trước đó rất khó để giải thích hoặc đảm bảo rằng chúng an toàn. Phiên bản semaphore mới hỗ trợ các máy có hoạt động nguyên tử 64 bit hoặc 32 bit. Thuật toán semaphore mới được sử dụng bởi sem_init, sem_open, sem_post, sem_wait, sem_timedwait, sem_trywait và sem_getvalue.
  • Cổng đến Altera Nios II đã được đóng góp bởi Mentor Graphics.
  • Các triển khai strcpy, stpcpy, strncpy, stpncpy, strcmp và strncmp được tối ưu hóa cho powerpc64 / powerpc64le. Được thực hiện bởi Adhemerval Zanella (IBM).
  • Đã thêm hỗ trợ cho việc xóa bỏ khóa TSX của các mutex trên nền powerpc32, powerpc64 và powerpc64le. Điều này có thể cải thiện việc mở rộng quy mô khóa của các chương trình hiện có trên các hệ thống có khả năng HTM. Mã rạch khóa chỉ được bật với --enable-lock-elision = yes. Ngoài ra, việc thực thi elision khóa TSX cho powerpc sẽ phát hành một giao dịch hủy bỏ trên mọi syscall để tránh các tác dụng phụ có thể nhìn thấy bên ngoài các giao dịch.
  • Triển khai strcpy, stpcpy, strchrnul và strrchr được tối ưu hóa cho AArch64. Đóng góp bởi ARM Ltd.
  • Các chức năng ghi nhớ i386 được tối ưu hóa với tải / lưu trữ không khớp SSE2.
  • CVE-2104-7817 Chức năng wordexp có thể bỏ qua cờ WRDE_NOCMD trong các điều kiện đầu vào nhất định dẫn đến việc thực thi một trình bao để thay thế lệnh khi ứng dụng không yêu cầu nó. Việc thực hiện bây giờ kiểm tra WRDE_NOCMD ngay trước khi thực hiện trình bao và trả về lỗi WRDE_CMDSUB như mong đợi.
  • Các hàm kiểu printf kiểu CVE-2012-3406 có thể chạy vào tràn ngăn xếp khi xử lý các chuỗi định dạng với số lượng lớn các trình định dạng định dạng.
  • CVE-2014-9402 Việc triển khai nss_dns của getnetbyname có thể chạy vào vòng lặp vô hạn nếu phản hồi DNS chứa bản ghi PTR có định dạng không mong muốn.
  • Phiên bản GCC tối thiểu có thể được sử dụng để xây dựng phiên bản này của Thư viện GNU C là GCC 4.6. Các phiên bản GCC cũ hơn và các trình biên dịch không phải GNU, vẫn có thể được sử dụng để biên dịch các chương trình bằng cách sử dụng Thư viện GNU C.
  • Thư viện GNU C hiện được xây dựng với -Werror theo mặc định. Điều này có thể bị tắt bằng cách định cấu hình bằng --disable-werror.
  • Miền địa phương mới: tu_IN, bh_IN, raj_IN, ce_RU.
  • Chức năng sigvec lỗi thời đã bị xóa. Đây là giao diện 4.2BSD ban đầu đã truyền cảm hứng cho giao diện sigaction POSIX.1, mà các chương trình đã được sử dụng thay thế trong khoảng 25 năm. Tất nhiên, khả năng tương thích ABI cho các tệp nhị phân cũ bằng sigvec vẫn nguyên vẹn.
  • Gettext được hợp nhất 0,19.3 vào thư mục con intl. Điều này khắc phục việc xây dựng bằng các phiên bản mới hơn của bò rừng.
  • Hỗ trợ các phần mở rộng MIPS o32 FPXX, FP64A và FP64 ABI. Bản gốc cứng MIPS o32 cứng ABI đòi hỏi một FPU nơi đăng ký chính xác gấp đôi phủ hai thanh ghi đơn chính xác liên tiếp. MIPS32R2 đã giới thiệu một chế độ FPU mới (FR = 1) trong đó các thanh ghi chính xác kép mở rộng các thanh ghi đơn chính xác tương ứng không tương thích với ABI cứng phao. MIPS SIMD ASE và kiến ​​trúc MIPSR6 đều yêu cầu sử dụng FR = 1 để thực hiện quá trình chuyển đổi cần thiết. Các phần mở rộng o32 mới của ABI cho phép người dùng di chuyển theo thời gian từ o32 ABI ban đầu đến bản cập nhật o32 FP64 ABI. Để đạt được điều này, trình liên kết động bây giờ theo dõi ABI của bất kỳ đối tượng được tải nào và xác minh rằng các đối tượng mới tương thích. Chuyển tiếp chế độ cũng sẽ được yêu cầu theo yêu cầu và các đối tượng không được hỗ trợ sẽ bị từ chối. Kiểm tra ABI bao gồm cả ABI float mềm và cứng cho o32, n32 và n64.

Ý kiến ​​để GNU C Library

Bình luận không
Nhập bình luận
Bật hình ảnh!