Для начала, спасибо за развёрнутое сообщение с текстом по существу вопроса.> Если ты написал функцию pipe_to_mda(...) то эта функция должна запускать mda и только.
Если всё слишком хардкодить, получится прокрустово ложе. Даже postfix, в котором, насколько я вижу, сделано сильно больше, чтобы не запускать sh, даже он в некоторых случаях запускает его.
> Если при специально подобранных аргументах она может запустить не только mda, а ещё и "rm -rf /*", то это проблема. Может быть лишь потенциальная, но проблема.
Безусловно.
> И они не могут не знать, что эта штука -- постоянный источник дыр в unix'овом софте.
Знают. И даже пытаются валидировать входные данные, чтобы предотвратить это. Из-за ошибки в оной валидации проблема и возникла.
> нужно взять и реализовать некое подмножество sh в виде C'шной библиотеки
Я не понимаю, чем валидация данных в отдельной библиотеке лучше, чем в коде самого OpenSMTPD. Как допустить, так и недопустить ошибку можно в обоих случаях. Универсализация?
Скорее всего, программы не являющиеся SMTP-демоном будут хотеть другие данные на вход и набор допустимых символов будет отличаться (и как бы не всецело).
> Но фишка-то в том, что проблемы экранирования специсимволов шелла прекратят существовать.
> Почему OpenBSD до сих пор не написала такую библиотеку и не перевела весь свой код на её использование
Насколько я могу понимать, никто не написал универсальную библиотеку, решающую проблемы экранирования спецсимволов на все случаи жизни. В любом случае, мне (лично мне) это не кажется очень простой задачей.