[PATCH nft v2] py: fix missing decode/encode of strings

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



When calling ffi functions, if the string is unicode we need to convert
to utf-8. Then convert back for any output we receive.

Fixes: 586ad210368b7 ("libnftables: Implement JSON parser")
Signed-off-by: Eric Garver <eric@xxxxxxxxxxx>
---
v2: allow python2 support by checking if the string is already "bytes".
python2 str uses bytes, python3 str uses unicode.
---
 py/nftables.py | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/py/nftables.py b/py/nftables.py
index f07163573f9a..33cd2dfd736d 100644
--- a/py/nftables.py
+++ b/py/nftables.py
@@ -352,9 +352,16 @@ class Nftables:
         output -- a string containing output written to stdout
         error  -- a string containing output written to stderr
         """
+        cmdline_is_unicode = False
+        if not isinstance(cmdline, bytes):
+            cmdline_is_unicode = True
+            cmdline = cmdline.encode("utf-8")
         rc = self.nft_run_cmd_from_buffer(self.__ctx, cmdline)
         output = self.nft_ctx_get_output_buffer(self.__ctx)
         error = self.nft_ctx_get_error_buffer(self.__ctx)
+        if cmdline_is_unicode:
+            output = output.decode("utf-8")
+            error = error.decode("utf-8")
 
         return (rc, output, error)
 
-- 
2.20.1




[Index of Archives]     [Netfitler Users]     [Berkeley Packet Filter]     [LARTC]     [Bugtraq]     [Yosemite Forum]

  Powered by Linux