qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH] qemu-option: Reject anti-social IDs


From: Anthony Liguori
Subject: Re: [Qemu-devel] [PATCH] qemu-option: Reject anti-social IDs
Date: Mon, 14 Jun 2010 15:57:24 -0500
User-agent: Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.1.9) Gecko/20100423 Lightning/1.0b1 Thunderbird/3.0.4

On 06/08/2010 06:54 AM, Markus Armbruster wrote:
Restrict IDs to letters, digits, '-', '.', '_', starting with a
letter.

This takes care of '/' in qdev IDs breaking qbus_find().

Signed-off-by: Markus Armbruster<address@hidden>

Applied.  Thanks.

Regards,

Anthony Liguori
---
  qemu-option.c |   20 ++++++++++++++++++++
  1 files changed, 20 insertions(+), 0 deletions(-)

diff --git a/qemu-option.c b/qemu-option.c
index acd74f9..74fb882 100644
--- a/qemu-option.c
+++ b/qemu-option.c
@@ -672,11 +672,31 @@ QemuOpts *qemu_opts_find(QemuOptsList *list, const char 
*id)
      return NULL;
  }

+static int id_wellformed(const char *id)
+{
+    int i;
+
+    if (!qemu_isalpha(id[0])) {
+        return 0;
+    }
+    for (i = 1; id[i]; i++) {
+        if (!qemu_isalnum(id[i])&&  !strchr("-._", id[i])) {
+            return 0;
+        }
+    }
+    return 1;
+}
+
  QemuOpts *qemu_opts_create(QemuOptsList *list, const char *id, int 
fail_if_exists)
  {
      QemuOpts *opts = NULL;

      if (id) {
+        if (!id_wellformed(id)) {
+            qerror_report(QERR_INVALID_PARAMETER_VALUE, "id", "an identifier");
+            error_printf_unless_qmp("Identifiers consist of letters, digits, '-', 
'.', '_', starting with a letter.\n");
+            return NULL;
+        }
          opts = qemu_opts_find(list, id);
          if (opts != NULL) {
              if (fail_if_exists) {




reply via email to

[Prev in Thread] Current Thread [Next in Thread]