From 919a7ad8860d2a3e4208c6d0382cef2bc29703ca Mon Sep 17 00:00:00 2001 From: R-omk Date: Fri, 12 Jun 2020 12:17:37 +0300 Subject: [PATCH 1/2] Changed strlen to lua_strlen for producers key and value --- kafka/producer.c | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/kafka/producer.c b/kafka/producer.c index 3bb7375..1aa4bcb 100644 --- a/kafka/producer.c +++ b/kafka/producer.c @@ -334,17 +334,16 @@ lua_producer_produce(struct lua_State *L) { lua_gettable(L, -2 ); // rd_kafka will copy key so no need to worry about this cast char *key = (char *)lua_tostring(L, -1); + size_t key_len = key != NULL ? lua_strlen(L, -1) : 0; lua_pop(L, 1); - size_t key_len = key != NULL ? strlen(key) : 0; - lua_pushstring(L, "value"); lua_gettable(L, -2 ); // rd_kafka will copy value so no need to worry about this cast char *value = (char *)lua_tostring(L, -1); - lua_pop(L, 1); - size_t value_len = value != NULL ? strlen(value) : 0; + size_t value_len = value != NULL ? lua_strlen(L, -1) : 0; + lua_pop(L, 1); if (key == NULL && value == NULL) { int fail = safe_pushstring(L, "producer message must contains non nil key or value"); From 66a4192b6f3defdbe8e51e59809dc02d73aed0ee Mon Sep 17 00:00:00 2001 From: R-omk Date: Tue, 16 Jun 2020 14:38:05 +0300 Subject: [PATCH 2/2] Replace function lua_tostring with lua_tolstring. --- kafka/producer.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/kafka/producer.c b/kafka/producer.c index 1aa4bcb..f3e2cc0 100644 --- a/kafka/producer.c +++ b/kafka/producer.c @@ -332,17 +332,18 @@ lua_producer_produce(struct lua_State *L) { lua_pushstring(L, "key"); lua_gettable(L, -2 ); + size_t key_len; // rd_kafka will copy key so no need to worry about this cast - char *key = (char *)lua_tostring(L, -1); - size_t key_len = key != NULL ? lua_strlen(L, -1) : 0; + char *key = (char *)lua_tolstring(L, -1, &key_len); + lua_pop(L, 1); lua_pushstring(L, "value"); lua_gettable(L, -2 ); + size_t value_len; // rd_kafka will copy value so no need to worry about this cast - char *value = (char *)lua_tostring(L, -1); + char *value = (char *)lua_tolstring(L, -1, &value_len); - size_t value_len = value != NULL ? lua_strlen(L, -1) : 0; lua_pop(L, 1); if (key == NULL && value == NULL) {