memcpy 拷贝常量字符串越界的问题

maimang09 2016-01-09 10:50:06
有如下程序段:

char buf[30] = {0};
memcpy(buf, "hello", 30);


这种用法虽然不会导致目的buffer 溢出,但是却会访问到源数据之外的memory. 这种用法是否存在什么潜在的风险?

memcpy 原型如下:
void *memcpy(void *dest, const void *src, size_t n);

DESCRIPTION
The memcpy() function copies n bytes from memory area src to memory area dest. The memory areas must not overlap. Use memmove(3) if
the memory areas do overlap.
...全文
590 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
wweerxx 2016-01-12
  • 打赏
  • 举报
回复
用sizeof或者strlen有多少拷贝多少。
pcboyxhy 2016-01-12
  • 打赏
  • 举报
回复
char *strncpy(char *dest, const char *src, size_t n);
nswcfd 2016-01-11
  • 打赏
  • 举报
回复
还有一种风险是敏感信息泄漏,比如"hello“字符串碰巧跟一个“password”字符串邻近着存放。
ztenv 2016-01-11
  • 打赏
  • 举报
回复
如果是字符串,可能会越界也有可能会成功,因为有些内存是不能读的;如果是二进制流,那必定有问题

23,128

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧