经过六个月的开发
在 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