GNU C Library(又名glibc,libc6)是一种按照LGPL许可协议发布的开源免费的C语言编译程序。
GNU C库(aka glibc或libc6)中的stdlib/canonicalize.c处理非常长的路径名参数到realpath函数时,可能会遇到32位体系结构上的整数溢出,导致基于堆栈的缓冲区溢出,并且可能任意代码执行。
- 一般情况下我们直接使用命令
yum update -y glibc
更新即可
但在更新过程中,有的服务器会现冲突的错误,这时无法使用
yum update、yum remove
等命令:
- 解决步骤:
- 出现冲突可能是系统中存在重复或者破损的包,清除yum中可能重复或者破损的包
yum install -y yum-utils
yum-complete-transaction --cleanup-only
#清除可能存在的重复包
package-cleanup --dupes
#清除可能存在的损坏包
package-cleanup --problems
#清除重复包的老版本:
package-cleanup --cleandupes
#删除旧的系统包:
package-cleanup --oldkernels
- 使用yum remove卸载和重新安装具有冲突依赖关系的软件包,此时可以正常卸载和安装
yum remove glibc-devel glibc-headers
yum install glibc-devel glibc-headers
此时使用yum update -y
若出现如下错误:
直接卸载相关包即可,并再次运行yum update -y
,并重新启动
yum remove libgomp1 linux-glibc-devel
yum update -y
reboot
更新成功: