找回密码
立即注册
搜索
热搜: Java Python Linux Go
发回帖 发新帖

4805

积分

0

好友

657

主题
发表于 2 小时前 | 查看: 4| 回复: 0

年轻女性开发者肖像

导读:本文讲述的一个女孩子,她并没有刻意去寻找漏洞。她只是在做一件很普通和平常的事情,却意外发现了问题并解决了它。我们需要更多这样的正能量故事。

请注意,这并非 Linux 内核中的 bug,而是 Enlightenment 窗口管理器 E16 自 2006 年以来就存在的一个老问题。发现并修复它时,当事人 卡米拉·谢夫奇克(Kamila Szewczyk) 年仅21岁,而当时这个漏洞诞生时,她还不到一岁。

如今的卡米拉是德国萨尔兰大学的一名研究生。她开着辆比大多数同学都老的窗式汽车,这本身就挺有意思。但更令人印象深刻的是,她将 Linux 作为日常系统,并且深入到几十年前的代码库中,发现并修复了这个沉睡近二十年的错误。

Enlightenment E16 是什么来头?

E16 桌面运行截图

对于不熟悉的用户来说,Enlightenment 是 Linux 上一个历史悠久的窗口管理器,负责绘制和管理屏幕上的窗口界面。它于 1997 年首次发布,比当今大部分 Linux 用户都要“年长”。卡米拉使用的 E16 版本于 1999 年推出,曾以其高度可定制性和出色的视觉效果闻名,而当时大多数 Linux 桌面环境都更加注重实用性。

Enlightenment 的知名度不如 KDE 或 GNOME,但它拥有一小群忠实用户,并在一些小众发行版如 Bodhi Linux(其默认桌面 Moksha 正是 Enlightenment 的分支)中得以延续。后来,团队使用名为 EFL 的新框架对项目进行了全面重写,演变为功能更全的 E17。但一部分社区成员,包括卡米拉,依然选择并维护着经典的 E16。

一次意外的桌面死机与漏洞发现

她当时并非在查找漏洞,而是在做一件很普通的事:准备研究生课程的讲义幻灯片。当她用 Atril 文档查看器打开一个由 LaTeX 排版的 PDF 文件时,整个电脑桌面突然卡死了。

Linux 桌面调试界面截图

这并非偶然故障。问题可以稳定复现,这对开发者来说既是挑战也是线索。于是,她开始了调查。

通过深入分析代码,卡米拉发现问题根源在于 E16 处理过长文件名(具体是窗口标题)的方式。她通过调试工具获取了调用栈信息:

#0  __strcmp_evex ()
#1  __imlib_hash_find (hash=0x55bc9c111420, key="\001\001\001\001\001")     object.c:172
#2  __imlib_font_cache_glyph_get (fn=..., index=0)                          font_draw.c:30
#3  __imlib_font_get_next_glyph (... utf8="Kickoff.pdf — Introduction...")  font_main.c:218
#4  __imlib_font_query_advance (...)                                        font_query.c:89
#5  imlib_get_text_advance (...)                                            api_text.c:231
#6  Efont_extents (...)                                                     text_ift.c:87
#7  _ift_TextSize (...)                                                     text_ift.c:156
#8  TextstateTextFitMB (ts=..., textwidth_limit=291)                        text.c:350
#9  TextstateTextFit (...)                                                  text.c:559
#10 TextstateTextDraw (... text="Kickoff.pdf — Introduction...")            text.c:638
#11 ITApply (...)                                                           iclass.c:930
#12 ITApply (...)                                                           iclass.c:884
#13 _BorderWinpartITclassApply (ewin=..., i=2, force=1)                     borders.c:179
#14 EwinBorderUpdateInfo (ewin=...)                                         borders.c:300
#15 EwinChangesProcess (...)                                                ewins.c:2141
#16 EwinEventPropertyNotify (ewin=..., ev=...)                              ewins.c:1438
...
#21 main (...)                                                              main.c:320

她发现,当窗口标题过长、需要被截断显示时,负责截断的算法缺少迭代次数限制。这导致了一个无限循环,最终使整个桌面失去响应。这个漏洞自 2006 年起便潜伏在代码中,等待特定的条件触发。

卡米拉随后修复了这个问题,并将修复方案和详细分析发布在了自己的博客上,后续也计划向原代码库提交合并请求。

为什么这个故事很重要?

表面上看,这只是关于一个鲜为人知的窗口管理器的小众故事。但仔细想想,它蕴含的意义远不止于此。

卡米拉出生于 2004 年。她修复的那个漏洞在她一两岁时就已经存在。她长大、读大学、成为研究生和教师,而那个漏洞一直静静地躺在由少数爱好者维护的代码库里。最终,是一位真正将 E16 作为日常工具的用户偶然发现了它,并出于责任心将其修复。

这其实体现了真正的 开源精神。它不涉及大公司、漏洞赏金或复杂的 CVE 申报流程,而仅仅是一个人、一台电脑、一个死机的桌面,以及想要弄明白原因的好奇心。有些人已经维护这个代码库几十年,而他们的用户中,总会有人发现一些被忽视的问题,默默改进软件,然后继续自己的工作。

这不是一件小事,这正是开源协作文化中至关重要、充满人情味的一环。如果你想了解更多这样充满极客精神的故事和技术讨论,欢迎来到 云栈社区 交流分享。

作者:场长

参考:
https://iczelia.net/posts/e16-20-year-old-bug
https://www.theregister.com/2026/04/15/enlightenment_e16_bug_patched




上一篇:硬件工程师特努斯接任苹果CEO,端侧AI与空间计算能否引领新硬件时代?
下一篇:Addy Osmani开源Agent Skills项目,为AI编程助手注入资深工程师经验
您需要登录后才可以回帖 登录 | 立即注册

手机版|小黑屋|网站地图|云栈社区 ( 苏ICP备2022046150号-2 )

GMT+8, 2026-4-22 03:00 , Processed in 0.920144 second(s), 39 queries , Gzip On.

Powered by Discuz! X3.5

© 2025-2026 云栈社区.

快速回复 返回顶部 返回列表