Как вызвать функцию varargs через dbus? - PullRequest
1 голос
/ 05 августа 2011

Как вызвать функцию varargs через dbus, например printf?

Сервер написан на C, клиент написан на Python.

У меня есть вопросы, как написать спецификацию XMLфайл?А как написать мой GObject?

Заранее спасибо.

[Я использую DBus-GLib.]

1 Ответ

0 голосов
/ 05 августа 2011

Невозможно программно вызывать функцию с переменными числами и типом аргументов.Вы можете использовать соответствующие функции "v" (vprintf и т. Д.), Но нет способа заставить va_list передавать им из внешнего кода и передавать его через DBus.

В любом случае вы действительнонужно переосмыслить свой дизайн.Небезопасно вызывать printf со строкой форматирования, которая не контролируется вашей программой на 100%.Передача строки формата, предоставленной клиентом, является формулой бедствия, поскольку printf вызывает неопределенное поведение , если строка формата не соответствует аргументам.Почти во всех реальных ситуациях это будет означать повышение привилегий vulns !

...