diff mbox

[v2,03/45] ivhsmem: read do not accept more than sizeof(long)

Message ID 1438043577-28636-4-git-send-email-marcandre.lureau@redhat.com
State New
Headers show

Commit Message

Marc-André Lureau July 28, 2015, 12:32 a.m. UTC
From: Marc-André Lureau <marcandre.lureau@gmail.com>

ivshmem_read() only reads sizeof(long) from the input buffer.  Accepting
more could lead to fifo8 abort() on x86 if it's not empty.

Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
---
 hw/misc/ivshmem.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

Comments

Paolo Bonzini July 29, 2015, 7:47 a.m. UTC | #1
On 28/07/2015 02:32, Marc-André Lureau wrote:
> From: Marc-André Lureau <marcandre.lureau@gmail.com>
> 
> ivshmem_read() only reads sizeof(long) from the input buffer.  Accepting
> more could lead to fifo8 abort() on x86 if it's not empty.
> 
> Signed-off-by: Marc-André Lureau <marcandre.lureau@redhat.com>
> ---
>  hw/misc/ivshmem.c | 2 +-
>  1 file changed, 1 insertion(+), 1 deletion(-)
> 
> diff --git a/hw/misc/ivshmem.c b/hw/misc/ivshmem.c
> index cc76989..fb53b3f 100644
> --- a/hw/misc/ivshmem.c
> +++ b/hw/misc/ivshmem.c
> @@ -272,7 +272,7 @@ static void ivshmem_receive(void *opaque, const uint8_t *buf, int size)
>  
>  static int ivshmem_can_receive(void * opaque)
>  {
> -    return 8;
> +    return sizeof(long);
>  }
>  
>  static void ivshmem_event(void *opaque, int event)
> -- 2.4.3

I would prefer to change all longs to uint64_t, to avoid a dependency on
the host long size.  Even better one could have uint32_t for the id plus
a flags value that for now would always be zero.

Paolo
Marc-André Lureau July 29, 2015, 8:26 a.m. UTC | #2
Hi

On Wed, Jul 29, 2015 at 9:47 AM, Paolo Bonzini <pbonzini@redhat.com> wrote:
> I would prefer to change all longs to uint64_t, to avoid a dependency on
> the host long size.  Even better one could have uint32_t for the id plus
> a flags value that for now would always be zero.


I would prefer too, but that would break the protocol. Imho, this is a
seperate change, it doesn't make this patch less valid.
Paolo Bonzini July 29, 2015, 8:30 a.m. UTC | #3
On 29/07/2015 10:26, Marc-André Lureau wrote:
>> I would prefer to change all longs to uint64_t, to avoid a dependency on
>> > the host long size.  Even better one could have uint32_t for the id plus
>> > a flags value that for now would always be zero.
> 
> I would prefer too, but that would break the protocol. Imho, this is a
> seperate change, it doesn't make this patch less valid.

Does anyone care about ivshmem on 32-bit hosts?

Paolo
diff mbox

Patch

diff --git a/hw/misc/ivshmem.c b/hw/misc/ivshmem.c
index cc76989..fb53b3f 100644
--- a/hw/misc/ivshmem.c
+++ b/hw/misc/ivshmem.c
@@ -272,7 +272,7 @@  static void ivshmem_receive(void *opaque, const uint8_t *buf, int size)
 
 static int ivshmem_can_receive(void * opaque)
 {
-    return 8;
+    return sizeof(long);
 }
 
 static void ivshmem_event(void *opaque, int event)