Hasty Briefsbeta

双语

Deep Down the Rabbit Hole: Bash, OverlayFS, and a 30-Year-Old Surprise

a year ago
  • #OverlayFS
  • #Bash
  • #Debugging
  • 客户报告在切换到OverlayFS后出现OpenSSH scp故障,Bash报错显示获取当前目录时出错
  • 由于交叉编译问题,Bash使用了自实现的getcwd()函数而非glibc版本
  • 问题根源在于Bash的备用getcwd()实现对文件系统行为的假设与OverlayFS不兼容
  • OverlayFS的设计导致readdir()返回的inode号可能与stat()获取的不一致,破坏了Bash的目录遍历逻辑
  • Bash的getcwd()实现还存在errno处理不当的问题,导致产生ENOTTY等误导性错误信息
  • 最终通过调整构建配置强制Bash使用系统getcwd()解决了该问题
  • 此次调查暴露出Bash在可移植性假设和遗留代码方面存在更深层次问题