summaryrefslogtreecommitdiffstats
path: root/py/nftables.py
diff options
context:
space:
mode:
authorEric Garver <eric@garver.life>2019-05-10 08:29:47 -0400
committerPablo Neira Ayuso <pablo@netfilter.org>2019-05-12 20:22:36 +0200
commit47ffae232aeaadca37293861d52a11f907d6b768 (patch)
tree010b09b01bc59c030ace343a032999961821f305 /py/nftables.py
parentd3869cae9d6232b9f3fa720e5516ece95fdbe73e (diff)
py: fix missing decode/encode of strings
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@garver.life> Signed-off-by: Pablo Neira Ayuso <pablo@netfilter.org>
Diffstat (limited to 'py/nftables.py')
-rw-r--r--py/nftables.py7
1 files changed, 7 insertions, 0 deletions
diff --git a/py/nftables.py b/py/nftables.py
index f0716357..33cd2dfd 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)