From e01a6a0d588b97c66a64630ddc2fe33f9b052543 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Markus=20M=C3=A4kel=C3=A4?= Date: Thu, 2 Mar 2017 13:12:45 +0200 Subject: [PATCH] Fix field name parsing The fix to field name parsing didn't properly break the loop when the backtick character was detected. --- server/modules/routing/avro/avro_schema.c | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/server/modules/routing/avro/avro_schema.c b/server/modules/routing/avro/avro_schema.c index dd75e9d7d..604b18aea 100644 --- a/server/modules/routing/avro/avro_schema.c +++ b/server/modules/routing/avro/avro_schema.c @@ -451,6 +451,10 @@ static const char *extract_field_name(const char* ptr, char* dest, size_t size) while (*ptr && (isspace(*ptr) || (bt = *ptr == '`'))) { ptr++; + if (bt) + { + break; + } } if (strncasecmp(ptr, "constraint", 10) == 0 || strncasecmp(ptr, "index", 5) == 0 || @@ -483,11 +487,6 @@ static const char *extract_field_name(const char* ptr, char* dest, size_t size) /** Valid identifier */ size_t bytes = ptr - start; - if (bt) - { - bytes--; - } - memcpy(dest, start, bytes); dest[bytes] = '\0';