[Qemu-devel] [PULL 8/9] usb: add device checks before redirector calls to usb_ep_get()

Gerd Hoffmann posted 9 patches 6 years, 8 months ago
[Qemu-devel] [PULL 8/9] usb: add device checks before redirector calls to usb_ep_get()
Posted by Gerd Hoffmann 6 years, 8 months ago
From: Liam Merwick <liam.merwick@oracle.com>

Add an assert and an explicit check before the two callers to
usb_ep_get() in the USB redirector code to ensure the device
passed in is not NULL.

Signed-off-by: Liam Merwick <liam.merwick@oracle.com>
Message-id: 1549460216-25808-9-git-send-email-liam.merwick@oracle.com
Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
---
 hw/usb/redirect.c | 3 ++-
 1 file changed, 2 insertions(+), 1 deletion(-)

diff --git a/hw/usb/redirect.c b/hw/usb/redirect.c
index 18a42d1938..7cb6b120d4 100644
--- a/hw/usb/redirect.c
+++ b/hw/usb/redirect.c
@@ -1728,6 +1728,7 @@ static void usbredir_ep_info(void *priv,
     USBRedirDevice *dev = priv;
     int i;
 
+    assert(dev != NULL);
     for (i = 0; i < MAX_ENDPOINTS; i++) {
         dev->endpoint[i].type = ep_info->type[i];
         dev->endpoint[i].interval = ep_info->interval[i];
@@ -2125,7 +2126,7 @@ static int usbredir_post_load(void *priv, int version_id)
 {
     USBRedirDevice *dev = priv;
 
-    if (dev->parser == NULL) {
+    if (dev == NULL || dev->parser == NULL) {
         return 0;
     }
 
-- 
2.9.3


Re: [Qemu-devel] [PULL 8/9] usb: add device checks before redirector calls to usb_ep_get()
Posted by Yuval Shaia 6 years, 8 months ago
On Wed, Feb 20, 2019 at 12:13:45PM +0100, Gerd Hoffmann wrote:
> From: Liam Merwick <liam.merwick@oracle.com>
> 
> Add an assert and an explicit check before the two callers to
> usb_ep_get() in the USB redirector code to ensure the device
> passed in is not NULL.
> 
> Signed-off-by: Liam Merwick <liam.merwick@oracle.com>
> Message-id: 1549460216-25808-9-git-send-email-liam.merwick@oracle.com
> Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
> ---
>  hw/usb/redirect.c | 3 ++-
>  1 file changed, 2 insertions(+), 1 deletion(-)
> 
> diff --git a/hw/usb/redirect.c b/hw/usb/redirect.c
> index 18a42d1938..7cb6b120d4 100644
> --- a/hw/usb/redirect.c
> +++ b/hw/usb/redirect.c
> @@ -1728,6 +1728,7 @@ static void usbredir_ep_info(void *priv,
>      USBRedirDevice *dev = priv;
>      int i;
>  
> +    assert(dev != NULL);

Suggesting:
    assert(dev)

>      for (i = 0; i < MAX_ENDPOINTS; i++) {
>          dev->endpoint[i].type = ep_info->type[i];
>          dev->endpoint[i].interval = ep_info->interval[i];
> @@ -2125,7 +2126,7 @@ static int usbredir_post_load(void *priv, int version_id)
>  {
>      USBRedirDevice *dev = priv;
>  
> -    if (dev->parser == NULL) {
> +    if (dev == NULL || dev->parser == NULL) {

Suggesting
    if (!dev || !dev->parser)

>          return 0;
>      }
>  
> -- 
> 2.9.3
> 
> 

Re: [Qemu-devel] [PULL 8/9] usb: add device checks before redirector calls to usb_ep_get()
Posted by Liam Merwick 6 years, 8 months ago
On 20/02/2019 11:24, Yuval Shaia wrote:
> On Wed, Feb 20, 2019 at 12:13:45PM +0100, Gerd Hoffmann wrote:
>> From: Liam Merwick <liam.merwick@oracle.com>
>>
>> Add an assert and an explicit check before the two callers to
>> usb_ep_get() in the USB redirector code to ensure the device
>> passed in is not NULL.
>>
>> Signed-off-by: Liam Merwick <liam.merwick@oracle.com>
>> Message-id: 1549460216-25808-9-git-send-email-liam.merwick@oracle.com
>> Signed-off-by: Gerd Hoffmann <kraxel@redhat.com>
>> ---
>>   hw/usb/redirect.c | 3 ++-
>>   1 file changed, 2 insertions(+), 1 deletion(-)
>>
>> diff --git a/hw/usb/redirect.c b/hw/usb/redirect.c
>> index 18a42d1938..7cb6b120d4 100644
>> --- a/hw/usb/redirect.c
>> +++ b/hw/usb/redirect.c
>> @@ -1728,6 +1728,7 @@ static void usbredir_ep_info(void *priv,
>>       USBRedirDevice *dev = priv;
>>       int i;
>>   
>> +    assert(dev != NULL);
> 
> Suggesting:
>      assert(dev)
> 
>>       for (i = 0; i < MAX_ENDPOINTS; i++) {
>>           dev->endpoint[i].type = ep_info->type[i];
>>           dev->endpoint[i].interval = ep_info->interval[i];
>> @@ -2125,7 +2126,7 @@ static int usbredir_post_load(void *priv, int version_id)
>>   {
>>       USBRedirDevice *dev = priv;
>>   
>> -    if (dev->parser == NULL) {
>> +    if (dev == NULL || dev->parser == NULL) {
> 
> Suggesting
>      if (!dev || !dev->parser)
> 

The rest of the file tests for '== NULL' so I used that for consistency 
(but in any case, my personal preferences is to just use that boolean 
style check with boolean variables).  As it happens, the commits have 
already been pulled.

Regards,
Liam