Ошибка при попытке автоматизировать mutt с помощью C

Я пытаюсь автоматизировать mutt на C. Для отправки письма с вложением в mutt можно использовать: echo "what_you_want_to_print_in_body" | mutt -s "Subject" -a "file_path" -- recipient@domain.com но когда я автоматизирую то же самое с помощью этой программы на C:

#include<stdio.h>
int main()
{
char echo_message[1000];
char path[1000];
char subject[1000];
char recepient[1000];

printf("Enter your mail message: ");
gets(echo_message);
printf("Enter the path: ");
gets(path);
printf("Enter the subject: ");
gets(subject);
printf("Enter the recipient address: ");
gets(recepient);

system("echo \"%s\" | mutt -s \"%s\" -a \"%s\" -- \"%s\"", &echo_message, &subject, &path, &recepient);

return 0;
}

Я получаю ошибку:

Can't stat %s: No such file or directory
%s: unable to attach a file.

Я задал этот вопрос здесь, так как меня беспокоило, действителен ли мой скрипт system(), если нет, то как мне продолжить автоматизацию этой задачи.

0
24.09.2017, 14:40
1 ответ

У вас отсутствует заголовок <stdlib.h>, и, включив его, вы заметите, что компилятор сообщает вам, что библиотечная функция system()принимает только один аргумент, строку.

Вы не пытаетесь очистить предоставленные пользователем -данные. Вводrobert@example.com"; rm -rf /; : "(или что-то подобное )в качестве получателя не закончится хорошо. Не делай этого.

Проверка ввода и предотвращение эксплойтов с помощью system()при использовании данных, предоставленных пользователем -, затруднены .

Связанные:https://xkcd.com/327/

1
28.01.2020, 02:44

Теги

Похожие вопросы