From 827e88dfbfce5f991d7c00f6976bf7bc5d7c1ba7 Mon Sep 17 00:00:00 2001 From: Ashwini Mhatre Date: Thu, 20 Jul 2023 11:46:34 +0530 Subject: [PATCH] Bugfix ip4 hex (#292) * Fix bug in ipv4_hex filter. * Fix issue in ipv4_hex * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * Update tests/integration/targets/utils_ipaddr_filter/tasks/ip4_hex.yaml Co-authored-by: Sagar Paul --------- Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com> Co-authored-by: Sagar Paul --- changelogs/fragments/Bugfix_ipv4_hex.yaml | 3 +++ plugins/filter/ip4_hex.py | 5 +++++ .../targets/utils_ipaddr_filter/tasks/ip4_hex.yaml | 10 ++++++++++ 3 files changed, 18 insertions(+) create mode 100644 changelogs/fragments/Bugfix_ipv4_hex.yaml diff --git a/changelogs/fragments/Bugfix_ipv4_hex.yaml b/changelogs/fragments/Bugfix_ipv4_hex.yaml new file mode 100644 index 0000000..bc39f68 --- /dev/null +++ b/changelogs/fragments/Bugfix_ipv4_hex.yaml @@ -0,0 +1,3 @@ +--- +bugfixes: + - Validate input for ipv4_hex(https://github.com/ansible-collections/ansible.utils/issues/281) diff --git a/plugins/filter/ip4_hex.py b/plugins/filter/ip4_hex.py index 05621f7..4c691a7 100644 --- a/plugins/filter/ip4_hex.py +++ b/plugins/filter/ip4_hex.py @@ -110,6 +110,11 @@ def _ip4_hex(*args, **kwargs): def ip4_hex(arg, delimiter=""): """Convert an IPv4 address to Hexadecimal notation""" + try: + ip = netaddr.IPAddress(arg) + except (netaddr.AddrFormatError, ValueError): + msg = "You must pass a valid IP address; {0} is invalid".format(arg) + raise AnsibleFilterError(msg) numbers = list(map(int, arg.split("."))) return "{0:02x}{sep}{1:02x}{sep}{2:02x}{sep}{3:02x}".format(*numbers, sep=delimiter) diff --git a/tests/integration/targets/utils_ipaddr_filter/tasks/ip4_hex.yaml b/tests/integration/targets/utils_ipaddr_filter/tasks/ip4_hex.yaml index 87ac5b1..697eefa 100644 --- a/tests/integration/targets/utils_ipaddr_filter/tasks/ip4_hex.yaml +++ b/tests/integration/targets/utils_ipaddr_filter/tasks/ip4_hex.yaml @@ -14,3 +14,13 @@ - name: Assert result for ip4_hex. ansible.builtin.assert: that: "{{ result1 == 'c0:a8:01:05' }}" + +- name: Ip4_hex validate input + ansible.builtin.set_fact: + result1: "{{ '555.444.333.999' | ansible.utils.ip4_hex }}" + register: output + ignore_errors: true + +- name: Assert result for ip4_hex. + ansible.builtin.assert: + that: "{{ 'You must pass a valid IP address; 555.444.333.999 is invalid' in output.msg }}"