Open
Description
when packing an ip_address() for io, the bits value is wrongly stored as a /0 instead of /32 or /128
the following will fix this:
--- /usr/lib/python3.4/site-packages/postgresql/types/io/lib.py.orig 2014-06-02 12:42:50.783337348 +0000
+++ /usr/lib/python3.4/site-packages/postgresql/types/io/lib.py 2014-06-02 12:56:30.460003975 +0000
@@ -283,7 +283,9 @@
Pack Postgres' inet/cidr data structure.
"""
family, mask, data = triple
- return bytes((fmap[family], mask or 0, 0 if mask is None else 1, len(data))) + data
+ mflag = mask and 1 or 0
+ mask = mask and mask or {4:32, 6:128}[family]
+ return bytes((fmap[family], mask, mflag, len(data))) + data
def net_unpack(data,
# Map IP version number to PGSQL src/include/utils/inet.h.
the original code stores "1.2.3.4" as "1.2.3.4/0" instead of "1.2.3.4/32". the above fix will store the correct bits value
Metadata
Metadata
Assignees
Labels
No labels