遗留代码:mmap 零页:不允许操作 - 我应该从哪里开始?
我必须处理旧 C 源代码。在我成功编译它之后,在运行它时,我收到错误消息“
mmap zero page: Operation not permitted
有时,后面跟着一个分段错误”。
我已经阅读了一些有关 mmap() 命令的内容,但我无法解决此错误消息的来源以及我应该如何处理它。
我可以“重新启用”它吗? (该程序曾经适用于较旧的 Linux 系统)。
我正在使用 Ubuntu 11.04 和 GCC 3.4
非常感谢任何提示:-)
谢谢 马库斯
I've to deal with old C- Sourcecode. After I managed to compile it, while running it I get the error message
mmap zero page: Operation not permitted
Sometimes followed by an Segmentation fault.
I've read some stuff about the mmap() command, but I can't get around, where this error message comes from and how I should deal with it.
Can I "reenable" it? (The program used to work with an older Linux System).
I'm working with Ubuntu 11.04 and GCC 3.4
Any hints very much appreciated :-)
thanks
Markus
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
作为一项安全措施,默认情况下禁用映射零页(这样做可能会导致一些
NULL
指针取消引用错误被利用)。您可以通过将
vm.mmap_min_addr
sysctl 设置为 0 来重新启用它(也可以在/proc/sys/vm/mmap_min_addr
中找到)。您应该能够通过将vm.mmap_min_addr = 0
添加到/etc/sysctl.conf
来将其设置为 Ubuntu 启动时的默认值。Mapping the zero page is disabled by default, as a security measure (doing so can make some
NULL
pointer dereference bugs exploitable).You can re-enable it by setting the
vm.mmap_min_addr
sysctl to 0 (also available at/proc/sys/vm/mmap_min_addr
). You should be able to make this the default at boot on Ubuntu by addingvm.mmap_min_addr = 0
to/etc/sysctl.conf
.