[SSSD] [PATCH] SBUS: Fir error handling after closing container

Lukas Slebodnik lslebodn at redhat.com
Tue Oct 14 12:53:48 UTC 2014


On (14/10/14 14:40), Jakub Hrozek wrote:
>On Mon, Oct 13, 2014 at 09:51:17AM +0200, Lukas Slebodnik wrote:
>> From fac3031392c09ab1827e28311eaa0addbfb5fc46 Mon Sep 17 00:00:00 2001
>> From: Lukas Slebodnik <lslebodn at redhat.com>
>> Date: Fri, 10 Oct 2014 19:23:33 +0200
>> Subject: [PATCH] SBUS: Fir error handling after closing container
>> 
>> If function dbus_message_iter_close_container fail the return variable ret will
>> be set to EINVAL, but function will not be immediately terminated.
>> "goto done" was missing.
>> ---
>>  src/sbus/sssd_dbus_request.c | 2 ++
>>  1 file changed, 2 insertions(+)
>> 
>> diff --git a/src/sbus/sssd_dbus_request.c b/src/sbus/sssd_dbus_request.c
>> index 7729d4e0d7bf6e517e2efce4dbeb064f6f471b87..677ed532f7555f6aeba378ebd9a0b06167ddfa1b 100644
>> --- a/src/sbus/sssd_dbus_request.c
>> +++ b/src/sbus/sssd_dbus_request.c
>> @@ -286,6 +286,7 @@ int sbus_request_return_array_as_variant(struct sbus_request *dbus_req,
>>                                          DBUS_ERROR_FAILED,
>>                                          "Could not close array\n"));
>>          ret = EINVAL;
>> +        goto done;
>>      }
>>  
>>      dbret = dbus_message_iter_close_container(&iter, &variant_iter);
>> @@ -298,6 +299,7 @@ int sbus_request_return_array_as_variant(struct sbus_request *dbus_req,
>>                                          DBUS_ERROR_FAILED,
>>                                          "Could not close variant\n"));
>>          ret = EINVAL;
>> +        goto done;
>>      }
>>  
>
>Can you also add ret=EOK before the done label?
>
It would override return value from function sbus_request_finish.

292     dbret = dbus_message_iter_close_container(&iter, &variant_iter);
293     if (dbret) {
294         ret = sbus_request_finish(dbus_req, reply);
295     } else {
296         sbus_request_fail_and_finish(
297                             dbus_req,
298                             sbus_error_new(dbus_req,
299                                         DBUS_ERROR_FAILED,
300                                         "Could not close variant\n"));
301         ret = EINVAL;
302         goto done;
303     }
304
305 done:
306     if (reply != NULL) {
307         dbus_message_unref(reply);
308     }

LS



More information about the sssd-devel mailing list