diff --git a/src/box/tuple.cc b/src/box/tuple.cc
index ce85c7850df3c1c89cfaf8a9588089226ca49dda..ee56448f957b2e19064b261d45cc39b243ce7e35 100644
--- a/src/box/tuple.cc
+++ b/src/box/tuple.cc
@@ -374,14 +374,24 @@ tuple_update(struct tuple_format *format,
 	return new_tuple;
 }
 
+static inline void
+tuple_verify_data(const char **begin, const char *end, uint32_t field_count)
+{
+	while (*begin < end && field_count-- > 0) {
+		size_t len = load_varint32(begin);
+		*begin += len;
+	}
+	if (field_count > 0 || *begin != end)
+		tnt_raise(IllegalParams, "during verifying tuple: incorrect tuple format");
+}
+
 struct tuple *
 tuple_new(struct tuple_format *format, uint32_t field_count,
 	  const char **data, const char *end)
 {
 	size_t tuple_len = end - *data;
 
-	if (tuple_len != tuple_range_size(data, end, field_count))
-		tnt_raise(IllegalParams, "tuple_new(): incorrect tuple format");
+	tuple_verify_data(data, end, field_count);
 
 	struct tuple *new_tuple = tuple_alloc(format, tuple_len);
 	new_tuple->field_count = field_count;
diff --git a/src/box/tuple.h b/src/box/tuple.h
index f317bfcc666fc0fc5b6cc7922204826556148561..0d298a7597d7387614b67ce38a490ab10dc80c8f 100644
--- a/src/box/tuple.h
+++ b/src/box/tuple.h
@@ -306,17 +306,6 @@ static inline size_t tuple_len(struct tuple *tuple)
 		sizeof(tuple->field_count);
 }
 
-static inline size_t
-tuple_range_size(const char **begin, const char *end, uint32_t count)
-{
-	const char *start = *begin;
-	while (*begin < end && count-- > 0) {
-		size_t len = load_varint32(begin);
-		*begin += len;
-	}
-	return *begin - start;
-}
-
 void tuple_free(struct tuple *tuple);
 
 /**
diff --git a/test/box/lua.result b/test/box/lua.result
index 67f9e68bc5c7191d02c53109bff6fd99e8a60b35..738f72ec21f86972fe9bd00298554114d94cc763 100644
--- a/test/box/lua.result
+++ b/test/box/lua.result
@@ -237,6 +237,10 @@ lua function f1() return f1 end
 ...
 call f1()
 An error occurred: ER_PROC_RET, 'Return type 'function' is not supported in the binary protocol'
+lua box.process(13, box.pack('iiippp', 0, 0, 99999, 99999, 'wrong', 'tuple'))
+---
+error: 'Illegal parameters, during verifying tuple: incorrect tuple format'
+...
 insert into t0 values (1, 'test box delete')
 Insert OK, 1 row affected
 call box.delete('0', '���')
diff --git a/test/box/lua.test b/test/box/lua.test
index df33d12b8e9be4ec4987b854bdc960bb7260c78b..1216a89391b234ee1c6f14b74d7376b3858e0a76 100644
--- a/test/box/lua.test
+++ b/test/box/lua.test
@@ -63,6 +63,9 @@ exec sql "call f1()"
 exec admin "lua function f1() return f1 end"
 exec sql "call f1()"
 
+# Test case for gh-140, crash with wrong box.process(..) call
+exec admin "lua box.process(13, box.pack('iiippp', 0, 0, 99999, 99999, 'wrong', 'tuple'))"
+
 exec sql "insert into t0 values (1, 'test box delete')"
 exec sql "call box.delete('0', '\1\0\0\0')"
 exec sql "call box.delete('0', '\1\0\0\0')"