24小时热门版块排行榜    

CyRhmU.jpeg
查看: 321  |  回复: 2

olive.

金虫 (小有名气)

[求助] 程序漏洞帮忙改正下 谢谢

(1)#define BUFFERSIZE 64
         void func(size_t buffersize,char *buf){
              if(buffersize < BUFFERSIZE){
                    char *pBuff = new char [buffersize - 1 ] ;
                 memcpy(pBuff,buff buffersize - 1);
                         ......................
         }
}
关于溢出漏洞,帮忙改正一下,谢谢
若buffersize  为0 会怎样?
(2)
      #define BUFFERSIZE 256
         int ConcatString(char *buf1,char *buf2,size_t len1,size_t len2){
                 char buff[BUFFERSIZE];
                 if((len1 + len2) > BUFFERSIZE) return(-1);
                 memcpy(buf+len1,buf2,len2) ;
                   .......     
                 }
有些漏洞   怎么改   
(3)用户只要输入所在区域的邮编就可以获得该地区的当前天气报告,其中变量来自用户从界面编辑框所输入的字符串,程序将其解释为邮政编码   如果输入116600
Function String DBLookupByPostCode(strPostCode){
        Connection = "server = weatherserver; user = sysadmin ; password = xyzzy" ;
        String query = "SELECT * FROM weatherdata WHERE postcode = '"+strPostCode+"'";
        String weather = Connection.ExecuteQuery(query);
        Connection.Close() ;
        Return weather ;
       
        }
回复此楼
只要有一息尚存,就要努力绽放
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

anntoy

木虫 (著名写手)

【答案】应助回帖

★ ★ ★ ★ ★ ★ ★ ★ ★ ★
感谢参与,应助指数 +1
olive.: 金币+10, ★★★很有帮助 2012-10-15 07:41:42
第一个
if(buffersize < BUFFERSIZE)改为if(buffersize < BUFFERSIZE && buffersize > 0)
第二个
if((len1 + len2) > BUFFERSIZE) return(-1);改为if((len1 + len2) > BUFFERSIZE||len1 <0 || len2<0) return(-1);
第三个不知道怎么改了,但是你应该先检查一下strPostCode是不是纯数字的,还有字符串的长度,应该有这样的函数用来检查是不是数字字符串吧
2楼2012-10-14 18:22:15
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

olive.

金虫 (小有名气)

引用回帖:
2楼: Originally posted by anntoy at 2012-10-14 18:22:15
第一个
if(buffersize < BUFFERSIZE)改为if(buffersize < BUFFERSIZE && buffersize > 0)
第二个
if((len1 + len2) > BUFFERSIZE) return(-1);改为if((len1 + len2) > BUFFERSIZE||len1  ...

谢谢
只要有一息尚存,就要努力绽放
3楼2012-10-15 07:41:52
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 olive. 的主题更新
信息提示
请填处理意见