Re: [PATCH BlueZ] obexd/mas: Fix parsing of application parameters

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi,

On Wed, Sep 3, 2014 at 12:48 PM, Luiz Augusto von Dentz
<luiz.dentz@xxxxxxxxx> wrote:
> From: Luiz Augusto von Dentz <luiz.von.dentz@xxxxxxxxx>
>
> Some commands don't have any mandatory application parameter which means
> inparams can be NULL which should not be treated as a bad request.
> ---
>  obexd/plugins/mas.c | 24 ++++++++++++++++++------
>  1 file changed, 18 insertions(+), 6 deletions(-)
>
> diff --git a/obexd/plugins/mas.c b/obexd/plugins/mas.c
> index 5729c22..24b26ae 100644
> --- a/obexd/plugins/mas.c
> +++ b/obexd/plugins/mas.c
> @@ -83,8 +83,8 @@ static int get_params(struct obex_session *os, struct mas_session *mas)
>         ssize_t size;
>
>         size = obex_get_apparam(os, &buffer);
> -       if (size < 0)
> -               size = 0;
> +       if (size <= 0)
> +               return 0;
>
>         mas->inparams = g_obex_apparam_decode(buffer, size);
>         if (mas->inparams == NULL) {
> @@ -249,7 +249,9 @@ static void get_messages_listing_cb(void *session, int err, uint16_t size,
>                 return;
>         }
>
> -       g_obex_apparam_get_uint16(mas->inparams, MAP_AP_MAXLISTCOUNT, &max);
> +       if (mas->inparams)
> +               g_obex_apparam_get_uint16(mas->inparams, MAP_AP_MAXLISTCOUNT,
> +                                                                       &max);
>
>         if (max == 0) {
>                 if (!entry)
> @@ -397,7 +399,9 @@ static void get_folder_listing_cb(void *session, int err, uint16_t size,
>                 return;
>         }
>
> -       g_obex_apparam_get_uint16(mas->inparams, MAP_AP_MAXLISTCOUNT, &max);
> +       if (mas->inparams)
> +               g_obex_apparam_get_uint16(mas->inparams, MAP_AP_MAXLISTCOUNT,
> +                                                                       &max);
>
>         if (max == 0) {
>                 if (err != -EAGAIN)
> @@ -493,8 +497,12 @@ static void *folder_listing_open(const char *name, int oflag, mode_t mode,
>
>         DBG("name = %s", name);
>
> -       g_obex_apparam_get_uint16(mas->inparams, MAP_AP_MAXLISTCOUNT, &max);
> -       g_obex_apparam_get_uint16(mas->inparams, MAP_AP_STARTOFFSET, &offset);
> +       if (mas->inparams) {
> +               g_obex_apparam_get_uint16(mas->inparams, MAP_AP_MAXLISTCOUNT,
> +                                                                       &max);
> +               g_obex_apparam_get_uint16(mas->inparams, MAP_AP_STARTOFFSET,
> +                                                               &offset);
> +       }
>
>         *err = messages_get_folder_listing(mas->backend_data, name, max,
>                                         offset, get_folder_listing_cb, mas);
> @@ -526,6 +534,9 @@ static void *msg_listing_open(const char *name, int oflag, mode_t mode,
>                 return NULL;
>         }
>
> +       if (!mas->inparams)
> +               goto done;
> +
>         g_obex_apparam_get_uint16(mas->inparams, MAP_AP_MAXLISTCOUNT, &max);
>         g_obex_apparam_get_uint16(mas->inparams, MAP_AP_STARTOFFSET, &offset);
>         g_obex_apparam_get_uint8(mas->inparams, MAP_AP_SUBJECTLENGTH,
> @@ -548,6 +559,7 @@ static void *msg_listing_open(const char *name, int oflag, mode_t mode,
>         g_obex_apparam_get_uint8(mas->inparams, MAP_AP_FILTERPRIORITY,
>                                                 &filter.priority);
>
> +done:
>         *err = messages_get_messages_listing(mas->backend_data, name, max,
>                         offset, subject_len, &filter,
>                         get_messages_listing_cb, mas);
> --
> 1.9.3

Applied.


-- 
Luiz Augusto von Dentz
--
To unsubscribe from this list: send the line "unsubscribe linux-bluetooth" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html




[Index of Archives]     [Bluez Devel]     [Linux Wireless Networking]     [Linux Wireless Personal Area Networking]     [Linux ATH6KL]     [Linux USB Devel]     [Linux Media Drivers]     [Linux Audio Users]     [Linux Kernel]     [Linux SCSI]     [Big List of Linux Books]

  Powered by Linux