diff options
author | Eric Garver <eric@garver.life> | 2019-05-10 08:29:47 -0400 |
---|---|---|
committer | Pablo Neira Ayuso <pablo@netfilter.org> | 2019-05-12 20:22:36 +0200 |
commit | 47ffae232aeaadca37293861d52a11f907d6b768 (patch) | |
tree | 010b09b01bc59c030ace343a032999961821f305 /py/nftables.py | |
parent | d3869cae9d6232b9f3fa720e5516ece95fdbe73e (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.py | 7 |
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) |