samba中的safe_strcpy检查内存分配是否成功

时间:2015-07-16 07:22:54

标签: c malloc samba strcpy

我正在尝试使用safe_strcpy将字符串复制到另一个字符串,但似乎无法找到函数定义。

这就是我在做什么:

 char value[256];
 char *var = NULL;
 var =  malloc(sizeof(value));
 safe_strcpy(var, value, strlen(value)+1);

我想知道是否需要为malloc添加错误处理,或safe_stcpy是否需要处理错误处理?

1 个答案:

答案 0 :(得分:0)

在samba的current source code中,我找不到任何名为'safe_strcpy'的函数。我可以找到alpha_strcpy,在评论中描述为“偏执狂strcpy”,我怀疑它已经取代了你之前询问过的函数,尽管它有一个不同的原型和一个额外的参数。

反正:

char *alpha_strcpy(char *dest,
                   const char *src,
                   const char *other_safe_chars,
                   size_t maxlength)
{
        size_t len, i;

        if (!dest) {
                smb_panic("ERROR: NULL dest in alpha_strcpy");
        }

所以,这个函数至少会检查dest,但是如果它为null则会出现恐慌,这可能不是你想要的。

我建议你总是自己检查malloc的返回值。