ห้องสมุด GNU C เป็นซอฟต์แวร์โอเพ่นซอร์สฟรีและมีประสิทธิภาพสำหรับการกระจาย GNU / Linux เป็นที่รู้จักกันว่า Glibc และต้องใช้โดยระบบปฏิบัติการคอมพิวเตอร์ใด ๆ ของยูนิกซ์ GNU C Library รับผิดชอบในการกำหนดสายระบบรวมถึงฟังก์ชันพื้นฐานอื่น ๆ เช่น malloc, open, exit, printf ฯลฯ
ใช้เป็นค่าเริ่มต้นในระบบปฏิบัติการที่ใช้เคอร์เนลลินุกซ์ทั้งหมด
GNU C Library ถูกติดตั้งและใช้เป็นค่าเริ่มต้นในระบบปฏิบัติการ Linux kernel ทั้งหมดที่ออกแบบมาจากพื้นดินเพื่อทำหน้าที่เป็นไลบรารี C หลักในระบบ GNU และระบบปฏิบัติการอื่น ๆ ที่ใช้ Linux kernel
ออกแบบมาเพื่อพกพา
Glibc เป็นไลบรารี C ที่มีประสิทธิภาพสูงซึ่งเขียนขึ้นโดยใช้ภาษาซี (C) ได้รับการออกแบบมาให้พกพาสากลและออกแบบมาเพื่อสนับสนุนมาตรฐานที่เกี่ยวข้องทั้งหมดรวมทั้ง POSIX.1-2008 และ ISO C11
สนับสนุนคุณสมบัติของตัวแปร UNIX ที่รู้จักกันดี
ในขณะที่ GNU C Library มีส่วนติดต่อแบบสากลอย่างเต็มที่จะพยายามสนับสนุนคุณลักษณะต่างๆของตัวแปร UNIX ที่รู้จักกันดีเช่น BSD และ System V ด้วยโหมดการทำงานร่วมกันในตัว
เริ่มต้นใช้งาน GNU C Library
ในขณะที่ GNU C Library ถูกติดตั้งโดยค่าเริ่มต้นในเกือบทุกระบบปฏิบัติการ GNU / Linux คุณสามารถติดตั้งได้เองโดยใช้แพคเกจต้นทางที่เผยแพร่บนเว็บไซต์ของ Softoware หรือไม่เสียค่าใช้จ่าย ในการเริ่มต้นให้ดาวน์โหลดและบันทึกข้อมูลที่จัดเก็บไว้ในโฮมไดเร็กตอรี่ของคุณ
ปลดปล่อยที่เก็บข้อมูลด้วยยูทิลิตีผู้จัดการที่เก็บถาวรเปิดหน้าต่างเทอร์มินัลไปที่ตำแหน่งที่เก็บไฟล์ที่เก็บถาวรแล้วเรียกใช้ & lsquo; ./ configure & rsquo; เพื่อกำหนดค่าโปรแกรม (ดูคำแนะนำ & lsquo ;/ configure --help & rsquo ;, สำหรับตัวเลือกการเพิ่มประสิทธิภาพต่างๆ)
จากนั้นเรียกใช้ & lsquo; make & rsquo; คำสั่งเพื่อคอมไพล์ไลบรารีซึ่งสามารถติดตั้งได้ทั้งระบบโดยเรียกใช้การตั้งค่า & lsquo; make install & rsquo; หรือ & lsquo; sudo make install & rsquo; คำสั่งขึ้นอยู่กับว่ารากหรือผู้ใช้ที่มีสิทธิพิเศษของคุณ
มีอะไรใหม่ ในรุ่นนี้:
- https://sourceware.org/ml/libc-announce/2018/msg00000.html
มีอะไรใหม่ ในเวอร์ชัน 2.27:
- https://sourceware.org/ml/libc-announce/2018/msg00000.html
มีอะไรใหม่ ในเวอร์ชัน:
- รุ่นเคอร์เนลลินุกซ์ต่ำสุดที่ GNU C Library รุ่นนี้สามารถใช้งานได้คือ 3.2 ยกเว้นใน i 4567 86 และ x86_64 โดย Linux kernel เวอร์ชัน 2.6.32 หรือสูงกว่านั้นพอเพียง (บนสถาปัตยกรรมที่ต้องการ kernel แล้ว) รุ่นล่าสุดมากกว่า 3.2 ข้อกำหนดเหล่านี้ยังคงไม่เปลี่ยนแปลง) ต้องใช้ส่วนหัวของ Linux 3.2 หรือใหม่กว่าในสถาปัตยกรรมทั้งหมด
- สถานที่ของ pap_AN ถูกลบแล้ว เรื่องนี้ได้รับการคัดค้านเป็นเวลานานแล้ว แทนที่ด้วย pap_AW & amp; pap_CW ซึ่งทั้งสองอย่างนี้มีอยู่ในเวอร์ชันก่อนหน้านี้
- ฟังก์ชัน readdir_r และ readdir64_r ถูกเลิกใช้แล้ว ขอแนะนำให้ใช้ readdir และ readdir64 แทน
- ประเภท "union wait" ถูกนำออกแล้ว มันก็เลิกในช่วงต้นยุค 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
- ตัวเลือกแบบเดิมที่ไม่ได้ใช้งานเป็นเวลานานถูกนำออกแล้ว มันไม่ได้ทำอะไรมานานกว่า 16 ปี สคริปต์ที่ใช้ตัวเลือกนี้สามารถวางไว้ได้อย่างปลอดภัย
- nextupl, nextup, nextupf, nextdownl, nextdown และ nextdownf จะถูกเพิ่มลงใน libm มีการกำหนดโดย TS 18661 และ IEEE754-2008 ฟังก์ชัน nextup ส่งค่าที่แสดงต่อไปในทิศทางของอินฟินิตี้บวกและฟังก์ชัน nextdown จะส่งค่าที่เป็นตัวแทนต่อไปในทิศทางของอินฟินิตี้เชิงลบ ขณะนี้มีการเปิดใช้งานเป็นส่วนขยายของ GNU
- การเปลี่ยนแปลงที่เกี่ยวข้องกับความปลอดภัย:
- สำเนาสแต็คที่ไม่จำเป็นใน _nss_dns_getnetbyname_r ถูกเอาออก อาจส่งผลให้ stack overflow เมื่อ getnetbyname ถูกเรียกว่ามีชื่อยาวเกินไป (CVE-2016-3075)
- ก่อนหน้านี้ getaddrinfo ได้คัดลอกข้อมูลที่อยู่จำนวนมากไปยังกองซ้อนแม้ว่าจะมีการนำการแก้ไขสำหรับ CVE-2013-4458 มาใช้ซึ่งอาจทำให้สแตกล้น ตอนนี้ getaddrinfo ใช้การจัดสรรฮีปแทน รายงานโดย Michael Petlan (CVE-2016-3706)
- ฟังก์ชั่น glob ได้รับความเสียหายจากบัฟเฟอร์ล้นเมื่อเรียกว่ามีธง GLOB_ALTDIRFUNC และพบชื่อไฟล์ที่ยาว รายงานโดยอเล็กซานเด Cherepanov (CVE-2016-1234)
- ไคลเอ็นต์ Sun RPC UDP สามารถใช้พื้นที่ว่างในกองซ้อนที่มีอยู่ทั้งหมดได้เมื่อน้ำท่วมด้วยข้อความ ICMP และ UDP ที่สร้างขึ้น รายงานโดย Alda Hernandez 'alloca ปลั๊กอินสำหรับ GCC (CVE-2016-4429)
- รหัสการจัดการเซิร์ฟเวอร์ชื่อ IPv6 ใน libresolv อาจทำให้เกิดการรั่วไหลของหน่วยความจำสำหรับแต่ละเธรดที่สร้างขึ้นดำเนินการค้นหาและตั้งค่าการค้นหาชื่อที่ล้มเหลว เมื่อเวลาผ่านไปอาจส่งผลให้มีการปฏิเสธบริการเนื่องจากความอ่อนเพลียของหน่วยความจำ รายงานโดย Matthias Schiffer (CVE-2016-5417)
- ข้อบกพร่องต่อไปนี้ได้รับการแก้ไขโดยใช้รีลีสนี้: <>[1170] localedata: ne_NP: ปรับปรุงไฟล์คำจำกัดความของเนปาล [3629] manual: คำอธิบาย stpcpy ใน string.texi หมายถึง MS-DOG แทน MS-DOS ไม่สามารถตั้งค่า errno overflow [10354] libc: posix_spawn ควรใช้ vfork () ในกรณีที่มากกว่าปัจจุบัน [11213] localedata: localedata: [6513] malloc: [powerpc] การจัดตำแหน่ง Malloc ไม่เพียงพอสำหรับ PowerPC [6796] math: fdim () เพิ่มข้อจำกัดความรับผิดชอบลิขสิทธิ์ในไฟล์ locale [12143] localedata: chr_US: new Cherokee locale [12450] localedata: sgs_LT: ตำแหน่งที่ตั้งใหม่ [12676] localedata: ln_CD: ตำแหน่งที่ตั้งใหม่ [13237] localedata: LC_ADDRESS.country_name: ปรับปรุงตำแหน่งที่ตั้งทั้งหมดโดยล่าสุด CLDR ข้อมูล [13304] คณิตศาสตร์: fma, fmaf, fmal สร้างผลลัพธ์ที่ไม่ถูกต้อง [14259] build: --localedir arg เพื่อกำหนดค่าจะถูกละเว้น [14499] nptl: ไม่ posix_spawn เรียกใช้ handler atfork / ใช้ vfork? [14746] libc: สภาวะการแข่งขันในการใช้โพรเซส _spawn vfork กับตัวจัดการสัญญาณ [14934] localedata: es_CL: ผิดตำแหน่งวันแรกของ chilean ในช่วงต้น [15262] localedata: LC_MESSAGES.yesexpr / noexpr: การใช้ภาษาโรมันที่ไม่สอดคล้องกัน [15263] localedata: LC_MESSAGES.yesexpr / noexpr: ใช้งานไม่สม่ำเสมอของ 1/0 และ +/- [15264] localedata: LC_MESSAGESyesstr / nostr: ขาดในหลาย ๆ ภาษา [15368] nptl: raise () ไม่ใช่ async-signal-safe [15479] คณิตศาสตร์: ceil, พื้น, กลมและ trunc เพิ่มข้อยกเว้นที่ไม่คาดคิด [15578] localedata: kk_KZ: การปรับปรุงต่างๆ [16003] localedata: pap_AN: punt locale [16137] localedata: iw_IL: punt locale [16190] localedata: eo: new esperanto locale [16374] localedata: lv_LV: เปลี่ยนสกุลเงินใน LC_MONETARY เป็นเงินยูโร [16742] malloc: สภาพการแข่งขัน: pthread_atfork (169) localedata: LC_MESSAGES.yesexpr / noexpr: revisit การใช้ตัวพิมพ์ใหญ่ในตำแหน่งทั้งหมด [16983] localedata: postal_fmt ไม่อนุญาต% l และ% n modifiers [17565] localedata : pt_PT: ผิดพลาด (ทำงาน) สัปดาห์เริ่มต้น [17899] คณิตศาสตร์: [powerpc] floorl ส่งกลับค่าเป็นศูนย์ลบด้วย FE_DOWNWARD [17950] build: Build ล้มเหลวด้วย -msse [18205] localedata: be_BY *: ผิด first_weekday และ first_workday [18433] libc : posix_spawn ไม่ถูกต้องเมื่อความล้มเหลวในการดำเนินการ [18453] localedata: charmaps / IBM875: รหัสไม่ถูกต้อง [18712] สตริง: บิต / สายอักขระ 2h ไม่เข้ากันกับ -O2 -Werror = packed- ส่วนหัวของระบบ [18896] localedata: he_IL: การปรับปรุงสำหรับสกุลเงิน [18911] localedata: ro_RO: แก้ไขชื่อวันสัปดาห์สำหรับ "Tuesday" ในข้อมูลภาษาโรมาเนีย [18960] locale: s390: _nl_locale_subfreeres ใช้ larl opcode บนสัญลักษณ์ที่ไม่ตรงตำแหน่ง [19056] libc: เลิกใช้ 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 ล้มเหลวกับ gcc-6 บนเครื่องที่ไม่ใช่ avx [19400] ตำแหน่งที่ตั้ง: ภาษาที่ขาดหายไปใน "iso-639.def" การแก้ไขเล็กน้อยในคำอธิบาย [19431] malloc: deadlock ระหว่าง fflush, getdelim และ fork [19505] libc: การตรวจสอบความถูกต้องของแฟ้ม descriptor ไม่ถูกต้องใน posix_spawn_file_actions_add {เปิด, ปิด, dup2} [19509] dynamic-link: dlsym, dlvsym ไม่รายงานข้อผิดพลาดผ่าน dlerror เมื่อใช้ RTLD_NEXT [19512] locale: Stale `#ifndef HAVE_BUILTIN_EXPECT 'ใน` intl / {gettextP , 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 string มีบรรทัดใหม่ใหม่ [19583] สตริง: SSSE3_Fast_Copy_Backward flag จำเป็นต้องเปิดใช้งานสำหรับ AMD Excavator core [19592] คณิตศาสตร์: [ldbl-128ibm] ceill ไม่ถูกต้องในโหมดปัดเศษที่ไม่ใช่ค่าปริยาย [19593 [lstd-128ibm] ไม่ถูกต้องในโหมดปัดเศษที่ไม่ใช่ค่าเริ่มต้น [19594] คณิตศาสตร์: [ldbl-128ibm] roundl ไม่ถูกต้องในโหมดปัดเศษที่ไม่ใช่ค่าปริยาย [19595] คณิตศาสตร์: [ldbl-128ibm] fmodl ไม่ถูกต้องสำหรับผลลัพธ์ใน subnormal [19603] math: [ldbl-128ibm] remainderl, remquol การจัดการเครื่องหมายไม่ถูกต้องในการทดสอบความเท่าเทียมกัน [19610] dynamic-link: ldconfig - [ldbl-128ibm] การจัดการ fmodl ของอาร์กิวเมนต์ที่เท่าเทียมกันกับศูนย์ต่ำส่วน X ลบลิงก์สัญลักษณ์เก่า [19613] libc: s390x (64 บิต) การขยายตัวของแมโคร WCOREDUMP และอื่น ๆ [19633] ตำแหน่งที่ตั้ง: strfmon_l ใช้ตำแหน่งที่ตั้งส่วนกลางกับหมายเลขการจัดรูปแบบ [19642] เครือข่าย: หน่วยความจำรั่วใน getnameinfo [19648] libc: ทดสอบโครงกระดูกc: อย่าตั้งค่า RLIMIT_DATA [19653] libc: ศักยภาพสำหรับตัวชี้แบบ NULL (CWE-476) ใน glibc-2.22 [19654] คณิตศาสตร์: [x86_64] ต้องการ testcase สำหรับ BZ # 19590 fix [19671] localedata: Missing Sanity Check for malloc () ใน 'tst-fmon.c' & amp; 'tst-numeric.c' [19674] math: [ldbl-128ibm] powl ไม่ถูกต้องการจัดการล้น [19677] คณิตศาสตร์: [ldbl-128ibm] การทดสอบความเท่าเทียมกันคงเหลือไม่ถูกต้องสำหรับศูนย์ต่ำส่วน [19678] คณิตศาสตร์: [ldbl-128ibm] nextafterl , nexttowardl ไม่ถูกต้องของ zero ผล [19679] dynamic-link: gcc-4.9.3 การจัดการข้อยกเว้นของ C ++ เนื่องจากสแต็ค unaligned [19726] ตำแหน่งที่ตั้ง: แปลง UCS4LE ให้อยู่ภายในด้วย iconv () ไม่อัปเดตตัวชี้และความยาวในกรณีข้อผิดพลาด . [19727] ตำแหน่งที่ตั้ง: การแปลงจาก / เป็น UTF-xx พร้อมกับ iconv () ไม่ได้รายงานข้อผิดพลาดเกี่ยวกับค่าตัวแทนของ UTF-16 เสมอ[19755] nscd: ความล้มเหลวในการยืนยัน nscd ใน gc [19758] dynamic-link: พิมพ์ใน EXTRA_LD_ENVVARS สำหรับ x86-64 [19759] libc: mempcpy ไม่ควร inlined [19762] dynamic-link: HAS_CPU_FEATURE / HAS_ARCH_FEATURE ใช้งานง่ายในทางที่ผิด [ 19765] glob: glob: buffer overflow with GLOB_ALTDIRFUNC เนื่องจากสมมติฐานข้อ จำกัด NAME_MAX ไม่ถูกต้อง (CVE-2016-1234) [19783] build: benchtests ไม่สนับสนุน - เปิดใช้งาน hardcoded-path -in- test [19787] network: การตรวจสอบการตัดทอนที่ขาดหายและไม่ถูกต้องใน getnameinfo [19790] math: [ldbl-128ibm] nearintl ไม่ถูกต้องในโหมดปัดเศษที่ไม่ใช่ค่าตั้งต้น [19791] network: Assertion failure ใน res_query.c พร้อมด้วย un-connectable name ที่อยู่ของเซิร์ฟเวอร์ [19792] libc: MIPS: backtrace สร้าง backtrace แบบไม่ จำกัด ด้วย makecontext [19822] math: libmดังนั้นควรติดตั้ง clobbers รุ่นเก่า [19825] network: resolv: send_vc สามารถส่งคืนข้อมูลที่ uninitialized ในการตอบสนองครั้งที่สองไปยัง getaddrinfo [19830] network: nss_dns: ควรตรวจสอบความยาวของ RDATA กับความยาวของบัฟเฟอร์ [19831] network: nss_dns: getaddrinfo ส่งคืนข้อมูลที่ไม่ได้ตั้งใจเมื่อต้องเผชิญกับ A / AAAA บันทึกขนาดที่ไม่ถูกต้อง [19837] nss: nss_db: ไม่ลองใหม่สำหรับบางสายยาวด้วยบัฟเฟอร์ขนาดใหญ่ [19848] คณิตศาสตร์: powl (10, n) สำหรับ n = -4, -5, -6, -7 คือ ปิดมากกว่า 1 ULP [19853] stdio: การพิมพ์ IBM ยาวเป็นสองเท่าในรูปแบบทศนิยมด้วยความแม่นยำสูงบางครั้งไม่ถูกต้อง [19860] build: x86_64: รวบรวมข้อผิดพลาดสำหรับ tst-audit10 และ tst-auditmod10b [19861] nptl: libpthread IFOLC resolver for fork อาจทำให้เกิดความผิดพลาดได้ [19862] network: resolv, nss_dns: ลบการบันทึกที่เหลืออยู่ของชนิดของระเบียนที่ไม่คาดคิด [19865] network: ยืนยันความล้มเหลวหรือการรั่วไหลของหน่วยความจำใน _nss_dns_getcanonname_r [19868] network: nss_dns: รหัส netent ไม่ข้ามบันทึกที่ไม่ใช่ PTR [ 19879] network: nss_dns: สแต็คล้นใน getnetbyname implementa (CVE-2016-3075) [19881] สตริง: ปรับปรุง x86-64 memset [19907] สตริง: การทดสอบ memcpy ไม่ถูกต้อง [19916] dynamic-link: S390: fprs / vrs จะไม่ถูกบันทึก / เรียกคืนขณะแก้ไขสัญลักษณ์ [19925] libc : termios.h XCASE namespace [19928] สตริง: memmove-vec-unaligned-ermsS ช้ากับขนาดข้อมูลขนาดใหญ่ [19929] libc: limits.h NL_NMAX namespace [19931] stdio: หน่วยความจำรั่วไหลใน vfprintf [19957] libc: clone (CLONE_VM) เข้าถึงหน่วยความจำผู้ปกครองที่ไม่ถูกต้อง [19963] localedata: en_IL: New locale [19989 ไม่สามารถเรียกคืนค่าสถานะ RES_USE_INET6 ใน gethosts [19996] ตำแหน่งที่ตั้ง: langinfo.h nl_langinfo_l namespace [20005] stdio: fflush ในไฟล์ที่เปิดด้วยตำแหน่ง fmemopen จะรีเซ็ตเป็น 0 [20010] stdio: stdio.h cuserid namespace [19994] network: getaddrinfo เครือข่าย: getaddrinfo: สแต็คล้นในการแปลเป็นตัวเป็นตน (CVE-2016-3706) [20012] stdio: libio: fmemopen ผนวกโหมดล้มเหลว [20014] stdio: stdio.hnamespace สำหรับโพรไฟล์ก่อน POSIX [20017] เครือข่าย: resolv: ใช้ gmtime_r แทนที่จะใช้ gmtime ใน p_secstodate [20023] libc: fcntl.h timespec namespace [20024] math: [x86_64] vectorized sincos trashes กอง [20031] network: nss_hesiod: Heap overflow ใน get_txt_records [20041] เวลา: sys / time.h timespec namespace [20043] libc: unistd.h หายไป cuserid สำหรับ UNIX98 และก่อน [20044] libc: unistd .h ขาด pthread_atfork สำหรับ UNIX98 [20051] libc: ttyslot ในส่วนหัวไม่ถูกต้องภายใต้เงื่อนไขที่ไม่ถูกต้อง [20054] libc: gethostname not announced for XPG4 [20055] libc: termios.h missing tcgetsid for XPG4 [20072] dynamic-link: x86 init_cpu_features เรียกว่าสองครั้งใน static executable [20073] libc: sys / stat.h fchmod namespace [20074] libc: stdlib.h rand_r namespace [20076] libc: sys / stat .h หายไป S_IFSOCK, S_ISSOCK สำหรับ XPG4 [20094] libc: stdlib.h ไม่ควรประกาศให้ grantpt, ptsname, unlockpt สำหรับ XPG3 [20111] libc: struct sockaddr_storage ไม่สามารถรวมกันได้ - คัดลอก [20112] network: sunrpc: stack (frame) overflow ใน CN RPC clntudp_call (CVE-2016-4429) [20115] สตริง: การจัดตำแหน่งพิเศษใน memset-vec-unaligned-erms.S [20119] libc: หน้ากากผิดประเภทโปรเซสเซอร์จาก CPUID [20139] dynamic-link: ส่วนบน ของ zmm เป็น zeroed ถ้า Glibc ถูกสร้างขึ้นด้วย AS ไม่สนับสนุน AVX512 [20151] math: [ldbl-128 / ldbl-128ibm] j0l, j1l, y0l, y1l return sNaN สำหรับอาร์กิวเมนต์ sNaN [20153] math: [ldbl-128ibm] sqrtl (sNaN) ส่งกลับค่า sNaN [20156] math: [ldbl-128ibm] ceill, rintl เป็นต้น return sNaN สำหรับอาร์กิวเมนต์ของ sNaN [20157] math: [powerpc] fabsl (sNaN) ทำให้ผิดพลาด "invalid" [20160] คณิตศาสตร์: [p owerpc] ceil, rint เป็นต้นกลับไปด้านบนให้ข้อเสนอแนะการแก้ไขการแก้ไขข้อมูลการปรับปรุง FMA4 จำเป็นต้องใช้ CPUID กับ eax = 0x80000001 [20198] libc: quick_exit ไม่ถูกต้องทำลาย วัตถุด้าย C ++ 11 [20212] คณิตศาสตร์: acos (sNaN) ส่งกลับค่า sNaN [20213] math: asin (sNaN) ส่งกลับค่า sNaN [20214] network: ส่วนหัวของ Linux sync กับ linux / in6 h และ ipv6.h อีกครั้ง[20218] คณิตศาสตร์: [i386] asinhl (sNaN) ส่งกลับ sNaN [20219] คณิตศาสตร์: [i386] atanhl (sNaN) ส่งกลับค่า sNaN [20222] stdio: fopencookie: ตัวชี้ฟังก์ชัน Mangle [20224] คณิตศาสตร์: [i386] cbrtl (sNaN) ผลตอบแทน sNaN [20225] คณิตศาสตร์: ldexp, scalbn, scalbln return sNaN สำหรับป้อนข้อมูล sNaN [20226] คณิตศาสตร์: [i386 / x86_64] expl, exp10l, expm1l return 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 [20235] math: [i386 / x86_64] log2l (sNaN) ส่งกลับค่า sNaN [20234] math: [ldbl-128ibm] expm1l (sNaN) ส่งกลับค่า sNaN [20234] คณิตศาสตร์: [ldbl-128ibm] log1pl (sNaN) 20237] nss: nss_db: get * ent segfaults โดยไม่ต้องตั้งค่าก่อนหน้า [20240] คณิตศาสตร์: modf (sNaN) ส่งกลับค่า sNaN [20248] libc: debug / tst-longjump_chk2 เรียก printf จากตัวจัดการสัญญาณ [20250] math: frexp (sNaN ) ส่งกลับค่า sNaN [20252] คณิตศาสตร์: atan2 (sNaN, qNaN) ล้มเหลวในการเพิ่ม "invalid" [20255] ma : [i386] fdim, fdimf return with range ที่เกินและความแม่นยำ / double rounding [20256] คณิตศาสตร์: [i386 / x86_64] fdiml ส่งกลับค่า sNaN สำหรับใส่ข้อมูล sNaN [20260] สตริง: ../sysdeps/x86/bits/string
h: 1092: 3: ข้อผิดพลาด: อาร์เรย์ subscript อยู่ใต้ขอบเขตของอาร์เรย์ [-Werror = array-bounds] [20262] nis: _nss_nis_initgroups_dyn จะส่งกลับค่า NSS_STATUS_NOTFOUND เสมอ [20263] nptl: deadlocks ที่เสถียรถ้าเด ธ อื่นร้องขอ / linux) [20277] libc: $ dp ไม่ได้รับการเตรียมใช้งานอย่างถูกต้องใน sysdeps / hppa / start.S [20284] malloc: malloc: หลีกเลี่ยงการเกิดเหตุขัดข้องทำให้เกิด fallbacks mmap ที่ไม่จำเป็น [20296] math: [i386 / x86_64] scalbl return sNaN for sNaN input, missing "invalid" ข้อยกเว้น [20314] nptl: make [4]: *** [/usr/include/stdlib.h] ข้อผิดพลาด 1 [20316] localedata: id_ID: Februari แทน Pebruari [20327] string: POWER8 strcasecmp ส่งกลับค่าผลลัพธ์ที่ไม่ถูกต้อง [20347] math: Failure: Test: j0_downward (0xap + 0) [20348] libc: FAIL: misc / tst-preadvwritev64 [20349] libc: ค่า 64 บิตจะถูกส่งผ่านไปใน p (readv, writev} {64} [20350] libc: ไม่มีการทดสอบสำหรับ p (อ่าน, เขียน) 64 [20357] คณิตศาสตร์: ผลลัพธ์ของคอร์ไม่ถูกต้องสำหรับ 1.5174239687223976 [20384] build: อย่ารันการทดสอบ libmvec-sincos-avx * บน non avx m achines
มีอะไรใหม่ ในเวอร์ชัน 2.23:
- CVE-2015-7547: glibc getaddrinfo () stack overflow buffer overflow - แก้ไขการพัฒนาสาขาสำหรับการเผยแพร่ 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, 17851, 17608, 17616, 17625, 17630, 17633, 17634, 17635, 17647, 17653, 17657, 17658, 17664, 17665, 17668, 17682, 17702, 17717, 17719, 17722, 17723, 17724, 17725, 17732, 17723, 17744, 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
- อัลกอริธึม semaphore ใหม่ได้รับการใช้งานในโค้ด C ทั่วไปสำหรับเครื่องทั้งหมด ก่อนหน้านี้การติดตั้งแบบกำหนดเองของเซมาฟอร์เป็นเรื่องยากที่จะกล่าวถึงหรือมั่นใจว่าปลอดภัย รุ่นใหม่ของสัญญาณสนับสนุนเครื่องที่มีการดำเนินงานอะตอม 64 บิตหรือ 32 บิต อัลกอริทึม semaphore ใหม่จะถูกใช้โดย sem_init, sem_open, sem_post, sem_wait, sem_timedwait, sem_trywait และ sem_getvalue
- พอร์ตไปยัง Altera Nios II ได้รับการสนับสนุนจาก Mentor Graphics
- เพิ่มประสิทธิภาพ strcpy, stpcpy, strncpy, stpncpy, strcmp และ strncmp สำหรับ powerpc64 / powerpc64le ดำเนินการโดย Adhemerval Zanella (IBM)
- เพิ่มการรองรับการปิดล็อค TSX ของ mutexes แบบ pthread บน powerpc32, powerpc64 และ powerpc64le วิธีนี้อาจช่วยปรับปรุงการล็อคโปรแกรมที่มีอยู่ในระบบ HTM ที่มีอยู่ได้ รหัสตัดรหัสล็อคใช้งานได้เฉพาะกับ --enable-lock-elision = yes นอกจากนี้การติดตั้ง TSX lock elision สำหรับ powerpc จะออกธุรกรรมที่ยกเลิกในทุก syscall เพื่อหลีกเลี่ยงผลข้างเคียงที่มองเห็นได้จากธุรกรรมภายนอก
- เพิ่มประสิทธิภาพการใช้งานแบบ strcpy, stpcpy, strchrnul และ strrchr สำหรับ AArch64 มีส่วนร่วมโดย ARM Ltd
- ฟังก์ชัน i386 memcpy ที่ปรับให้เหมาะสมกับการโหลด / เก็บข้อมูลแบบไม่ใช้ SSE2
- CVE-2104-7817 ฟังก์ชัน wordexp อาจละเว้นธง WRDE_NOCMD ภายใต้เงื่อนไขการป้อนข้อมูลบางอย่างที่ส่งผลให้การทำงานของเชลล์สำหรับการแทนที่คำสั่งเมื่อแอพพลิเคชันไม่ได้ร้องขอ การดำเนินการนี้จะตรวจสอบ WRDE_NOCMD ทันทีก่อนดำเนินการเปลือกและส่งคืนข้อผิดพลาด WRDE_CMDSUB ตามที่คาดไว้
- ฟังก์ชัน printf สไตล์ CVE-2012-3406 อาจทำงานในสแตกล้นเมื่อประมวลผลสตริงรูปแบบที่มีตัวระบุรูปแบบเป็นจำนวนมาก
- CVE-2014-9402 การใช้ nss_dns ของ getnetbyname อาจทำงานในลูปแบบไม่ จำกัด ถ้าการตอบสนองของ DNS มีการบันทึก PTR ของรูปแบบที่ไม่คาดคิด
- เวอร์ชัน GCC ขั้นต่ำที่สามารถใช้สร้าง GNU C Library รุ่นนี้ได้คือ GCC 4.6 รุ่นเก่ากว่า GCC และคอมไพเลอร์ที่ไม่ใช่ GNU ยังคงสามารถใช้ในการคอมไพล์โปรแกรมโดยใช้ GNU C Library
- ไลบรารีของ GNU C ได้รับการสร้างขึ้นโดยใช้ -Werror ตามค่าเริ่มต้น สามารถปิดการทำงานนี้ได้โดยการกำหนดค่าด้วย --disable-werror
- ตำแหน่งที่ตั้งใหม่: tu_IN, bh_IN, raj_IN, ce_RU.
- ฟังก์ชัน sigvec ล้าสมัยถูกนำออกแล้ว นี่เป็นส่วนติดต่อ 4.2BSD เดิมที่สร้างแรงบันดาลใจให้กับอินเทอร์เฟซที่ใช้ POSIX.1 ซึ่งเป็นโปรแกรมที่ใช้แทนเป็นเวลาประมาณ 25 ปี แน่นอนความเข้ากันได้ของ ABI สำหรับไบนารีเก่าที่ใช้ sigvec ยังคงเหมือนเดิม
- รวม gettext 0.19.3 ลงในไดเรกทอรีย่อย intl การแก้ไขนี้สร้างอาคารที่มีวัวกระทิงรุ่นใหม่ขึ้น
- การสนับสนุน MIPS o32 FPXX, FP64A และ FP64 ABI Extensions MIPS o32 ABI แบบลอยตัวแบบเดิมต้องมี FPU ซึ่งการลงทะเบียนแบบ double-precision จะซ้อนทับสองรีจิสเตอร์ที่มีความแม่นยำเพียงเส้นเดียวต่อเนื่องกัน MIPS32R2 แนะนำโหมด FPU ใหม่ (FR = 1) ซึ่งการลงทะเบียนแบบ double-precision จะขยายการลงทะเบียนความแม่นยำแบบเดียวที่สอดคล้องกันซึ่งไม่สามารถใช้ได้กับ ABI แบบลอยตัว o32 สถาปัตยกรรม MIPS SIMD ASE และสถาปัตยกรรม MIPSR6 จำเป็นต้องใช้ FR = 1 ทำให้จำเป็นต้องเปลี่ยน ส่วนขยายใหม่ของ o32 ABI ช่วยให้ผู้ใช้สามารถโยกย้ายเมื่อเวลาผ่านไปจาก ABI เดิม o32 ผ่านการปรับปรุง o32 FP64 ABI เพื่อให้บรรลุนี้ linker แบบไดนามิกนี้ติดตาม ABI ของวัตถุที่โหลดและตรวจสอบว่าวัตถุใหม่เข้ากันได้ การเปลี่ยนโหมดจะได้รับการร้องขอตามที่ต้องการและวัตถุที่ไม่สามารถสนับสนุนได้จะถูกปฏิเสธ การตรวจสอบ ABI จะรวมทั้ง ABI แบบนุ่มและแบบแข็งสำหรับ o32, n32 และ n64
ความคิดเห็นที่ไม่พบ