Mpeg4 IP Camera,网络摄像机,DVR方案及模块,NGN,VoIP企业方案,IP-PBX,OEM,ODM服务,无线产品,SIP终端产品,Zigbee产品
  日文网站
网站地图 客户服务 联系我们
 
 服务内容
 服务热线
 知识库
 
NGN产品
图像产品
软件开发X问
 演示中心

 

如何让您的IP Camera
快速抢占市场

如何选择适合您的VoIP
解决方案
产品应用成功案例
产品演示中心
软件开发X问
 
  您当前位置: 客户服务 >> 知识库 >> 软件开发X问
软件开发X问  
     
 
1.15 危险的程序

编程时,往往大家不考虑软件的脆弱性。何谓软件的脆弱性?简单的说,是衡量一个软件在任何情况下,是否能安全运行的指标。
如何使软件变得非常的强壮,最基本的思想是,“任何软件在任何情况下,不能因为某些不正常的因素而死掉”。不正常因素,可以是,内存被破坏,没有返回值等等。以下是一段程序,大家可以先看看,这里有什么问题。
tab = upnp_cd_info[Hnd].serviceTable;
  while( tab != NULL )
  {
      if( ( 0 == upnp_strcmp( DevID, tab->devId ) )
         && ( 0 == upnp_strcmp( ServID, tab->serId) ) )
      {
         /* send notify */
         if( UpnpGenaNotify( Hnd, tab->sid, PropSet) != 0 )
         {
             rtncd = -4;
             goto ret;
         }
      }
      tab = tab->next;
  }
很明显,以上程序当tab的内容永远不等于NULL时,该程序就会造成死循环。当然正常情况下是没有问题的,可是异常时,就会出现问题。这类程序是很常见的,我们必须考虑的是,程序在任何情况下必须是能够正常运行的。
以上程序,我们可以加上一些判定条件,让它能够在异常情况下也能正常走出来,比如,加上一个计数器等等。