From patchwork Thu Aug 20 23:00:38 2015 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Max Reitz X-Patchwork-Id: 509197 Return-Path: X-Original-To: incoming@patchwork.ozlabs.org Delivered-To: patchwork-incoming@bilbo.ozlabs.org Received: from lists.gnu.org (lists.gnu.org [IPv6:2001:4830:134:3::11]) (using TLSv1 with cipher AES256-SHA (256/256 bits)) (No client certificate requested) by ozlabs.org (Postfix) with ESMTPS id 03A8F1402A9 for ; Fri, 21 Aug 2015 09:01:18 +1000 (AEST) Received: from localhost ([::1]:37655 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ZSYpg-0001xs-8C for incoming@patchwork.ozlabs.org; Thu, 20 Aug 2015 19:01:16 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:40038) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ZSYpE-0001S8-4q for qemu-devel@nongnu.org; Thu, 20 Aug 2015 19:00:48 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1ZSYpC-00071K-OF for qemu-devel@nongnu.org; Thu, 20 Aug 2015 19:00:47 -0400 Received: from mx1.redhat.com ([209.132.183.28]:33702) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1ZSYp6-0006zP-P9; Thu, 20 Aug 2015 19:00:40 -0400 Received: from int-mx09.intmail.prod.int.phx2.redhat.com (int-mx09.intmail.prod.int.phx2.redhat.com [10.5.11.22]) by mx1.redhat.com (Postfix) with ESMTPS id B828183F6B; Thu, 20 Aug 2015 23:00:39 +0000 (UTC) Received: from localhost (ovpn-113-94.phx2.redhat.com [10.3.113.94]) by int-mx09.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id t7KN0d8p008901 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=NO); Thu, 20 Aug 2015 19:00:39 -0400 From: Max Reitz To: qemu-block@nongnu.org Date: Thu, 20 Aug 2015 16:00:38 -0700 Message-Id: <1440111638-30188-1-git-send-email-mreitz@redhat.com> X-Scanned-By: MIMEDefang 2.68 on 10.5.11.22 X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x X-Received-From: 209.132.183.28 Cc: Kevin Wolf , Max Reitz , qemu-devel@nongnu.org, qemu-stable@nongnu.org Subject: [Qemu-devel] [PATCH v2] qemu-img: Fix crash in amend invocation X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Sender: qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org Example: $ ./qemu-img create -f qcow2 /tmp/t.qcow2 64M $ ./qemu-img amend -f qcow2 -o backing_file=/tmp/t.qcow2, -o help \ /tmp/t.qcow2 This should not crash. This actually is tested by iotest 082, but not caught due to the segmentation fault being silent (which is something that needs to be fixed, too). Reported-by: Dr. David Alan Gilbert Cc: qemu-stable Signed-off-by: Max Reitz Reviewed-by: Eric Blake --- v2: - Fix leak introduced by trying to be clever [Eric] (thank you for catching this!) --- qemu-img.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/qemu-img.c b/qemu-img.c index 75f4ee4..6ff4e85 100644 --- a/qemu-img.c +++ b/qemu-img.c @@ -2931,7 +2931,7 @@ static int img_amend(int argc, char **argv) if (!is_valid_option_list(optarg)) { error_report("Invalid option list: %s", optarg); ret = -1; - goto out; + goto out_no_progress; } if (!options) { options = g_strdup(optarg); @@ -3031,6 +3031,7 @@ static int img_amend(int argc, char **argv) out: qemu_progress_end(); +out_no_progress: blk_unref(blk); qemu_opts_del(opts); qemu_opts_free(create_opts);