gpt4 book ai didi

c++ - g+++strncat : might overflow destination buffer

转载 作者:太空宇宙 更新时间:2023-11-04 03:06:25 24 4
gpt4 key购买 nike

我需要在我的 C++ 程序中包含一个 C 函数,当使用 g++ 编译代码时,我收到以下警告:

In function ‘char* strncat(char*, const char*, size_t)’,
inlined from ‘int get_usage(pid_t, pstat*)’ at src/getusage.c:24:
/usr/include/bits/string3.h:154: warning: call to
char* __builtin___strncat_chk(char*, const char*, long unsigned int,
long unsigned int) might overflow destination buffer

代码:

int pidof(const char* process_name){
char cmd[50] ="pidof ";
strncat(cmd, process_name, sizeof(cmd) - strlen(cmd) -1);
[..]

我如何摆脱这个警告?

最佳答案

你的代码是安全的(我认为),但是 strncat() 函数只有在你知道以下长度的情况下才能安全使用:

  1. 缓冲区
  2. 缓冲区中已有的 Material

如果您还知道要添加的 Material 的长度并且它比可用空间短,您可以简单地使用memmove();如果它更长,你应该报告你正在截断它吗?如果您不知道要添加的 Material 的长度,也许您应该知道(这样您可以报告您正在截断某些内容),但如果这样做不方便,那么您仍然可以使用 memmove() 并在缓冲区末尾添加一个 null 以确保 null 终止。

关于c++ - g+++strncat : might overflow destination buffer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4422436/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com