Minor MTP fixes
cover Minor MTP fixes
Minor MTP fixes. The first patch adds some checks/asserts for issues reported by Coverity and the second fixes a bug where the readonly flag is ignored if "desc" is specified.
Bandan Das (2):
usb-mtp: Add some NULL checks for issues pointed out by coverity
usb-mtp: Unconditionally check for the readonly bit
hw/usb/dev-mtp.c | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-)
Signature · 1 line
2.11.0
PATCH 1/2 usb-mtp: Add some NULL checks for issues pointed out by coverity
From: Bandan Das <[email protected]>
CID 1390578: In usb_mtp_write_metadata, parent can never be NULL but just in case, add an assert
CID 1390592: Check for o->format only if o !=NULL
CID 1390604: Check s->data_out != NULL in usb_mtp_handle_data
--- hw/usb/dev-mtp.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-)
hw/usb/dev-mtp.c +3 -3
@@ -1446,8 +1446,7 @@ static void usb_mtp_command(MTPState *s, MTPControl *c)if (o ==NULL ) {usb_mtp_queue_result (s,RES_INVALID_OBJECT_HANDLE , c->trans,0 ,0 ,0 ,0 ); - } -if (o->format !=FMT_ASSOCIATION ) { + }else if (o->format !=FMT_ASSOCIATION ) {usb_mtp_queue_result (s,RES_INVALID_PARENT_OBJECT , c->trans,0 ,0 ,0 ,0 ); }
@@ -1660,6 +1659,7 @@ static void usb_mtp_write_metadata(MTPState *s)uint32_t next_handle = s->next_handle;assert (!s->write_pending); +assert (p !=NULL );utf16_to_str (dataset->length, dataset->filename, filename);
@@ -1838,7 +1838,7 @@ static void usb_mtp_handle_data(USBDevice *dev, USBPacket *p) p->status =USB_RET_STALL ;return ; } -if (s->data_out && !s->data_out->first) { +if ((s->data_out !=NULL ) && !s->data_out->first) { container_type =TYPE_DATA ; }else {usb_packet_copy (p, &container,sizeof (container));
Signature · 1 line
2.11.0
PATCH 2/2 usb-mtp: Unconditionally check for the readonly bit
In reply to BandanFrom: Bandan Das <[email protected]>
Currently, it's only being checked if desc is NULL and so write support breaks upon specifying desc
--- hw/usb/dev-mtp.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-)
hw/usb/dev-mtp.c +5 -4
@@ -1948,16 +1948,17 @@ static void usb_mtp_realize(USBDevice *dev, Error **errp)return ; } s->desc =strrchr (s->root,'/' ); -/* Mark store as RW */ -if (!s->readonly) { - s->flags |= (1 <<MTP_FLAG_WRITABLE ); - }if (s->desc && s->desc[0 ]) { s->desc =g_strdup (s->desc +1 ); }else { s->desc =g_strdup ("none" ); } } +/* Mark store as RW */ +if (!s->readonly) { + s->flags |= (1 <<MTP_FLAG_WRITABLE ); + } + }static const VMStateDescription vmstate_usb_mtp = {
Signature · 1 line
2.11.0