转至繁体中文版     | 网站首页 | 图文教程 | 资源下载 | 站长博客 | 图片素材 | 武汉seo | 武汉网站优化 | 
最新公告:     敏韬网|教学资源学习资料永久免费分享站!  [mintao  2008年9月2日]        
您现在的位置: 学习笔记 >> 图文教程 >> 软件使用 >> 系统软件 >> 正文
Linux下的代码淬火技术         

Linux下的代码淬火技术

作者:闵涛 文章来源:闵涛的学习笔记 点击数:728 更新时间:2009/4/25 0:45:45
作者:宇文

  【IT168 实用技巧】我们知道,铁匠经常把金属工件加热到一定温度,然后突然浸在水或油中使其冷却,从而有效增加其硬度。类似的,软件开发人员也可以采取某种手段,从而显著提高软件的可靠性和质量,我们形象地称之为代码淬火技术。

    一、代码淬火的好处

    理想中,软件淬火技术首先能够预见代码中的哪些地方可能出错,然后,要么带给我们一种能够完全避免错误的方式编写代码,要么能及时识别出错误,从而更轻松地跟踪源代码。尤其是对于C语言,因为它不是一种安全语言,所以更需要软件淬火技术来提高软件的可靠性。本文将详细介绍Linux下常用的代码淬火方法。

    二、常见的码淬火技术

    代码淬火技术的形式各种各样,我们这里要讲的是帮助我们构建更加强健的代码的各种技术。

    1 .缓冲区溢出问题

    缓冲区是一个非常严重的安全问题,最好的情况下可能导致软件的行为错乱;严重时将会导致被缓冲区利用程序所控制而执行任何攻击者所想要执行的代码。请看下面的示例代码:

static char ourArray[100];
    ...
    int i;
    for ( i = 0 ; i < 100 ; i++ ) {
      ourArray[i] = (char)(0x30+i);
    }
    ourArray[i] = 0;    // 越界,危险!

    上例中,我们的赋值操作已经越过了数组的边界。它并没有在我们的数组内执行写操作,它是在数组边界之后的第一个字节内进行的写操作。换句话说,数组之后的第一个对象,无论它是结构体也好,还是指针也罢,现在已经被破坏了。为了改变这种糟糕的情况,我们只需要养成一种良好的习惯,那就是使用符号常量来指示数组的边界。就像在下例中一样,我们创建了一个常量,来定义数组的长度。这里有一个小技巧,那就是假设我们需要的数组长度为A,那么在定义数组长度时,实际长度是A+1。这时,无论数组长度如何,可以肯定的是,数组[A]一定是该数组的边界。换句话说,我们留了一个元素的余量。如下所示:

#define ARRAY_SIZE    100
    static char ourArray[ARRAY_SIZE+1];
    ...
    int i;
    for (i = 0 ; i < ARRAY_SIZE ; i++ ) {
      ourArray[i] = (char)(0x30+i);
    }
ourArray[ARRAY_SIZE] = 0;  //为数组的最后一个元素赋值


[办公软件]在sybase中插入图片、PDF、文本文件  [办公软件]安装Sybase ASE
[办公软件]linux指令大全(完整篇)  [办公软件]Linux新手入门常用命令大全
[办公软件]在RedHat Linux 9里安装gaim0.80  [办公软件]浅谈Linux 下Java 1.5 汉字方块问题解决方法
[办公软件]Linux程序员必读:中文化与GB18030标准  [办公软件]linux指令大全
[办公软件]制作Linux启动盘的四种方法  [办公软件]Linux文件系统的反删除方法
教程录入:mintao    责任编辑:mintao 
  • 上一篇教程:

  • 下一篇教程:
  • 【字体: 】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
      注:本站部分文章源于互联网,版权归原作者所有!如有侵权,请原作者与本站联系,本站将立即删除! 本站文章除特别注明外均可转载,但需注明出处! [MinTao学以致用网]
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)

    同类栏目
    · 办公软件  · 系统软件
    · 常用软件  · 聊天工具
    更多内容
    热门推荐 更多内容
  • 没有教程
  • 赞助链接
    更多内容
    闵涛博文 更多关于武汉SEO的内容
    500 - 内部服务器错误。

    500 - 内部服务器错误。

    您查找的资源存在问题,因而无法显示。

    | 设为首页 |加入收藏 | 联系站长 | 友情链接 | 版权申明 | 广告服务
    MinTao学以致用网

    Copyright @ 2007-2012 敏韬网(敏而好学,文韬武略--MinTao.Net)(学习笔记) Inc All Rights Reserved.
    闵涛 投放广告、内容合作请Q我! E_mail:admin@mintao.net(欢迎提供学习资源)

    站长:MinTao ICP备案号:鄂ICP备11006601号-18

    闵涛站盟:医药大全-武穴网A打造BCD……
    咸宁网络警察报警平台