c-Linux是否会阻止堆栈彼此堆积?
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了c-Linux是否会阻止堆栈彼此堆积?,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含3379字,纯文字阅读大概需要5分钟。
内容图文
![c-Linux是否会阻止堆栈彼此堆积?](/upload/InfoBanner/zyjiaocheng/949/77d6a1fdb42d497fb671ce9d4a4d6d50.jpg)
所有
我编写此cpp代码以测试堆栈和头.而且我发现Linux不能阻止该事件.
(Linux devlinux11 2.6.9-78.ELsmp#1 SMP Wed Jul 9 15:39:47 EDT 2008 i686 i686 i386 GNU / Linux
gcc版本3.4.6 20060404(Red Hat 3.4.6-10)
有什么办法可以防止该事件发生?
#include <iostream>
using namespace std;
const int _1_m = 10 * 1024 * 1024;
const int _1_k = 1024 * 110;
void testStack();
int main(int argc, char** argv)
{
char* cur = (char*)calloc(_1_m, 1);
char* prev = 0;
while( cur != 0)
{
prev = cur;
cur = (char*)calloc(_1_m, 1);
}
cout << "Hi, Da:" << endl;
for (int i=0; i< _1_m; i++)
{
if (prev[i])
{
cout << "Nothing to say....." << endl;
break;
}
}
cout << "[God is tesing you ......]" << endl;
testStack();
for (int i=0; i< _1_m; i++)
{
if (prev[i])
{
cout << "You're a super man!!!" << endl;
return 0;
}
}
cout<< " You're a bad guy!!!!!" << endl;
return 0;
}
void testStack()
{
char a1[_1_k] = {0};
char a2[_1_k] = {0};
char a3[_1_k] = {0};
char a4[_1_k] = {0};
char a5[_1_k] = {0};
char a6[_1_k] = {0};
char a7[_1_k] = {0};
char a8[_1_k] = {0};
char a9[_1_k] = {0};
char a10[_1_k] = {0};
char a11[_1_k] = {0};
char a12[_1_k] = {0};
char a13[_1_k] = {0};
char a14[_1_k] = {0};
char a15[_1_k] = {0};
char a16[_1_k] = {0};
char a17[_1_k] = {0};
char a18[_1_k] = {0};
char a19[_1_k] = {0};
char a20[_1_k] = {0};
char a21[_1_k] = {0};
char a22[_1_k] = {0};
char a23[_1_k] = {0};
char a24[_1_k] = {0};
char a25[_1_k] = {0};
char a26[_1_k] = {0};
char a27[_1_k] = {0};
char a28[_1_k] = {0};
char a29[_1_k] = {0};
char a30[_1_k] = {0};
char a31[_1_k] = {0};
char a32[_1_k] = {0};
char a33[_1_k] = {0};
char a34[_1_k] = {0};
char a35[_1_k] = {0};
char a36[_1_k] = {0};
char a37[_1_k] = {0};
char a38[_1_k] = {0};
char a39[_1_k] = {0};
char a40[_1_k] = {0};
char a41[_1_k] = {0};
char a42[_1_k] = {0};
char a43[_1_k] = {0};
char a44[_1_k] = {0};
char a45[_1_k] = {0};
char a46[_1_k] = {0};
char a47[_1_k] = {0};
char a48[_1_k] = {0};
char a49[_1_k] = {0};
char a50[_1_k] = {0};
char a51[_1_k] = {0};
char a52[_1_k] = {0};
char a53[_1_k] = {0};
char a54[_1_k] = {0};
char a55[_1_k] = {0};
char a56[_1_k] = {0};
char a57[_1_k] = {0};
char a58[_1_k] = {0};
char a59[_1_k] = {0};
char a60[_1_k] = {0};
char a61[_1_k] = {0};
char a62[_1_k] = {0};
char a63[_1_k] = {0};
char a64[_1_k] = {0};
char a65[_1_k] = {0};
char a66[_1_k] = {0};
char a67[_1_k] = {0};
char a68[_1_k] = {0};
char a69[_1_k] = {0};
char a70[_1_k] = {0};
char a71[_1_k] = {0};
char a72[_1_k] = {0};
char a73[_1_k] = {0};
char a74[_1_k] = {0};
char a75[_1_k] = {0};
char a76[_1_k] = {0};
char a77[_1_k] = {0};
char a78[_1_k] = {0};
char a79[_1_k] = {0};
char a80[_1_k] = {0};
char a81[_1_k] = {0};
char a82[_1_k] = {0};
char a83[_1_k] = {0};
char a84[_1_k] = {0};
char a85[_1_k] = {0};
char a86[_1_k] = {0};
char a87[_1_k] = {0};
char a88[_1_k] = {0};
char a89[_1_k] = {0};
char a90[_1_k] = {0};
char a91[_1_k] = {0};
char a92[_1_k] = {0};
char a93[_1_k] = {0};
char a94[_1_k] = {0};
char a95[_1_k] = {0};
char a96[_1_k] = {0};
char a97[_1_k] = {0};
char a98[_1_k] = {0};
char a99[_1_k] = {0};
char a100[_1_k] = {0};
for (int i =0 ; i < _1_k; i++)
{
a100[i] = 1;
}
}
解决方法:
您的Linux版本已过时或未维护.较新的版本已修复该问题,因为它在Xorg中引入了安全漏洞.如果您的发行版尚未向后移植此补丁,则应远离该补丁.
补丁请参见http://git.kernel.org/linus/320b2b8de12698082609ebbc1a17165727f4c893,
要么
http://www.invisiblethingslab.com/resources/misc-2010/xorg-large-memory-attacks.pdf的缺陷说明.
内容总结
以上是互联网集市为您收集整理的c-Linux是否会阻止堆栈彼此堆积?全部内容,希望文章能够帮你解决c-Linux是否会阻止堆栈彼此堆积?所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。