From nobody Sun Apr 28 15:41:22 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (lists.gnu.org [208.118.235.17]) by mx.zohomail.com with SMTPS id 1541821505867347.3543612280333; Fri, 9 Nov 2018 19:45:05 -0800 (PST) Received: from localhost ([::1]:36981 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gLKCi-0006QK-RN for importer@patchew.org; Fri, 09 Nov 2018 22:45:00 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:53531) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gLK9M-0003u7-Kc for qemu-devel@nongnu.org; Fri, 09 Nov 2018 22:41:33 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1gLK9H-0003ul-HA for qemu-devel@nongnu.org; Fri, 09 Nov 2018 22:41:30 -0500 Received: from m12-14.163.com ([220.181.12.14]:46934) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gLK9G-0003u0-S0 for qemu-devel@nongnu.org; Fri, 09 Nov 2018 22:41:27 -0500 Received: from ubuntu.localdomain (unknown [36.27.43.123]) by smtp10 (Coremail) with SMTP id DsCowAA3U81dU+ZbjEFaYA--.60968S3; Sat, 10 Nov 2018 11:41:24 +0800 (CST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=163.com; s=s110527; h=From:Subject:Date:Message-Id; bh=Ogkq8GjaGOdW6XW7s4 rcQjcDPthaReQDDtQAPx1PQks=; b=pJ5VrvxrGEgHUjKEgW9tp1ScNb88tJq34K CudJeNyPOiO2nWbWNn4cGmw7/GOBlWuBmRWfDnD5EytVy/3PO84VMMqluBonBER2 Bod1tpyq+R8PvcqwGBneSKcmSzWZaLid6rClFi7tgksDEXy2MKh0gAcC1bMomUAn Y6WZl70CE= From: Li Qiang To: pbonzini@redhat.com, kraxel@redhat.com, armbru@redhat.com, lersek@redhat.com, philmd@redhat.com Date: Fri, 9 Nov 2018 19:41:14 -0800 Message-Id: <20181110034115.103335-2-liq3ea@163.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20181110034115.103335-1-liq3ea@163.com> References: <20181110034115.103335-1-liq3ea@163.com> X-CM-TRANSID: DsCowAA3U81dU+ZbjEFaYA--.60968S3 X-Coremail-Antispam: 1Uf129KBjvJXoWxJF4fZrW3ZFy3Gry7GFyfZwb_yoW5tr45pF ZxJ3Z8G3s5JFZrXrsxCw4DuF1ftr4xXF1UZ3y5Xr4kZrWUZr1kuw4xKFySv3yayrZ7Zwsr Xr4rXrW7JF17XaDanT9S1TB71UUUUUUqnTZGkaVYY2UrUUUUjbIjqfuFe4nvWSU5nxnvy2 9KBjDUYxBIdaVFxhVjvjDU0xZFpf9x07UFZXwUUUUU= X-Originating-IP: [36.27.43.123] X-CM-SenderInfo: 5oltjvrd6rljoofrz/xtbBawT6bVetsyNlnAAAsr X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x X-Received-From: 220.181.12.14 Subject: [Qemu-devel] [PATCH 1/2] hw: fw_cfg: refactor fw_cfg_bootsplash() X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Li Qiang , qemu-devel@nongnu.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Currently when the splash-time value is bigger than 0xffff we report and correct it, when it is less than 0 we just ingore it. Also we use qemu_opt_get() to get 'splash-time', then convert it to a number ourselves. This is wrong. This patch does following: 1. use qemu_opt_get_number() to parse 'splash-time' 2. exit when the splash-time is invalid or loading the splash file failed 3. simplify code Signed-off-by: Li Qiang Reviewed-by: Markus Armbruster --- hw/nvram/fw_cfg.c | 40 ++++++++++++++++------------------------ vl.c | 2 +- 2 files changed, 17 insertions(+), 25 deletions(-) diff --git a/hw/nvram/fw_cfg.c b/hw/nvram/fw_cfg.c index 946f765f7f..78f43dad93 100644 --- a/hw/nvram/fw_cfg.c +++ b/hw/nvram/fw_cfg.c @@ -118,55 +118,47 @@ error: =20 static void fw_cfg_bootsplash(FWCfgState *s) { - int boot_splash_time =3D -1; const char *boot_splash_filename =3D NULL; - char *p; + const char *boot_splash_time =3D NULL; char *filename, *file_data; gsize file_size; int file_type; - const char *temp; =20 /* get user configuration */ QemuOptsList *plist =3D qemu_find_opts("boot-opts"); QemuOpts *opts =3D QTAILQ_FIRST(&plist->head); - if (opts !=3D NULL) { - temp =3D qemu_opt_get(opts, "splash"); - if (temp !=3D NULL) { - boot_splash_filename =3D temp; - } - temp =3D qemu_opt_get(opts, "splash-time"); - if (temp !=3D NULL) { - p =3D (char *)temp; - boot_splash_time =3D strtol(p, &p, 10); - } - } + boot_splash_filename =3D qemu_opt_get(opts, "splash"); + boot_splash_time =3D qemu_opt_get(opts, "splash-time"); =20 /* insert splash time if user configurated */ - if (boot_splash_time >=3D 0) { + if (boot_splash_time) { + int64_t bst_val =3D qemu_opt_get_number(opts, "splash-time", -1); /* validate the input */ - if (boot_splash_time > 0xffff) { - error_report("splash time is big than 65535, force it to 65535= ."); - boot_splash_time =3D 0xffff; + if (bst_val < 0 || bst_val > 0xffff) { + error_report("splash time is invalid," + "it should be a value between 0 and 65535"); + exit(1); } /* use little endian format */ - qemu_extra_params_fw[0] =3D (uint8_t)(boot_splash_time & 0xff); - qemu_extra_params_fw[1] =3D (uint8_t)((boot_splash_time >> 8) & 0x= ff); + qemu_extra_params_fw[0] =3D (uint8_t)(bst_val & 0xff); + qemu_extra_params_fw[1] =3D (uint8_t)((bst_val >> 8) & 0xff); fw_cfg_add_file(s, "etc/boot-menu-wait", qemu_extra_params_fw, 2); } =20 /* insert splash file if user configurated */ - if (boot_splash_filename !=3D NULL) { + if (boot_splash_filename) { filename =3D qemu_find_file(QEMU_FILE_TYPE_BIOS, boot_splash_filen= ame); if (filename =3D=3D NULL) { - error_report("failed to find file '%s'.", boot_splash_filename= ); - return; + error_report("failed to find file '%s'", boot_splash_filename); + exit(1); } =20 /* loading file data */ file_data =3D read_splashfile(filename, &file_size, &file_type); if (file_data =3D=3D NULL) { g_free(filename); - return; + error_report("failed to read file '%s'", boot_splash_filename); + exit(1); } g_free(boot_splash_filedata); boot_splash_filedata =3D (uint8_t *)file_data; diff --git a/vl.c b/vl.c index 55bab005b6..be37da46f0 100644 --- a/vl.c +++ b/vl.c @@ -336,7 +336,7 @@ static QemuOptsList qemu_boot_opts =3D { .type =3D QEMU_OPT_STRING, }, { .name =3D "splash-time", - .type =3D QEMU_OPT_STRING, + .type =3D QEMU_OPT_NUMBER, }, { .name =3D "reboot-timeout", .type =3D QEMU_OPT_STRING, --=20 2.17.1 From nobody Sun Apr 28 15:41:22 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) client-ip=208.118.235.17; envelope-from=qemu-devel-bounces+importer=patchew.org@nongnu.org; helo=lists.gnu.org; Authentication-Results: mx.zohomail.com; dkim=fail; spf=pass (zoho.com: domain of gnu.org designates 208.118.235.17 as permitted sender) smtp.mailfrom=qemu-devel-bounces+importer=patchew.org@nongnu.org Return-Path: Received: from lists.gnu.org (208.118.235.17 [208.118.235.17]) by mx.zohomail.com with SMTPS id 1541821400148769.6096368672034; Fri, 9 Nov 2018 19:43:20 -0800 (PST) Received: from localhost ([::1]:36974 helo=lists.gnu.org) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gLKAn-0004ab-SG for importer@patchew.org; Fri, 09 Nov 2018 22:43:01 -0500 Received: from eggs.gnu.org ([2001:4830:134:3::10]:53557) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gLK9N-0003uH-Oa for qemu-devel@nongnu.org; Fri, 09 Nov 2018 22:41:34 -0500 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1gLK9M-0003vz-Le for qemu-devel@nongnu.org; Fri, 09 Nov 2018 22:41:33 -0500 Received: from m12-14.163.com ([220.181.12.14]:47065) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1gLK9I-0003uq-Or for qemu-devel@nongnu.org; Fri, 09 Nov 2018 22:41:30 -0500 Received: from ubuntu.localdomain (unknown [36.27.43.123]) by smtp10 (Coremail) with SMTP id DsCowAA3U81dU+ZbjEFaYA--.60968S4; Sat, 10 Nov 2018 11:41:26 +0800 (CST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=163.com; s=s110527; h=From:Subject:Date:Message-Id; bh=uqOI9/P1QB7Bj6BGS5 kkou6eRV/QORZYL1xG2amjBgE=; b=A/5qoMj1NVD3VJ4mYzz1B3n1ACCrnhq+dz XpuJP7pbkINBT8Ku0IB21VhKdVARYe7bsiUpCGyYS6PsFHvQCVFeGZ4K3hgLkHZg ewm/9tFhxpJFeNbo7DI58jzLOhhQPYHzXEDLrJ/DFEHzTy/NyCXFpNA3WwFxzAAe zKWL0pLqE= From: Li Qiang To: pbonzini@redhat.com, kraxel@redhat.com, armbru@redhat.com, lersek@redhat.com, philmd@redhat.com Date: Fri, 9 Nov 2018 19:41:15 -0800 Message-Id: <20181110034115.103335-3-liq3ea@163.com> X-Mailer: git-send-email 2.17.1 In-Reply-To: <20181110034115.103335-1-liq3ea@163.com> References: <20181110034115.103335-1-liq3ea@163.com> X-CM-TRANSID: DsCowAA3U81dU+ZbjEFaYA--.60968S4 X-Coremail-Antispam: 1Uf129KBjvJXoW7ZrW5Xw43CF1fWrWUArWfGrg_yoW8ZFyUpr W3ta1DGr4ktrW3Aw4xKw1DWr1UXwn7Xr4UZr4DA34IvrnrJr1kJw4xG3s3Kay3ZF93tFsI gF4Sg34UGrsrWaDanT9S1TB71UUUUUUqnTZGkaVYY2UrUUUUjbIjqfuFe4nvWSU5nxnvy2 9KBjDUYxBIdaVFxhVjvjDU0xZFpf9x07UJPEhUUUUU= X-Originating-IP: [36.27.43.123] X-CM-SenderInfo: 5oltjvrd6rljoofrz/1tbiTwb6bVsGMsztVwAAsH X-detected-operating-system: by eggs.gnu.org: GNU/Linux 3.x X-Received-From: 220.181.12.14 Subject: [Qemu-devel] [PATCH 2/2] hw: fw_cfg: refactor fw_cfg_reboot() X-BeenThere: qemu-devel@nongnu.org X-Mailman-Version: 2.1.21 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Cc: Li Qiang , qemu-devel@nongnu.org Errors-To: qemu-devel-bounces+importer=patchew.org@nongnu.org Sender: "Qemu-devel" X-ZohoMail-DKIM: fail (Header signature does not verify) Content-Transfer-Encoding: quoted-printable MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Currently the user can set a negative reboot_timeout. Also it is wrong to parse 'reboot-timeout' with qemu_opt_get() and then convert it to number. This patch refactor this function by following: 1. ensure reboot_timeout is in 0~0xffff 2. use qemu_opt_get_number() to parse reboot_timeout 3. simlify code Signed-off-by: Li Qiang --- hw/nvram/fw_cfg.c | 23 +++++++++++------------ vl.c | 2 +- 2 files changed, 12 insertions(+), 13 deletions(-) diff --git a/hw/nvram/fw_cfg.c b/hw/nvram/fw_cfg.c index 78f43dad93..6aca80846a 100644 --- a/hw/nvram/fw_cfg.c +++ b/hw/nvram/fw_cfg.c @@ -178,24 +178,23 @@ static void fw_cfg_bootsplash(FWCfgState *s) =20 static void fw_cfg_reboot(FWCfgState *s) { - int reboot_timeout =3D -1; - char *p; - const char *temp; + const char *reboot_timeout =3D NULL; =20 /* get user configuration */ QemuOptsList *plist =3D qemu_find_opts("boot-opts"); QemuOpts *opts =3D QTAILQ_FIRST(&plist->head); - if (opts !=3D NULL) { - temp =3D qemu_opt_get(opts, "reboot-timeout"); - if (temp !=3D NULL) { - p =3D (char *)temp; - reboot_timeout =3D strtol(p, &p, 10); - } + reboot_timeout =3D qemu_opt_get(opts, "reboot-timeout"); + + if (reboot_timeout =3D=3D NULL) { + return; } + int64_t rt_val =3D qemu_opt_get_number(opts, "reboot-timeout", -1); + /* validate the input */ - if (reboot_timeout > 0xffff) { - error_report("reboot timeout is larger than 65535, force it to 655= 35."); - reboot_timeout =3D 0xffff; + if (rt_val < 0 || rt_val > 0xffff) { + error_report("reboot timeout is invalid," + "it should be a value between 0 and 65535"); + exit(1); } fw_cfg_add_file(s, "etc/boot-fail-wait", g_memdup(&reboot_timeout, 4),= 4); } diff --git a/vl.c b/vl.c index be37da46f0..086127ff0b 100644 --- a/vl.c +++ b/vl.c @@ -339,7 +339,7 @@ static QemuOptsList qemu_boot_opts =3D { .type =3D QEMU_OPT_NUMBER, }, { .name =3D "reboot-timeout", - .type =3D QEMU_OPT_STRING, + .type =3D QEMU_OPT_NUMBER, }, { .name =3D "strict", .type =3D QEMU_OPT_BOOL, --=20 2.17.1