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, създадена от земята, за да действа като основна библиотека C в GNU системите и всяка друга операционна система, задвижвана от ядрото на Linux.


Проектиран да бъде преносим

Glibc е високопроизводителна библиотека C, написана изцяло на програмния език C. Тя е проектирана да бъде преносима, интернационализирана и проектирана да поддържа всички съответни стандарти, включително POSIX.1-2008 и ISO C11.


Поддържа функциите на добре познатите UNIX варианти

Докато библиотеката GNU C има напълно интернационализиран интерфейс, тя се опитва да поддържа функциите на добре познатите UNIX варианти, като BSD и System V, благодарение на вградените си съвместими режими.

Запознаване с библиотеката на GNU C

Докато библиотеката GNU C е инсталирана по подразбиране в почти всички операционни системи GNU / Linux, можете също така да го инсталирате сами, като използвате безплатно пакета източник, разпространяван на неговия уеб сайт или Softoware. За да започнете, изтеглете и запазете архива в домашната си директория.

Разопаковайте архива с програма за архивен мениджър, отворете прозореца на терминала, отидете до мястото, където са били извлечени архивните файлове, стартирайте "& configure" команда за конфигуриране на програмата (вижте командата & lsquo; / configure --help & rsquo; за различни опции за оптимизация).

След това стартирайте & lsquo; make & rsquo; команда за компилиране на библиотеката, която може да бъде инсталирана на широк кръг от програми, като стартирате инсталацията "make install"; или "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, е 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.
  • Типът "union wait" е премахнат. Тя е отхвърлена в началото на 90-те години и никога не е част от POSIX. Кодът на приложението трябва да използва типа int вместо "union wait".
  • Добавя се ново действие от NSS, което улеснява управлението на големи разпределени системи. Действието MERGE позволява отдалечени потребителски магазини като LDAP да бъдат обединени в местни потребителски магазини като / etc / groups, за да осигурят лесни за употреба, актуализирани и управлявани набори от обединени идентификационни данни. Новото действие може да се използва чрез конфигурирането му в /etc/nsswitch.conf: group: files [SUCCESS = merge] nis Изпълнява се от Стивън Галъхър (Red Hat).
  • Отхвърлената променлива __malloc_initialize_hook е премахната от приложния програмен интерфейс (API).
  • Дългият неизползван опция localedef --old style е премахнат. Тя не е направила нищо повече от 16 години. Скриптовете, които използват тази опция, могат безопасно да я изпуснат.
  • следващите, следващите, следващите, следващите, следващите и следващите се добавят към libm. Те са определени от TS 18661 и IEEE754-2008. Следващите функции връщат следващата стойност, която може да се представи, в посока на положителната безкрайност и следващите функции връщат следващата стойност в посока на отрицателна безкрайност. Понастоящем те са активирани като разширения за GNU.
  • Промени, свързани със сигурността:
  • Беше премахнато ненужното копие на стека в _nss_dns_getnetbyname_r. Това може да доведе до препълване на стека, когато се получи callnet с твърде дълго име. (CVE-2016-3075)
  • По-рано, getaddrinfo е копирал големи количества адресни данни в стека, дори след като е била приложена корекцията за CVE-2013-4458, което може да доведе до препълване на стека. getaddrinfo сега използва разпределение на хапчета вместо това. Отчетено от Майкъл Петлан. (CVE-2016-3706)
  • Глобната функция е претърпяла препълване на буфери на стека, когато е била извикана с флага GLOB_ALTDIRFUNC и е открила дълго име на файл. Съобщено от Александър Черепанов. (CVE-2016-1234)
  • Клиентът на Sun RPC UDP може да изчерпи цялото налично пространство на стека, когато е наводнен с изработени ICMP и UDP съобщения. Докладвани от Aldy Hernandez 'alloca плъгин за GCC. (CVE-2016-4429)
  • Кодът за управление на сървъра за имена на IPv6 в libresolv може да доведе до изтичане на памет за всяка създадена нишка, да извърши неуспешно търсене на именуване и да излезе. С течение на времето това може да доведе до отказ на услуга поради изчерпване на паметта. Съобщено от Матиас Шифър. (CVE-2016-5417)
  • Следните бъгове се решават с тази версия:
  • <>[1170] localedata: ne_NP: актуализиране на непалски локален дефиниционен файл [3629] ръководство: stpcpy описание в string.texi се отнася до MS-DOG вместо MS-DOS. [6527] malloc: [powerpc] Малоко подравняване недостатъчно за PowerPC [6796] математика: fdim () не задава грешно при препълване [10354] libc: posix_spawn трябва да използва vfork Добавяне на авторско право към локални файлове [12143] localedata: chr_US: new Cherokee locale [12450] localedata: sgs_LT: new locale [12676] локализирана: ln_CD: new locale [13237] локализирана: LC_ADDRESS.country_name: данни [13304] математика: fma, fmaf, fmal произвеждат погрешни резултати [14259] build: --localedir arg to configure е игнориран [14499] nptl: Поправя ли posix_spawn atfork манипулатори / използване vfork? [14750] libc: Състояние на състезанието в posix_spawn използване на vfork срещу сигнал манипулатори [14934] localedata: es_CL: грешен първи делничен ден chilean локал [15262] локализирана: LC_MESSAGES.yesexpr / noexpr: несъвместима употреба на романизация [15263] localedata: LC_MESSAGES.yesexpr / noexpr: несъвместима употреба на 1/0 и +/- [15264] localedata: LC_MESSAGES.[15488] nptl: рейз () не е async-сигнал-сигурен [15479] математика: тавани, пода, кръг и пресечен ъгъл неправилно изключение [15578] localedata: kk_KZ: локализация: lv_LV: промяна на символа на валута в LC_MONETARY към евро [16742] malloc: състояние на състезанието: pthread_atfork [16137] локализация: () извикани преди първия malloc () води до неочаквано заключващо поведение / затваряне [16975] localedata: LC_MESSAGES.yesexpr / noexpr: revisit capitalization във всички локали [16983] localedata: postal_fmt не позволява% l и% n modifiers [17565] localedata : pt_PT: грешно (работа-) стартиране на седмицата [17899] математика: [powerpc] floorl връща отрицателна нула с FE_DOWNWARD [17950] build: Изграждане не успее с -msse [18205] localedata: be_BY *: wrong first_weekday and first_workday [18433] : posix_spawn не се връща правилно при неизпълнение [18453] localedata: charmaps / IBM875: неправилни кодове [18712] низ: битове / string2.h несъвместимо с -O2 -Werror = пакетирани -Wsystem-headers [18896] localedata: he_IL: подобрения за валута [18911] localedata: ro_RO: Коригиране на името на деня за " използва офлайн код 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 tc-audit10 грешки с gcc-6 на non avx машина [19400] локал: липсва език в "iso-639.def", тривиално фиксиране в описанието [19431] malloc: deadlock между fflush, getdelim, and furk [ Некоректни проверки за проверка на валидността на файловия дескриптор в posix_spawn_file_actions_add {open, close, dup2} [19509] динамична връзка: dlsym, dlvsym не съобщават грешки чрез dlerror при използване на RTLD_NEXT [19512] локал: Stale `#ifndef HAVE_BUILTIN_EXPECT 'в` intl / {gettextP , loadinfo}.h "[19534] libc: execle, execlp може да използва malloc [19568] localedata: * _CH: Швейцарските локали имат несъвместимо начало на седмицата [19573] мрежа: res_nclose и __res_maybe_init не са съгласни за инициализирането на сървъра на имена, от GB18030 таблици [19581] localedata: sr_ * date_fmt низ съдържа допълнителен нов ред [19583] низ: флагът SSSE3_Fast_Copy_Backward трябва да бъде активиран за AMD базата [19592] math: [ldbl-128ibm] ] математика: [ldbl-128ibm] truncl неправилно в режими на закръгляване без подразбиране [19594] математика: [ldbl-128ibm] кръг неправилно при режими на закръгляване без подразбиране [19595] math: [ldbl-128ibm] fmodl неправилно за резултати в поднормални [19603] математика: [ldbl-128ibm] fmodl обработка на равни аргументи с ниска част нула неправилна [19603] математика: [ldbl-128ibm] remainderl, remquol неправилна обработка на знака в тестове за равенство [19610] dynamic-link: ldconfig - X премахва остарелите символни връзки [19613] libc: s390x (196 бита) макро разширение WCOREDUMP и други [19633] локал: strfmon_l прилага глобален локал за форматиране на числа [19642] мрежа: изтичане на памет в getnameinfo [19648] libc: test-skeleton.c: Не поставяйте RLIMIT_DATA [19653] libc: Потенциал за дереференция на показалеца NULL (CWE-476) в glibc-2.22 [19654] математика: [x86_64] Нуждаете се от testcase за BZ # 19590 fix [19671] () в "tst-fmon.c" & amp; 'tst-numeric.c' [19674] математика: [ldbl-128ibm] powl неправилно претоварване [19677] математика: [ldbl-128ibm] остатъчен тест за равенство неправилен за нула ниска част [19678] math: [ldbl-128ibm] nextafterl , nexttowardl неправилен знак с нулев резултат [19679] динамична връзка: gcc-4.9.3 Справяне с изключването на C ++, повредено поради ненасочен стак [19726] локал: Преобразуване на UCS4LE на INTERNAL с iconv () не актуализира указатели и дължини в случай на грешка , [19727] локал: Конвертирането от / to UTF-xx с iconv () не винаги съобщава за грешки в стойностите на сурогатите на UTF-16.[19755] nscd: nscd assertion провал в gc [19758] динамична връзка: Typo в 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 не поддържат - [19787] мрежа: Липсващи и некоректни проверки на съкращенията в getnameinfo [19790] math: [ldbl-128ibm] nearbyintl неправилно при режими на закръгляване без подразбиране [19791] мрежа: Неуспешно твърдение в res_query.c с un-connectable name адреси на сървъри [19792] libc: MIPS: backtrace дава безкрайно backtrace с makecontext [19822] математика: libm.така че инсталирайте clobbers старата версия [19825] мрежа: resolv: send_vc може да върне неинициализираните данни във втория отговор към getaddrinfo [19830] мрежата: nss_dns: трябва да провери дължината на RDATA срещу дължина на буфера [19831] мрежа: nss_dns: getaddrinfo връща неинициализираните данни при конфронтация с A / AAAA записи на невалиден размер [19837] nss: nss_db: Няма опити за някои дълги линии с по-голям буфер [19848] математика: powl (10, n) за n = -4, -5, -6, -7 е (19860) build: x86_64: компилиране на грешки за tst-audit10 и tst-auditmod10b [19861] nptl: libpthread IFUNC резолтор за вилица може да доведе до катастрофа [19862] мрежа: resolv, nss_dns: Премахване на оставащото регистриране на неочаквани типове записи [19865] мрежа: Неуспешно твърдение или изтичане на памет в _nss_dns_getcanonname_r [19868] мрежа: nss_dns: 19879] мрежа: nss_dns: Препълване на стека в getnetbyname implementa C990: fprs / vrs не са запазени / възстановени докато се решават символите [19925] libc [1990] : 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: ] stdio: stdio.h cuserid пространство на имена [19994] мрежа: getaddrinfo не възстановява RES_USE_INET6 флаг в gethosts [19996] локал: langinfo.h nl_langinfo_l пространство на имена [20005] stdio: fflush на файл отворен с fmemopen нулира позиция на 0 [ Мрежа: getaddrinfo: Препълване на стека в хостинг превод (CVE-2016-3706) [20012] stdio: libio: fmemopen прибавяне на режим на отказ [20014] stdio: stdio.h пространство на имена за pre-threads POSIX [20017] мрежа: resolv: вместо gmtime в p_secstodate [20023] libc: fcntl.h timespec namespace [20024] математика: [x86_64] векторно синхронизира трасирането на мрежата [20031]: nss_hesiod: Препълване на куп в get_txt_records [20041] време: sys / time.h timespec пространство на имена [20043] libc: unistd.h липсва cuserid за UNIX98 и преди [20044] libc: unistd .h липсва pthread_atfork за UNIX98 [20051] libc: ttyslot в грешен хедър при грешни условия [20054] libc: gethostname не е деклариран за XPG4 [20055] libc: termios.h липсващ tcgetsid за XPG4 [20072] динамична връзка: x86 init_cpu_features се извиква два пъти в статичен изпълним [20073] libc: sys / stat.h пространство на имена fchmod [20074] libc: stdlib.h rand_r пространство [20076] libc: sys / stat .h липсва S_IFSOCK, S_ISSOCK за XPG4 [20094] libc: stdlib.h не трябва да декларира grantpt, ptsname, unlockpt за XPG3 [20111] libc: структура sockaddr_storage не може да бъде обобщено копиран [20112] мрежа: sunrpc: (2011-10) string: Допълнителна подредба в memset-vec-unaligned-erms.S [20119] libc: Грешна маска за ниво ниво на процесорите от CPUID [20139] на mm е нулиран, ако Glibc е построен с AS не поддържа AVX512 [20151] математика: [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) owerpc] тава, rint и т.н.Връщане в началото на sNaN [20178] libc: posix_spawn {p} не трябва да извиква изход [20191] stdio: libio: vtables втвърдяване [20195] низ: FMA4 откриване изисква изпълнение на CPUID с регистър eax = 0x80000001 [20198] C ++ 11 конец обекти. [20203] математика: [i386 / x86_64] nextafterl неправилно увеличаване на отрицателните поднамери [20212] математика: acos (sNaN) връща sNaN [20213] мате: asin (sNaN) връща sNaN [20214] мрежа: Linux header sync with linux / in6. h и ipv6.h отново.[20218] математика: [i386] asinhl (sNaN) връща sNaN [20219] математика: [i386] atanhl (sNaN) връща sNaN [20222] връща sNaN [20225] математика: ldexp, scalbn, scalbln връщане sNaN за sNaN вход [20226] математика: [i386 / x86_64] expl, exp10l, expm1l връщане sNaN за sNaN input [20227] математика: [i386 / x86_64] ) връща sNaN [20228] математика: [i386 / x86_64] log10l (sNaN) връща sNaN [20229] математика: [i386 / x86_64] log1pl (sNaN) връща sNaN [20232] math: [ldbl-128] expm1l sNaN връща sNaN [20233] math: [ldbl-128ibm] expm1l (sNaN) връща sNaN [20234] математика: [ldbl-128ibm] log1pl (sNaN) 20237] nss: nss_db: get * int segfaults без предходен набор * [20240] мате: modf (sNaN) връща sNaN [20248] libc: debug / tst-longjump_chk2 извиква printf от манипулатор на сигнали [ ) връща sNaN [20252] математика: atan2 (sNaN, qNaN) не може да повдигне "invalid" [20255] ma th: [i386] fdim, fdimf връщане с излишен диапазон и точност / двойно закръгляване [20256] математика: [i386 / x86_64] fdiml връща sNaN за sNaN вход [20260] string: ../sysdeps/x86/bits/string.

    h: 1092: 3: грешка: индексът на масива е под границите на масивите [20262] nis: _nss_nis_initgroups_dyn винаги връща NSS_STATUS_NOTFOUND [20263] nptl: / linux) [20277] libc: $ dp не е инициализирано правилно в sysdeps / hppa / start.S [20284] malloc: malloc: Корупцията на избягването на арената причинява ненужни fallbacks на mmap [20296] математика: [i386 / x86_64] scalbl връща sNaN за [20314] nptl: make [4]: ​​*** [/usr/include/stdlib.h] Грешка 1 [20316] localedata: id_ID: Februari вместо Pebruari [20327] низ: POWER8 strcccp връща неправилен резултат [20347] мате: неуспех: тест: j0_downward (0xap + 0) [20348] libc: FAIL: misc / tst-preadvwritev64 [ {647} [20350] libc: Няма тест за математика p {read, write} 64 [20357]: Неправилен резултат за cos за 1.5174239687223976 [20384] achines

Какво е новото във версия 2.23:

  • CVE-2015-7547: glibc getaddrinfo () претоварване на буфери на базата на стека - Фиксирано на клон за развитие на glibc 2.23 release.

Какво е новото във версия 2.21:

  • Следните грешки се решават с това съобщение: 6652, 10672, 12674, 12847, 12926, 13862, 14132, 14138, 14171, 14498, 15215, 15378, 15884, 16009, 16418, 16191, 16469, 16618, 16619, 16657, 16740, 16857, 17192, 17266, 17273, 17344,17363,17370,17371,17411,17460,17475,17485,17501,17506,17508,17522,17555,17570,17751,17752,17753, 17574, 17582, 17583, 17584, 17851, 17608, 17616, 17625, 17630, 17633, 17634, 17635, 17647, 17653, 17657, 17658, 17664, 17665, 17668, 17682, 17702, 17717, 17719, 17722, 17723, 17733, 17744, 17745, 17746, 17747, 17748, 17775, 17777, 17780, 17781, 17782, 17791, 17793, 17796, 17797, 17801, 17803, 17806, 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.
  • Пристанище към "Алтера Ниос II" е предоставено от Mentor Graphics.
  • Оптимизирани implementations на strcpy, stpcpy, strncpy, stpncpy, strcmp и strncmp за powerpc64 / powerpc64le. Изпълнява се от Adhemerval Zanella (IBM).
  • Добавена е поддръжка за елиминиране на TSX заключване на pthread mutexes на powerpc32, powerpc64 и powerpc64le. Това може да подобри мащабирането на заключването на съществуващи програми на системи с възможност за HTM. Кодът за заключване е разрешен само с --enable-lock-elision = yes. Също така, изпълнението на TSX lock elision за powerpc ще издаде спиране на транзакциите на всеки системен акаунт, за да се избегнат видими странични ефекти извън транзакциите.
  • Оптимизирани implementations на strcpy, stpcpy, strchrnul и strrchr за AArch64. Публикувано от ARM Ltd
  • i386 memcpy функциите са оптимизирани със зареден / съхранен SSE2.
  • CVE-2104-7817 Функцията wordexp може да пренебрегне флага WRDE_NOCMD при определени условия за въвеждане, което води до изпълнение на черупка за замяна на команда, когато приложението не я е поискало. Изпълнението вече проверява WRDE_NOCMD непосредствено преди да изпълни черупката и връща грешката WRDE_CMDSUB според очакванията.
  • Функциите на CVE-2012-3406 в стил printf могат да се превърнат в препълване на стека при обработката на струнни формати с голям брой спецификатори на формати.
  • CVE-2014-9402 Изпълнението на nss_dns на getnetbyname може да се изпълнява в безкраен цикъл, ако отговорът на DNS съдържа PTR запис на неочакван формат.
  • Минималната версия на GCC, която може да се използва за изграждане на тази версия на библиотеката на GNU C, е GCC 4.6. По-стари версии на GCC и не-GNU компилатори все още могат да се използват за компилиране на програми, използващи библиотеката GNU C.
  • Библиотеката 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 hard-float 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 включват както ABI за меки, така и за твърди плаващи устройства за o32, n32 и n64.

Коментари към GNU C Library

Коментари не е намерена
добавите коментар
Включете на изображения!