c++ - gcc arm 中的 strncpy 替换

标签 c++ security secure-coding

strncpy() 是否在 arm 中没有适当的等价物,它将同时获取目标大小和要复制的源字符数,

strlcpy(char * /*dst*/, const char * /*src*/, size_t /*len*/);

所以在这里我们必须只使用 strlcpy() 并希望源字符串以 null 结尾?

MS 提供了一个完美的(至少看起来是 ;)):

StringCchCopyN(LPTSTR pszDest, size_t cchDest, LPCTSTR pszSrc, size_t cchSrc);

对于外行来说,strncpy() 是不安全的(为什么 strncpy 不安全] 1)。

最佳答案

你需要自己写

char *mystrncpy(char *dest, const char *src, size_t nbytes)
{
    char *svd = dest;

    if(nbytes)
    {
        dest[--nbytes] = 0;
        while(*src && nbytes-- )
             *dest++ = *src++;
    }
    return svd;
}

char *mystrncpy(char *dest, const char *src, size_t destsize, size_t srcsize)
{
    memcpy(dest, src, destsize < srcsize ? destsize : srcsize);
    dest[destsize -1] = 0;
    return dest;
}

关于c++ - gcc arm 中的 strncpy 替换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45934135/

相关文章:

security - 什么是目录列表漏洞?

Spring 启动 : Not to use TLSv1. 0

node.js - 如何避免 Node child_process exec中的命令注入(inject)

c++ - 如何从消息队列接收动态长度数据?

c++ - 使用 C 的 Windows 注销捕获

c++ - 用于将多个.cpp 和.h 编译成一个lib 的Makefile

node.js - 如何修复我的 Node.js 应用程序中的 Reflected XSS 漏洞

c++ - Simulink - 使用 .Mat 作为自动编码的 c 函数的外部输入变量

html - 隐藏类型为 ='hidden' 的输入字段与使用显示为 :none 的类

java - 在 Java(或 Scala)中过滤向上路径遍历