Я получаю предупреждение Wstringop-overflow
при использовании strncat
для передачи аргументов командной строки в мою программу. Я понимаю, что компилятор жалуется, потому что я использую длину источника, чтобы добавить пункт назначения, но как еще я могу реализовать это, чтобы предотвратить предупреждение? Вот мой код:
static char ttyPort[MAX_NAME_SIZE];
bzero(ttyPort,MAX_NAME_SIZE);
strncat(ttyPort, argv[2], strlen(argv[2]) + 1);
Вот предупреждение:
../tun/main.c:24:5: warning: ‘strncat’ specified bound depends on the length of the source argument [-Wstringop-overflow=]
strncat(ttyPort, argv[2], argsLen + 1);
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../tun/main.c:23:15: note: length computed here
argsLen = strlen(argv[2]);
^~~~~~~~~~~~~~~
Я уже попробовал следующее, но компилятор все равно его обрабатывает:
uint8_t argsLen;
argsLen = strlen(argv[2]);
strncat(ttyPort, argv[2], argsLen + 1);