Glibc 2.30 系统库发布

经过六个月的开发 发表 系统库发布 GNU C库 (glibc) 2.30,完全符合ISO C11和POSIX.1-2008的要求。 新版本包括来自 48 位开发人员的修复。

在 Glibc 2.30 中实现 改进 您可以注意:

  • 动态链接器支持预加载共享对象的“--preload”选项(类似于 LD_PRELOAD 环境变量);
  • 添加了 twalk_r 函数,类似于已经存在的 twalk 函数,但允许您将额外的参数传递给给定的回调函数;
  • 对于 Linux,添加了新的 getdents64、gettid 和 tgkill 函数;
  • 当总对象大小超过 PTRDIFF_MAX 值时,内存管理函数 malloc、calloc、realloc、reallocarray、valloc、pvalloc、memalign 和 posix_memalign 终止并显示错误代码。 当指针操作的结果导致 ptrdiff_t 类型的溢出时,此更改避免了未定义的行为;
  • 添加了 POSIX 建议的函数 pthread_cond_clockwait、pthread_mutex_clocklock、
    pthread_rwlock_clockrdlock、pthread_rwlock_clockwrlock 和 sem_clockwait,类似于“timed”等价物,但另外采用 clockid_t 参数来选择计时器;

  • 更新了编码数据、字符类型信息和音译表,以支持 Unicode 12.1.0 规范;
  • librt 库中不再为新应用程序提供 clock_gettime、clock_getres、clock_settime、clock_getcpuclockid 和 clock_nanosleep 函数,而是自动使用 libc 定义;
  • /etc/resolv.conf 弃用了“inet6”选项。 从 resolv.h 中删除了过时的 RES_USE_INET6、RES_INSECURE1 和 RES_INSECURE2 标志;
  • 当指定“--enable-bind-now”选项时,安装的程序现在使用 BIND_NOW 标志进行绑定;
  • Linux 特定的 sys/sysctl.h 头文件和 sysctl 函数已被弃用,应用程序应改用 /proc pseudo-FS;
  • Glibc 现在需要 GCC 6.2 或更新版本来构建(任何编译器都可以用来构建应用程序);
  • 漏洞修复 CVE-2019-7309 在 memcmp 函数的实现中 过时的 x32 子架构(不要与 x86 IA-32 混淆),因此该函数可能会为不匹配的字符串错误地返回值 0;
  • 漏洞修复 CVE-2019-9169,这可能导致在处理某些正则表达式时从越界缓冲区读取数据。

来源: opennet.ru

添加评论