summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorArun Scaria <arunscaria91@gmail.com>2011-06-29 21:19:46 +0530
committerArun Scaria <arunscaria91@gmail.com>2011-06-29 21:19:46 +0530
commit4f345e22530b0968794b29c05abf8a465370ea0d (patch)
tree24bada1ac00296b5c0f7738d91c386a568422ab6
parent3aa92f744fc8a1e1accaa6fa546e0da7e11cc732 (diff)
downloadsssd_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.c35
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, &param)) {
+ ret = dbus_message_append_args(dbus_msg,
+ DBUS_TYPE_STRING, &param,
+ 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