[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