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