diff --git a/connector/c/tnt/tnt_iter.c b/connector/c/tnt/tnt_iter.c
index 65a6c537db0c75a5c860ea77c21a6995b7063a70..60db5828d1f74791b134f65a8798b426e5cf5d6c 100644
--- a/connector/c/tnt/tnt_iter.c
+++ b/connector/c/tnt/tnt_iter.c
@@ -53,12 +53,19 @@ static struct tnt_iter *tnt_iter_init(struct tnt_iter *i) {
 
 static int tnt_iter_field_next(struct tnt_iter *i) {
 	struct tnt_iter_field *ip = TNT_IFIELD(i);
-	/* intitializing iter to the first field */
+	/* initializing iter to the first field */
 	if (ip->fld_ptr == NULL) {
+		/* in case of insufficient data */
 		if (ip->tu->size < 4) {
 			i->status = TNT_ITER_FAIL;
 			return 0;
 		}
+		/* tuple could be empty */
+		if (ip->tu->size == 4) {
+			if (ip->tu->cardinality != 0)
+				i->status = TNT_ITER_FAIL;
+			return 0;
+		}
 		ip->fld_ptr = ip->tu->data + 4; /* skipping tuple cardinality */
 		ip->fld_index = 0;
 		ip->fld_esize = tnt_enc_read(ip->fld_ptr, &ip->fld_size);
diff --git a/test/connector_c/tt.c b/test/connector_c/tt.c
index b05e9e80091b936629336230806b75ad95310827..71c170f6901c0cad7af803bac4d5a040e4339c32 100644
--- a/test/connector_c/tt.c
+++ b/test/connector_c/tt.c
@@ -296,6 +296,20 @@ static void tt_tnt_iter3(struct tt_test *test) {
 	tnt_list_free(l);
 }
 
+/* iterator empty tuple */
+static void tt_tnt_iter4(struct tt_test *test) {
+	char buf[4];
+	memset(buf, 0, sizeof(buf));
+	struct tnt_tuple t;
+	tnt_tuple_init(&t);
+	tnt_tuple_set(&t, buf, sizeof(buf));
+	struct tnt_iter i;
+	tnt_iter(&i, &t);
+	TT_ASSERT(tnt_next(&i) == 0);
+	tnt_iter_free(&i);
+	tnt_tuple_free(&t);
+}
+
 /* marshal ping */
 static void tt_tnt_marshal_ping(struct tt_test *test) {
 	struct tnt_stream s;
@@ -1134,6 +1148,7 @@ main(int argc, char * argv[])
 	tt_test(&t, "iterator tuple", tt_tnt_iter1);
 	tt_test(&t, "iterator tuple (single field)", tt_tnt_iter11);
 	tt_test(&t, "iterator tuple (tnt_field)", tt_tnt_iter2);
+	tt_test(&t, "iterator tuple (empty)", tt_tnt_iter4);
 	tt_test(&t, "iterator list", tt_tnt_iter3);
 	/* marshaling */
 	tt_test(&t, "marshaling ping", tt_tnt_marshal_ping);