[{"id":1766435,"web_url":"http://patchwork.ozlabs.org/comment/1766435/","msgid":"<20170911174200.GF2150@work-vm>","list_archive_url":null,"date":"2017-09-11T17:42:01","subject":"Re: [Qemu-devel] [PATCH v7 30/38] qtest: Avoid passing raw strings\n\tthrough hmp()","submitter":{"id":48102,"url":"http://patchwork.ozlabs.org/api/people/48102/","name":"Dr. David Alan Gilbert","email":"dgilbert@redhat.com"},"content":"* Eric Blake (eblake@redhat.com) wrote:\n> hmp() passes its string argument through the sprintf() family;\n> with a proper attribute, gcc -Wformat warns us when we do something\n> dangerous like passing a non-constant format string.  Fortunately,\n> all our strings were safe, but checking whether the string can\n> contain an unintended % is easy to avoid and therefore worth doing.\n> \n> Signed-off-by: Eric Blake <eblake@redhat.com>\n> \n\nReviewed-by: Dr. David Alan Gilbert <dgilbert@redhat.com>\n\n> ---\n> v7: add GCC_FMT_ATTR here, drop R-b\n> ---\n>  tests/libqtest.h | 8 ++++----\n>  tests/test-hmp.c | 4 ++--\n>  2 files changed, 6 insertions(+), 6 deletions(-)\n> \n> diff --git a/tests/libqtest.h b/tests/libqtest.h\n> index 2a21bf4605..5651b77d2f 100644\n> --- a/tests/libqtest.h\n> +++ b/tests/libqtest.h\n> @@ -153,14 +153,14 @@ QDict *qtest_qmp_eventwait_ref(QTestState *s, const char *event);\n>  /**\n>   * qtest_hmp:\n>   * @s: #QTestState instance to operate on.\n> - * @fmt...: HMP command to send to QEMU\n> + * @fmt...: HMP command to send to QEMU, formats arguments like sprintf().\n>   *\n>   * Send HMP command to QEMU via QMP's human-monitor-command.\n>   * QMP events are discarded.\n>   *\n>   * Returns: the command's output.  The caller should g_free() it.\n>   */\n> -char *qtest_hmp(QTestState *s, const char *fmt, ...);\n> +char *qtest_hmp(QTestState *s, const char *fmt, ...) GCC_FMT_ATTR(2, 3);\n> \n>  /**\n>   * qtest_hmpv:\n> @@ -585,13 +585,13 @@ static inline QDict *qmp_eventwait_ref(const char *event)\n> \n>  /**\n>   * hmp:\n> - * @fmt...: HMP command to send to QEMU\n> + * @fmt...: HMP command to send to QEMU, formats arguments like sprintf().\n>   *\n>   * Send HMP command to QEMU via QMP's human-monitor-command.\n>   *\n>   * Returns: the command's output.  The caller should g_free() it.\n>   */\n> -char *hmp(const char *fmt, ...);\n> +char *hmp(const char *fmt, ...) GCC_FMT_ATTR(1, 2);\n> \n>  /**\n>   * get_irq:\n> diff --git a/tests/test-hmp.c b/tests/test-hmp.c\n> index 7ff47eda13..b3102daea1 100644\n> --- a/tests/test-hmp.c\n> +++ b/tests/test-hmp.c\n> @@ -80,7 +80,7 @@ static void test_commands(void)\n>          if (verbose) {\n>              fprintf(stderr, \"\\t%s\\n\", hmp_cmds[i]);\n>          }\n> -        response = hmp(hmp_cmds[i]);\n> +        response = hmp(\"%s\", hmp_cmds[i]);\n>          g_free(response);\n>      }\n> \n> @@ -103,7 +103,7 @@ static void test_info_commands(void)\n>          if (verbose) {\n>              fprintf(stderr, \"\\t%s\\n\", info);\n>          }\n> -        resp = hmp(info);\n> +        resp = hmp(\"%s\", info);\n>          g_free(resp);\n>          /* And move forward to the next line */\n>          info = strchr(endp + 1, '\\n');\n> -- \n> 2.13.5\n> \n--\nDr. David Alan Gilbert / dgilbert@redhat.com / Manchester, UK","headers":{"Return-Path":"<qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org>","X-Original-To":"incoming@patchwork.ozlabs.org","Delivered-To":"patchwork-incoming@bilbo.ozlabs.org","Authentication-Results":["ozlabs.org;\n\tspf=pass (mailfrom) smtp.mailfrom=nongnu.org\n\t(client-ip=2001:4830:134:3::11; helo=lists.gnu.org;\n\tenvelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org;\n\treceiver=<UNKNOWN>)","ext-mx02.extmail.prod.ext.phx2.redhat.com;\n\tdmarc=none (p=none dis=none) header.from=redhat.com","ext-mx02.extmail.prod.ext.phx2.redhat.com;\n\tspf=fail smtp.mailfrom=dgilbert@redhat.com"],"Received":["from lists.gnu.org (lists.gnu.org [IPv6:2001:4830:134:3::11])\n\t(using TLSv1 with cipher AES256-SHA (256/256 bits))\n\t(No client certificate requested)\n\tby ozlabs.org (Postfix) with ESMTPS id 3xrbYt1RFgz9s7F\n\tfor <incoming@patchwork.ozlabs.org>;\n\tTue, 12 Sep 2017 04:10:10 +1000 (AEST)","from localhost ([::1]:59630 helo=lists.gnu.org)\n\tby lists.gnu.org with esmtp (Exim 4.71) (envelope-from\n\t<qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org>)\n\tid 1drT9s-00021c-41\n\tfor incoming@patchwork.ozlabs.org; Mon, 11 Sep 2017 14:10:08 -0400","from eggs.gnu.org ([2001:4830:134:3::10]:46513)\n\tby lists.gnu.org with esmtp (Exim 4.71)\n\t(envelope-from <dgilbert@redhat.com>) id 1drSik-0001Ld-Nd\n\tfor qemu-devel@nongnu.org; Mon, 11 Sep 2017 13:42:07 -0400","from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71)\n\t(envelope-from <dgilbert@redhat.com>) id 1drSij-0004dB-S7\n\tfor qemu-devel@nongnu.org; Mon, 11 Sep 2017 13:42:06 -0400","from mx1.redhat.com ([209.132.183.28]:55710)\n\tby eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32)\n\t(Exim 4.71) (envelope-from <dgilbert@redhat.com>) id 1drSij-0004cj-In\n\tfor qemu-devel@nongnu.org; Mon, 11 Sep 2017 13:42:05 -0400","from smtp.corp.redhat.com\n\t(int-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.12])\n\t(using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits))\n\t(No client certificate requested)\n\tby mx1.redhat.com (Postfix) with ESMTPS id 9FA321A2276\n\tfor <qemu-devel@nongnu.org>; Mon, 11 Sep 2017 17:42:04 +0000 (UTC)","from work-vm (ovpn-117-187.ams2.redhat.com [10.36.117.187])\n\tby smtp.corp.redhat.com (Postfix) with ESMTPS id 705F15C2E6;\n\tMon, 11 Sep 2017 17:42:03 +0000 (UTC)"],"DMARC-Filter":"OpenDMARC Filter v1.3.2 mx1.redhat.com 9FA321A2276","Date":"Mon, 11 Sep 2017 18:42:01 +0100","From":"\"Dr. David Alan Gilbert\" <dgilbert@redhat.com>","To":"Eric Blake <eblake@redhat.com>","Message-ID":"<20170911174200.GF2150@work-vm>","References":"<20170911172022.4738-1-eblake@redhat.com>\n\t<20170911172022.4738-31-eblake@redhat.com>","MIME-Version":"1.0","Content-Type":"text/plain; charset=us-ascii","Content-Disposition":"inline","In-Reply-To":"<20170911172022.4738-31-eblake@redhat.com>","User-Agent":"Mutt/1.8.3 (2017-05-23)","X-Scanned-By":"MIMEDefang 2.79 on 10.5.11.12","X-Greylist":"Sender IP whitelisted, not delayed by milter-greylist-4.5.16\n\t(mx1.redhat.com [10.5.110.26]);\n\tMon, 11 Sep 2017 17:42:04 +0000 (UTC)","X-detected-operating-system":"by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic]\n\t[fuzzy]","X-Received-From":"209.132.183.28","Subject":"Re: [Qemu-devel] [PATCH v7 30/38] qtest: Avoid passing raw strings\n\tthrough hmp()","X-BeenThere":"qemu-devel@nongnu.org","X-Mailman-Version":"2.1.21","Precedence":"list","List-Id":"<qemu-devel.nongnu.org>","List-Unsubscribe":"<https://lists.nongnu.org/mailman/options/qemu-devel>,\n\t<mailto:qemu-devel-request@nongnu.org?subject=unsubscribe>","List-Archive":"<http://lists.nongnu.org/archive/html/qemu-devel/>","List-Post":"<mailto:qemu-devel@nongnu.org>","List-Help":"<mailto:qemu-devel-request@nongnu.org?subject=help>","List-Subscribe":"<https://lists.nongnu.org/mailman/listinfo/qemu-devel>,\n\t<mailto:qemu-devel-request@nongnu.org?subject=subscribe>","Cc":"pbonzini@redhat.com, thuth@redhat.com, qemu-devel@nongnu.org,\n\tarmbru@redhat.com","Errors-To":"qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org","Sender":"\"Qemu-devel\"\n\t<qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org>"}},{"id":1766864,"web_url":"http://patchwork.ozlabs.org/comment/1766864/","msgid":"<5bef89f3-6b33-ddf4-983c-ef007800b31f@redhat.com>","list_archive_url":null,"date":"2017-09-12T10:40:58","subject":"Re: [Qemu-devel] [PATCH v7 30/38] qtest: Avoid passing raw strings\n\tthrough hmp()","submitter":{"id":66152,"url":"http://patchwork.ozlabs.org/api/people/66152/","name":"Thomas Huth","email":"thuth@redhat.com"},"content":"On 11.09.2017 19:20, Eric Blake wrote:\n> hmp() passes its string argument through the sprintf() family;\n> with a proper attribute, gcc -Wformat warns us when we do something\n> dangerous like passing a non-constant format string.  Fortunately,\n> all our strings were safe, but checking whether the string can\n> contain an unintended % is easy to avoid and therefore worth doing.\n> \n> Signed-off-by: Eric Blake <eblake@redhat.com>\n> \n> ---\n> v7: add GCC_FMT_ATTR here, drop R-b\n> ---\n>  tests/libqtest.h | 8 ++++----\n>  tests/test-hmp.c | 4 ++--\n>  2 files changed, 6 insertions(+), 6 deletions(-)\n\nReviewed-by: Thomas Huth <thuth@redhat.com>","headers":{"Return-Path":"<qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org>","X-Original-To":"incoming@patchwork.ozlabs.org","Delivered-To":"patchwork-incoming@bilbo.ozlabs.org","Authentication-Results":["ozlabs.org;\n\tspf=pass (mailfrom) smtp.mailfrom=nongnu.org\n\t(client-ip=2001:4830:134:3::11; helo=lists.gnu.org;\n\tenvelope-from=qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org;\n\treceiver=<UNKNOWN>)","ext-mx04.extmail.prod.ext.phx2.redhat.com;\n\tdmarc=none (p=none dis=none) header.from=redhat.com","ext-mx04.extmail.prod.ext.phx2.redhat.com;\n\tspf=fail smtp.mailfrom=thuth@redhat.com"],"Received":["from lists.gnu.org (lists.gnu.org [IPv6:2001:4830:134:3::11])\n\t(using TLSv1 with cipher AES256-SHA (256/256 bits))\n\t(No client certificate requested)\n\tby ozlabs.org (Postfix) with ESMTPS id 3xs1Yz4SgSz9s7g\n\tfor <incoming@patchwork.ozlabs.org>;\n\tTue, 12 Sep 2017 20:41:43 +1000 (AEST)","from localhost ([::1]:34814 helo=lists.gnu.org)\n\tby lists.gnu.org with esmtp (Exim 4.71) (envelope-from\n\t<qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org>)\n\tid 1dridR-0001zf-Ng\n\tfor incoming@patchwork.ozlabs.org; Tue, 12 Sep 2017 06:41:41 -0400","from eggs.gnu.org ([2001:4830:134:3::10]:39970)\n\tby lists.gnu.org with esmtp (Exim 4.71)\n\t(envelope-from <thuth@redhat.com>) id 1dricu-0001xP-Um\n\tfor qemu-devel@nongnu.org; Tue, 12 Sep 2017 06:41:09 -0400","from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71)\n\t(envelope-from <thuth@redhat.com>) id 1dricp-0001YS-6L\n\tfor qemu-devel@nongnu.org; Tue, 12 Sep 2017 06:41:08 -0400","from mx1.redhat.com ([209.132.183.28]:59884)\n\tby eggs.gnu.org with esmtps (TLS1.0:DHE_RSA_AES_256_CBC_SHA1:32)\n\t(Exim 4.71) (envelope-from <thuth@redhat.com>) id 1dricp-0001XH-0M\n\tfor qemu-devel@nongnu.org; Tue, 12 Sep 2017 06:41:03 -0400","from smtp.corp.redhat.com\n\t(int-mx01.intmail.prod.int.phx2.redhat.com [10.5.11.11])\n\t(using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits))\n\t(No client certificate requested)\n\tby mx1.redhat.com (Postfix) with ESMTPS id F37379D768\n\tfor <qemu-devel@nongnu.org>; Tue, 12 Sep 2017 10:41:01 +0000 (UTC)","from [10.40.204.137] (ovpn-204-137.brq.redhat.com [10.40.204.137])\n\tby smtp.corp.redhat.com (Postfix) with ESMTPS id 486956E1E2;\n\tTue, 12 Sep 2017 10:41:00 +0000 (UTC)"],"DMARC-Filter":"OpenDMARC Filter v1.3.2 mx1.redhat.com F37379D768","To":"Eric Blake <eblake@redhat.com>, qemu-devel@nongnu.org","References":"<20170911172022.4738-1-eblake@redhat.com>\n\t<20170911172022.4738-31-eblake@redhat.com>","From":"Thomas Huth <thuth@redhat.com>","Message-ID":"<5bef89f3-6b33-ddf4-983c-ef007800b31f@redhat.com>","Date":"Tue, 12 Sep 2017 12:40:58 +0200","User-Agent":"Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101\n\tThunderbird/52.3.0","MIME-Version":"1.0","In-Reply-To":"<20170911172022.4738-31-eblake@redhat.com>","Content-Type":"text/plain; charset=utf-8","Content-Language":"en-US","Content-Transfer-Encoding":"7bit","X-Scanned-By":"MIMEDefang 2.79 on 10.5.11.11","X-Greylist":"Sender IP whitelisted, not delayed by milter-greylist-4.5.16\n\t(mx1.redhat.com [10.5.110.28]);\n\tTue, 12 Sep 2017 10:41:02 +0000 (UTC)","X-detected-operating-system":"by eggs.gnu.org: GNU/Linux 2.2.x-3.x [generic]\n\t[fuzzy]","X-Received-From":"209.132.183.28","Subject":"Re: [Qemu-devel] [PATCH v7 30/38] qtest: Avoid passing raw strings\n\tthrough hmp()","X-BeenThere":"qemu-devel@nongnu.org","X-Mailman-Version":"2.1.21","Precedence":"list","List-Id":"<qemu-devel.nongnu.org>","List-Unsubscribe":"<https://lists.nongnu.org/mailman/options/qemu-devel>,\n\t<mailto:qemu-devel-request@nongnu.org?subject=unsubscribe>","List-Archive":"<http://lists.nongnu.org/archive/html/qemu-devel/>","List-Post":"<mailto:qemu-devel@nongnu.org>","List-Help":"<mailto:qemu-devel-request@nongnu.org?subject=help>","List-Subscribe":"<https://lists.nongnu.org/mailman/listinfo/qemu-devel>,\n\t<mailto:qemu-devel-request@nongnu.org?subject=subscribe>","Cc":"pbonzini@redhat.com, armbru@redhat.com,\n\t\"Dr. David Alan Gilbert\" <dgilbert@redhat.com>","Errors-To":"qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org","Sender":"\"Qemu-devel\"\n\t<qemu-devel-bounces+incoming=patchwork.ozlabs.org@nongnu.org>"}}]