diff --git a/avro/maxavro.c b/avro/maxavro.c index 53c890775..9cf2e5aff 100644 --- a/avro/maxavro.c +++ b/avro/maxavro.c @@ -144,13 +144,20 @@ char* maxavro_read_string(MAXAVRO_FILE* file, size_t* size) if (maxavro_read_integer(file, &len)) { - key = MXS_MALLOC(len + 1); - if (key) + if (file->buffer_ptr + len < file->buffer_end) { - memcpy(key, file->buffer_ptr, len); - key[len] = '\0'; - file->buffer_ptr += len; - *size = len; + key = MXS_MALLOC(len + 1); + if (key) + { + memcpy(key, file->buffer_ptr, len); + key[len] = '\0'; + file->buffer_ptr += len; + *size = len; + } + else + { + file->last_error = MAXAVRO_ERR_MEMORY; + } } else { diff --git a/server/modules/routing/avrorouter/rpl.cc b/server/modules/routing/avrorouter/rpl.cc index 108088b79..b73922919 100644 --- a/server/modules/routing/avrorouter/rpl.cc +++ b/server/modules/routing/avrorouter/rpl.cc @@ -1120,7 +1120,7 @@ static bool token_is_keyword(const char* tok, int len) { for (int i = 0; keywords[i]; i++) { - if (strncasecmp(keywords[i], tok, len) == 0) + if (strncasecmp(keywords[i], tok, len) == 0 && strlen(keywords[i]) == len) { return true; }