diff options
author | Arun Scaria <arunscaria91@gmail.com> | 2011-06-29 21:19:46 +0530 |
---|---|---|
committer | Arun Scaria <arunscaria91@gmail.com> | 2011-06-29 21:19:46 +0530 |
commit | 4f345e22530b0968794b29c05abf8a465370ea0d (patch) | |
tree | 24bada1ac00296b5c0f7738d91c386a568422ab6 | |
parent | 3aa92f744fc8a1e1accaa6fa546e0da7e11cc732 (diff) | |
download | sssd_unused-4f345e22530b0968794b29c05abf8a465370ea0d.tar.gz sssd_unused-4f345e22530b0968794b29c05abf8a465370ea0d.tar.xz sssd_unused-4f345e22530b0968794b29c05abf8a465370ea0d.zip |
changed dbus_message_iter_init() to dbus_message_append_args()
-rw-r--r-- | src/sss_client/sudo_plugin/sss_sudoplugin.c | 35 |
1 files changed, 18 insertions, 17 deletions
diff --git a/src/sss_client/sudo_plugin/sss_sudoplugin.c b/src/sss_client/sudo_plugin/sss_sudoplugin.c index 44b589cd..195f3ac1 100644 --- a/src/sss_client/sudo_plugin/sss_sudoplugin.c +++ b/src/sss_client/sudo_plugin/sss_sudoplugin.c @@ -699,6 +699,7 @@ int sss_sudo_make_request(struct sss_cli_req_data *rd, DBusMessageIter args; dbus_uint32_t status=0; + dbus_bool_t ret=FALSE; fprintf(stdout,"Calling remote method wit %s\n", param); @@ -723,12 +724,17 @@ int sss_sudo_make_request(struct sss_cli_req_data *rd, SUDO_METHOD_QUERY); /* method name */ if (NULL == dbus_msg) { fprintf(stderr, "Message Null\n"); + if (dbus_error_is_set(&err)) + dbus_error_free(&err); + dbus_connection_close(conn); return SSS_SUDO_SYSTEM_ERR; } /* append arguments */ - dbus_message_iter_init_append(dbus_msg, &args); - if (!dbus_message_iter_append_basic(&args, DBUS_TYPE_STRING, ¶m)) { + ret = dbus_message_append_args(dbus_msg, + DBUS_TYPE_STRING, ¶m, + DBUS_TYPE_INVALID); + if (!ret) { fprintf(stderr, "Out Of Memory!\n"); exit(1); } @@ -751,21 +757,16 @@ int sss_sudo_make_request(struct sss_cli_req_data *rd, fprintf(stdout,"Request Sent\n"); - /* read the parameters */ - if (!dbus_message_iter_init(dbus_reply, &args)) { - fprintf(stderr, "Message has no arguments!\n"); - - } - else if (DBUS_TYPE_UINT16 != dbus_message_iter_get_arg_type(&args)) { - fprintf(stderr, "Argument is not DBUS_TYPE_UINT16!\n"); - - } - else { - dbus_message_iter_get_basic(&args, &status); - - } - - + ret = dbus_message_get_args(dbus_reply, &err, + DBUS_TYPE_UINT16, &status, + DBUS_TYPE_INVALID); + if (!ret) { + fprintf (stderr,"Failed to parse reply, killing connection\n"); + if (dbus_error_is_set(&err)) dbus_error_free(&err); + dbus_connection_close(conn); + return SSS_SUDO_SYSTEM_ERR; + } + fprintf(stdout,"Got Reply: %d\n", status); // free reply and close connection |