summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--src/eulogium.c16
1 files changed, 13 insertions, 3 deletions
diff --git a/src/eulogium.c b/src/eulogium.c
index 7519158..5342e66 100644
--- a/src/eulogium.c
+++ b/src/eulogium.c
@@ -1147,16 +1147,21 @@ static void _on_get_status_ret(void *data, const Eldbus_Message *msg, Eldbus_Pen
{
const char *errname, *errmsg;
struct eulogium_data *eulogium = data;
+ Eldbus_Message_Iter *iter;
struct _status_msg status;
if (eldbus_message_error_get(msg, &errname, &errmsg)) {
EINA_LOG_ERR("%s %s", errname, errmsg);
return;
}
- if (eldbus_message_arguments_get(msg, "(ns)", &status)) {
+ if (!eldbus_message_arguments_get(msg, "(ns)", &iter)) {
EINA_LOG_ERR("Failed to get printer status.");
return;
}
+ if (!eldbus_message_iter_arguments_get(iter, "ns", &status.i, &status.s)) {
+ EINA_LOG_ERR("Message content does not match expected \"ns\" signature.");
+ return;
+ }
eulogium_printer_status_set(eulogium, &status);
}
@@ -1164,14 +1169,19 @@ static void _on_status_changed_ret(void *data, const Eldbus_Message *msg)
{
const char *errname, *errmsg;
struct eulogium_data *eulogium = data;
+ Eldbus_Message_Iter *iter;
struct _status_msg status;
if (eldbus_message_error_get(msg, &errname, &errmsg)) {
EINA_LOG_ERR("%s %s", errname, errmsg);
return;
}
- if (eldbus_message_arguments_get(msg, "(ns)", &status)) {
- EINA_LOG_ERR("Failed to get printer status.");
+ if (!eldbus_message_arguments_get(msg, "(ns)", &iter)) {
+ EINA_LOG_ERR("Printer status signal failed.");
+ return;
+ }
+ if (!eldbus_message_iter_arguments_get(iter, "ns", &status.i, &status.s)) {
+ EINA_LOG_ERR("Signal content does not match expected \"ns\" signature.");
return;
}
eulogium_printer_status_set(eulogium, &status);