Возможно, вы получаете это предупреждение, потому что вы не дезактивируете свой программный параметр должным образом. Например, если вы получите строку без конца, спецификатор %s
в вашем printf
заставит вашу программу продолжать чтение (и печать) памяти, вызывая неопределенное поведение и проблемы безопасности.
Как к тому, что «Tainted параметр» является:
В анализе безопасности программного обеспечения, значение называется испорчена, если она исходит от ненадежного источника (вне контроля программы) и не продезинфицировать, чтобы убедиться, что она соответствует каким-либо ограничениям по своей стоимости , что потребители значения требуют - например, что все строки нуля.
(source) (курсив мой)
Для того, чтобы убедиться, что входное значение является правильным, вы можете использовать функцию как strdup
....:
static void printUsage(char *inFileName)
{
char *inFile = strdup(inFileName);
if (inFile == 0) {
printf("Error with program Argument.");
}else{
printf("Usage: %s %s\n", inFile, "[-h|-help|-usage]\n");
free(inFile);}
}
int main(int argc, char **argv)
{
printUsage(argv[0]);
return 0;
}
Не можете вы использовать из 'puts()' вместо этого? Просто гадать. –
Не могли бы вы попытаться создать [Минимальный, полный и проверенный пример] (http://stackoverflow.com/help/mcve) и показать нам? –
Есть ли закрытый ');' в конце 'printf' функция? –