Из программы на C я хочу вызвать скрипт оболочки с именем файла в качестве параметра. Пользователи могут контролировать имя файла. C что-то вроде (инициализация / проверка ошибок опущена):
sprintf(buf, "/bin/sh script.sh \"%s\"", filename);
system(buf);
Целевое устройство на самом деле является встроенной системой, поэтому мне не нужно беспокоиться о злонамеренных пользователях. Очевидно, это будет вектор атаки в веб-среде. Тем не менее, если в системе есть имя файла, которое, например, содержит в своем имени обратные кавычки, команда не выполнится, поскольку оболочка выполнит раскрытие имени. Есть ли какие-либо, чтобы предотвратить подстановку команд?