[PATCH v3 3/6] lua/pickle: fix a typo

Serge Petrenko sergepetrenko at tarantool.org
Tue Aug 20 20:10:01 MSK 2019


Prior to this patch format checking was broken for 'i' (integer) and 'N'
(big-endian integer). pickle.pack() rejected negative integers with
these formats. Fix this
---
 src/lua/pickle.c       | 4 ++--
 test/app/pack.result   | 8 ++++++++
 test/app/pack.test.lua | 2 ++
 3 files changed, 12 insertions(+), 2 deletions(-)

diff --git a/src/lua/pickle.c b/src/lua/pickle.c
index e47ac11b4..65208b5b3 100644
--- a/src/lua/pickle.c
+++ b/src/lua/pickle.c
@@ -109,14 +109,14 @@ lbox_pack(struct lua_State *L)
 		case 'I':
 		case 'i':
 			/* signed and unsigned 32-bit integers */
-			if (field.type != MP_UINT && field.ival != MP_INT)
+			if (field.type != MP_UINT && field.type != MP_INT)
 				luaL_error(L, "pickle.pack: expected 32-bit int");
 
 			luaL_region_dup(L, buf, &field.ival, sizeof(uint32_t));
 			break;
 		case 'N':
 			/* signed and unsigned 32-bit big endian integers */
-			if (field.type != MP_UINT && field.ival != MP_INT)
+			if (field.type != MP_UINT && field.type != MP_INT)
 				luaL_error(L, "pickle.pack: expected 32-bit int");
 
 			field.ival = htonl(field.ival);
diff --git a/test/app/pack.result b/test/app/pack.result
index 8c1333abb..52f4be3cd 100644
--- a/test/app/pack.result
+++ b/test/app/pack.result
@@ -26,6 +26,14 @@ pickle.pack('s', 0x4d)
 ---
 - "M\0"
 ...
+pickle.pack('i', -1)
+---
+- !!binary /////w==
+...
+pickle.pack('N', -1)
+---
+- !!binary /////w==
+...
 pickle.pack('ssss', 25940, 29811, 28448, 11883)
 ---
 - Test ok.
diff --git a/test/app/pack.test.lua b/test/app/pack.test.lua
index 8f7a6a0f4..6ddd81cd4 100644
--- a/test/app/pack.test.lua
+++ b/test/app/pack.test.lua
@@ -7,6 +7,8 @@ pickle.pack('abc')
 pickle.pack('a', ' - hello')
 pickle.pack('Aa', ' - hello', ' world')
 pickle.pack('s', 0x4d)
+pickle.pack('i', -1)
+pickle.pack('N', -1)
 pickle.pack('ssss', 25940, 29811, 28448, 11883)
 pickle.pack('SSSS', 25940, 29811, 28448, 11883)
 pickle.pack('SSSSSSSS', 28493, 29550, 27680, 27497, 29541, 20512, 29285, 8556)
-- 
2.20.1 (Apple Git-117)




More information about the Tarantool-patches mailing list