diff options
author | Thomas Haller <thaller@redhat.com> | 2022-02-01 15:35:47 +0100 |
---|---|---|
committer | Thomas Haller <thaller@redhat.com> | 2022-02-01 15:42:57 +0100 |
commit | dd85cb195879301035dd74b880c75c479cfb6c86 (patch) | |
tree | bb55cea13bade6b18e2dfcebc3cd162ef86c69b4 | |
parent | 3034b99c00a5662b0499bec88ad1193235629dc7 (diff) |
dhcp: improve error message in assertion of NMDhcpOption data
We have global data NMDhcpOption that describes the DHCP meta data.
There is a consistency check with NM_MORE_ASSERTS.
Improve the error message when the meta data is inconsistent to
help finding the bug.
-rw-r--r-- | src/core/dhcp/nm-dhcp-options.c | 16 |
1 files changed, 13 insertions, 3 deletions
diff --git a/src/core/dhcp/nm-dhcp-options.c b/src/core/dhcp/nm-dhcp-options.c index ab64a67c1c..8e18156f09 100644 --- a/src/core/dhcp/nm-dhcp-options.c +++ b/src/core/dhcp/nm-dhcp-options.c @@ -247,7 +247,7 @@ _sorted_options_generate_sort(gconstpointer pa, gconstpointer pb, gpointer user_ const NMDhcpOption *const *b = pb; NM_CMP_DIRECT((*a)->option_num, (*b)->option_num); - return nm_assert_unreachable_val(0); + return 0; } static char * @@ -283,6 +283,16 @@ _ASSERT_sorted(int IS_IPv4, const NMDhcpOption *const *const sorted, int n) for (i = 0; i < n; i++) { const NMDhcpOption *opt = sorted[i]; + if (!opt || opt < options || opt >= &options[n]) { + g_error("%s:%d: _sorted_options_%c[%d] must be a valid pointer into " + "_nm_dhcp_option_dhcp%c_options, but is %p", + __FILE__, + __LINE__, + IS_IPv4 ? '4' : '6', + i, + IS_IPv4 ? '4' : '6', + opt); + } g_assert(opt); g_assert(opt >= options); g_assert(opt < &options[n]); @@ -291,7 +301,7 @@ _ASSERT_sorted(int IS_IPv4, const NMDhcpOption *const *const sorted, int n) const NMDhcpOption *opt2 = sorted[j]; if (opt == opt2) { - g_error("%s:%d: the _sorted_options_%c at [%d] (opt=%u, %s) is duplicated at " + g_error("%s:%d: _sorted_options_%c[%d] (opt=%u, %s) is duplicated at " "[%d] (SORT: %s)", __FILE__, __LINE__, @@ -308,7 +318,7 @@ _ASSERT_sorted(int IS_IPv4, const NMDhcpOption *const *const sorted, int n) const NMDhcpOption *opt2 = sorted[i - 1]; if (opt2->option_num >= opt->option_num) { - g_error("%s:%d: the _sorted_options_%c at [%d] (opt=%u, %s) should come before " + g_error("%s:%d: _sorted_options_%c[%d] (opt=%u, %s) should come before " "[%d] (opt=%u, %s) (SORT: %s)", __FILE__, __LINE__, |