X-Git-Url: https://git.lttng.org/?p=lttng-tools.git;a=blobdiff_plain;f=src%2Flib%2Flttng-ctl%2Ffilter%2Ffilter-visitor-generate-bytecode.c;h=98f837548f97a4afd9e40b3d50723ed27fb91cd5;hp=71da21c8a5108a8f0114aa9389c16d92bc54240a;hb=5ddb0a08c5c3ca917b025032b864d78e53c7c68a;hpb=01a204f0f7a1e2070826804c142a456af21867a0 diff --git a/src/lib/lttng-ctl/filter/filter-visitor-generate-bytecode.c b/src/lib/lttng-ctl/filter/filter-visitor-generate-bytecode.c index 71da21c8a..98f837548 100644 --- a/src/lib/lttng-ctl/filter/filter-visitor-generate-bytecode.c +++ b/src/lib/lttng-ctl/filter/filter-visitor-generate-bytecode.c @@ -95,14 +95,15 @@ int32_t bytecode_reserve(struct lttng_filter_bytecode_alloc **fb, uint32_t align int32_t ret; uint32_t padding = offset_align((*fb)->b.len, align); + if ((*fb)->b.len + padding + len > LTTNG_FILTER_MAX_LEN) + return -EINVAL; + if ((*fb)->b.len + padding + len > (*fb)->alloc_len) { uint32_t new_len = max_t(uint32_t, 1U << get_count_order((*fb)->b.len + padding + len), (*fb)->alloc_len << 1); uint32_t old_len = (*fb)->alloc_len; - if (new_len > 0xFFFF) - return -EINVAL; *fb = realloc(*fb, sizeof(struct lttng_filter_bytecode_alloc) + new_len); if (!*fb) return -ENOMEM;