From 71eb46fbd4cca22e069938f68aac93d084d63efb Mon Sep 17 00:00:00 2001 From: Alexandr <a.lyapunov@corp.mail.ru> Date: Thu, 6 Mar 2014 19:54:24 +0400 Subject: [PATCH] fixed gh-140 in first approximation --- src/box/tuple.cc | 5 ++++- src/box/tuple.h | 4 ++-- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/src/box/tuple.cc b/src/box/tuple.cc index ce85c7850d..793ec47863 100644 --- a/src/box/tuple.cc +++ b/src/box/tuple.cc @@ -380,7 +380,10 @@ tuple_new(struct tuple_format *format, uint32_t field_count, { size_t tuple_len = end - *data; - if (tuple_len != tuple_range_size(data, end, field_count)) + uint32_t test_field_count = field_count; + if (tuple_len != tuple_range_size(data, end, &test_field_count)) + tnt_raise(IllegalParams, "tuple_new(): incorrect tuple format"); + if (test_field_count > 0) tnt_raise(IllegalParams, "tuple_new(): incorrect tuple format"); struct tuple *new_tuple = tuple_alloc(format, tuple_len); diff --git a/src/box/tuple.h b/src/box/tuple.h index f317bfcc66..591f5dcb8e 100644 --- a/src/box/tuple.h +++ b/src/box/tuple.h @@ -307,10 +307,10 @@ static inline size_t tuple_len(struct tuple *tuple) } static inline size_t -tuple_range_size(const char **begin, const char *end, uint32_t count) +tuple_range_size(const char **begin, const char *end, uint32_t *count) { const char *start = *begin; - while (*begin < end && count-- > 0) { + while (*begin < end && (*count)-- > 0) { size_t len = load_varint32(begin); *begin += len; } -- GitLab