Замена memcpy на strlcpy - PullRequest
       39

Замена memcpy на strlcpy

0 голосов
/ 20 октября 2019

У меня есть код, в котором мне нужно заменить экземпляры 'memcpy' на 'strlcpy', так как это считается более безопасным, и, поскольку strlcpy обеспечивает завершение скопированной строки с нулевым значением, его предпочтительно использовать. Хотя оба выглядят одинаково, если посмотреть на сигнатуру обоих, за исключением того, что strlcpy возвращает размер скопированной строки:

void * memcpy ( void * destination, const void * source, size_t num );
size_t strlcpy(char *dst, const char *src, size_t size);

Могу ли я просто заменить экземпляр memcpy на strlcpy, оставив аргументы такими же, как в следующем выражении:

memcpy(buf + strlen(buf), ".*.", 3);

Учитывая, что strlcpy обеспечивает завершение NULL, необходимо ли изменить значение аргумента size на 4 или оставить его равным 3? Пожалуйста, предложите ваше мнение.

...