diff --git a/qemu-char.c b/qemu-char.c
index b13f8d4..a8a92f5 100644
--- a/qemu-char.c
+++ b/qemu-char.c
@@ -2314,7 +2314,7 @@ QemuOpts *qemu_chr_parse_compat(const char *label, const char *filename)
         qemu_opt_set(opts, "backend", "udp");
         if (sscanf(p, "%64[^:]:%32[^@,]%n", host, port, &pos) < 2) {
             host[0] = 0;
-            if (sscanf(p, ":%32[^,]%n", port, &pos) < 1) {
+            if (sscanf(p, ":%32[^@,]%n", port, &pos) < 1) {
                 fprintf(stderr, "udp #1\n");
                 goto fail;
             }
