strncpy越界

参考:http://www.iteye.com/topic/202588

 

strncpy(dest, src, n);似乎是安全的函数

原型:

char *strncpy(char *restrict s1, const char *restrict s2, size_t n);

 

今天碰到了问题,是由于对strncpy理解不够造成的

 

man里:

If the array pointed to by s2 is a string that is shorter than n bytes, null bytes shall be appended to the copy in the array pointed to by s1, until n bytes in all are written.

 

事实上s2往往不如n那么长,于是s1剩余部分会全填0。今天碰到的问题就是,s1的长度不如n,但是dest指向的n的长度全部被改写,于是内存被越界写了0,程序挂掉了。

 

这或许不算strncpy的bug,只是之前设计的函数接口,没有传入dest的长度,而使用了定值n在strcpy中,自己的设计问题。

 

结论:dest一定要和n长度匹配。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值