All of lore.kernel.org
 help / color / mirror / Atom feed
From: Paolo Bonzini <pbonzini@redhat.com>
To: Max Reitz <mreitz@redhat.com>, qemu-block@nongnu.org
Cc: Kevin Wolf <kwolf@redhat.com>,
	qemu-devel@nongnu.org, Stefan Hajnoczi <stefanha@redhat.com>
Subject: Re: [Qemu-devel] [PATCH 10/25] nbd: Fix potential signed overflow issues
Date: Wed, 11 Mar 2015 12:28:54 +0100	[thread overview]
Message-ID: <550026F6.6090304@redhat.com> (raw)
In-Reply-To: <1424887718-10800-11-git-send-email-mreitz@redhat.com>



On 25/02/2015 19:08, Max Reitz wrote:
> Signed-off-by: Max Reitz <mreitz@redhat.com>
> ---
>  include/block/nbd.h | 4 ++--
>  qemu-nbd.c          | 5 +++--
>  2 files changed, 5 insertions(+), 4 deletions(-)
> 
> diff --git a/include/block/nbd.h b/include/block/nbd.h
> index 2c20138..53726e8 100644
> --- a/include/block/nbd.h
> +++ b/include/block/nbd.h
> @@ -54,8 +54,8 @@ struct nbd_reply {
>  /* Reply types. */
>  #define NBD_REP_ACK             (1)             /* Data sending finished. */
>  #define NBD_REP_SERVER          (2)             /* Export description. */
> -#define NBD_REP_ERR_UNSUP       ((1 << 31) | 1) /* Unknown option. */
> -#define NBD_REP_ERR_INVALID     ((1 << 31) | 3) /* Invalid length. */
> +#define NBD_REP_ERR_UNSUP       ((UINT32_C(1) << 31) | 1) /* Unknown option. */
> +#define NBD_REP_ERR_INVALID     ((UINT32_C(1) << 31) | 3) /* Invalid length. */

Easier to just use 0x80000001u and 0x80000003u; changed locally.

>  
>  #define NBD_CMD_MASK_COMMAND	0x0000ffff
>  #define NBD_CMD_FLAG_FUA	(1 << 16)
> diff --git a/qemu-nbd.c b/qemu-nbd.c
> index c9ed003..fd1e0c8 100644
> --- a/qemu-nbd.c
> +++ b/qemu-nbd.c
> @@ -142,8 +142,9 @@ static void read_partition(uint8_t *p, struct partition_record *r)
>      r->end_head = p[5];
>      r->end_cylinder = p[7] | ((p[6] << 2) & 0x300);
>      r->end_sector = p[6] & 0x3f;
> -    r->start_sector_abs = p[8] | p[9] << 8 | p[10] << 16 | p[11] << 24;
> -    r->nb_sectors_abs = p[12] | p[13] << 8 | p[14] << 16 | p[15] << 24;
> +
> +    r->start_sector_abs = le32_to_cpup((uint32_t *)(p +  8));
> +    r->nb_sectors_abs   = le32_to_cpup((uint32_t *)(p + 12));

By accepting uint32_t*, le32_to_cpup  is not safe if p is not properly
aligned.  ldl_le_p is better in this case.

Paolo

>  }
>  
>  static int find_partition(BlockBackend *blk, int partition,
> 

  reply	other threads:[~2015-03-11 11:29 UTC|newest]

Thread overview: 46+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2015-02-25 18:08 [Qemu-devel] [PATCH 00/25] nbd: Several fixes Max Reitz
2015-02-25 18:08 ` [Qemu-devel] [PATCH 01/25] util/uri: Add overflow check to rfc3986_parse_port Max Reitz
2015-02-25 18:08 ` [Qemu-devel] [PATCH 02/25] qemu-nbd: Detect unused partitions by system == 0 Max Reitz
2015-02-25 18:08 ` [Qemu-devel] [PATCH 03/25] nbd: Fix nbd_establish_connection()'s return value Max Reitz
2015-02-25 18:08 ` [Qemu-devel] [PATCH 04/25] nbd: Fix response to invalid requests Max Reitz
2015-03-02 16:52   ` Max Reitz
2015-02-25 18:08 ` [Qemu-devel] [PATCH 05/25] nbd: Avoid generic -EINVAL Max Reitz
2015-03-11 11:22   ` Paolo Bonzini
2015-03-16 13:51     ` Max Reitz
2015-03-16 14:42       ` Paolo Bonzini
2015-03-16 14:48         ` Max Reitz
2015-03-16 14:49           ` Paolo Bonzini
2015-02-25 18:08 ` [Qemu-devel] [PATCH 06/25] nbd: Pass return value from nbd_handle_list() Max Reitz
2015-02-25 18:08 ` [Qemu-devel] [PATCH 07/25] nbd: Add "failed to open export" error message Max Reitz
2015-03-11 11:24   ` Paolo Bonzini
2015-03-16 13:55     ` Max Reitz
2015-02-25 18:08 ` [Qemu-devel] [PATCH 08/25] nbd: Handle blk_getlength() failure Max Reitz
2015-03-11 11:26   ` Paolo Bonzini
2015-02-25 18:08 ` [Qemu-devel] [PATCH 09/25] qemu-nbd: fork() can fail Max Reitz
2015-02-25 18:08 ` [Qemu-devel] [PATCH 10/25] nbd: Fix potential signed overflow issues Max Reitz
2015-03-11 11:28   ` Paolo Bonzini [this message]
2015-02-25 18:08 ` [Qemu-devel] [PATCH 11/25] qemu-nbd: Fix and improve input verification Max Reitz
2015-03-11 11:30   ` Paolo Bonzini
2015-03-16 13:56     ` Max Reitz
2015-02-25 18:08 ` [Qemu-devel] [PATCH 12/25] nbd: Set block size to BDRV_SECTOR_SIZE Max Reitz
2015-02-25 18:08 ` [Qemu-devel] [PATCH 13/25] nbd: Enforce sector alignment Max Reitz
2015-02-25 18:08 ` [Qemu-devel] [PATCH 14/25] coroutine: Add co_yield_timeout() Max Reitz
2015-02-25 18:08 ` [Qemu-devel] [PATCH 15/25] coroutine-io: Return -errno in case of error Max Reitz
2015-02-25 18:08 ` [Qemu-devel] [PATCH 16/25] coroutine-io: Add I/O functions with timeout Max Reitz
2015-02-25 18:08 ` [Qemu-devel] [PATCH 17/25] nbd: Employ timeouts Max Reitz
2015-02-25 18:08 ` [Qemu-devel] [PATCH 18/25] nbd: Fix nbd_receive_options() Max Reitz
2015-02-25 18:08 ` [Qemu-devel] [PATCH 19/25] nbd: Fix interpretation of the export flags Max Reitz
2015-02-25 18:08 ` [Qemu-devel] [PATCH 20/25] block/nbd: Comment on discard/flush silently failing Max Reitz
2015-03-11 11:31   ` Paolo Bonzini
2015-03-16 13:58     ` Max Reitz
2015-03-16 14:44       ` Paolo Bonzini
2015-03-16 14:49         ` Max Reitz
2015-03-16 14:51           ` Paolo Bonzini
2015-03-16 14:52             ` Max Reitz
2015-02-25 18:08 ` [Qemu-devel] [PATCH 21/25] nbd: Drop unexpected data for NBD_OPT_LIST Max Reitz
2015-02-25 18:08 ` [Qemu-devel] [PATCH 22/25] iotests: Add _timeout function Max Reitz
2015-02-25 18:08 ` [Qemu-devel] [PATCH 23/25] iotests: Add test for invalid qemu-nbd parameters Max Reitz
2015-02-25 18:08 ` [Qemu-devel] [PATCH 24/25] iotests: Add test for issuing discard over NBD Max Reitz
2015-02-25 18:08 ` [Qemu-devel] [PATCH 25/25] iotests: Add test for a non-existing NBD export Max Reitz
2015-02-25 18:11 ` [Qemu-devel] [PATCH 00/25] nbd: Several fixes Max Reitz
2015-03-11 11:36 ` Paolo Bonzini

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=550026F6.6090304@redhat.com \
    --to=pbonzini@redhat.com \
    --cc=kwolf@redhat.com \
    --cc=mreitz@redhat.com \
    --cc=qemu-block@nongnu.org \
    --cc=qemu-devel@nongnu.org \
    --cc=stefanha@redhat.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.