Как избежать предупреждения «Wstringop-overflow», когда нужно полагаться на длину источника? - PullRequest
0 голосов
/ 21 октября 2019

Я получаю предупреждение 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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...