Skip to content

Commit b2f40f9

Browse files
committed
Range check for response.field argument changed
1 parent e586bfe commit b2f40f9

File tree

1 file changed

+9
-3
lines changed

1 file changed

+9
-3
lines changed

src/tarantool/response.py

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -24,17 +24,23 @@ def __new__(cls, value):
2424

2525
if isinstance(value, unicode):
2626
return super(field, cls).__new__(cls, value.encode("utf-8", "replace"))
27+
2728
if sys.version_info.major < 3 and isinstance(value, str):
2829
return super(field, cls).__new__(cls, value)
30+
2931
if isinstance(value, (bytearray, bytes)):
3032
return super(field, cls).__new__(cls, value)
31-
if isinstance(value, int):
32-
if value <= 0xFFFFFFFF:
33+
34+
if isinstance(value, (int, long)):
35+
if 0 <= value <= 0xFFFFFFFF:
3336
# 32 bit integer
3437
return super(field, cls).__new__(cls, struct_L.pack(value))
35-
else:
38+
elif 0xFFFFFFFF < value <= 0xFFFFFFFFFFFFFFFF:
3639
# 64 bit integer
3740
return super(field, cls).__new__(cls, struct_Q.pack(value))
41+
else:
42+
raise ValueError("Integer argument out of range")
43+
3844
# NOTE: It is posible to implement float
3945
raise TypeError("Unsupported argument type '%s'"%(type(value).__name__))
4046

0 commit comments

Comments
 (0)