diff mbox

[v2] vmdk: Fix vmdk_parse_extents

Message ID 1381492109-24999-1-git-send-email-famz@redhat.com
State New
Headers show

Commit Message

Fam Zheng Oct. 11, 2013, 11:48 a.m. UTC
An extra 'p++' after while loop when *p == '\n' will move p to unknown
data position, risking parsing junk data or memory access violation.

Cc: qemu-stable@nongnu.org
Signed-off-by: Fam Zheng <famz@redhat.com>
---
 block/vmdk.c | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)

Comments

Kevin Wolf Oct. 11, 2013, 11:55 a.m. UTC | #1
Am 11.10.2013 um 13:48 hat Fam Zheng geschrieben:
> An extra 'p++' after while loop when *p == '\n' will move p to unknown
> data position, risking parsing junk data or memory access violation.
> 
> Cc: qemu-stable@nongnu.org
> Signed-off-by: Fam Zheng <famz@redhat.com>

Thanks, applied to the block branch.

Kevin
Fam Zheng Oct. 14, 2013, 1:57 a.m. UTC | #2
Cc'ing qemu-stable@nongnu.org.

On Fri, 10/11 19:48, Fam Zheng wrote:
> An extra 'p++' after while loop when *p == '\n' will move p to unknown
> data position, risking parsing junk data or memory access violation.
> 
> Cc: qemu-stable@nongnu.org
> Signed-off-by: Fam Zheng <famz@redhat.com>
> ---
>  block/vmdk.c | 7 +++++--
>  1 file changed, 5 insertions(+), 2 deletions(-)
> 
> diff --git a/block/vmdk.c b/block/vmdk.c
> index 5d56e31..21f0fa7 100644
> --- a/block/vmdk.c
> +++ b/block/vmdk.c
> @@ -760,10 +760,13 @@ static int vmdk_parse_extents(const char *desc, BlockDriverState *bs,
>          }
>  next_line:
>          /* move to next line */
> -        while (*p && *p != '\n') {
> +        while (*p) {
> +            if (*p == '\n') {
> +                p++;
> +                break;
> +            }
>              p++;
>          }
> -        p++;
>      }
>      return 0;
>  }
> -- 
> 1.8.3.1
> 
>
diff mbox

Patch

diff --git a/block/vmdk.c b/block/vmdk.c
index 5d56e31..21f0fa7 100644
--- a/block/vmdk.c
+++ b/block/vmdk.c
@@ -760,10 +760,13 @@  static int vmdk_parse_extents(const char *desc, BlockDriverState *bs,
         }
 next_line:
         /* move to next line */
-        while (*p && *p != '\n') {
+        while (*p) {
+            if (*p == '\n') {
+                p++;
+                break;
+            }
             p++;
         }
-        p++;
     }
     return 0;
 }