Fixing crash during IPv6 text address generation.

When the textual representation of an IPv6 nxt_sockaddr_t was being
generated, a crash would occur if the address had a full IPv6 form:

f607:7403:1e4b:6c66:33b2:843f:2517:da27

This was caused by a variable that tracks the location of a
collapsed group ("::") that was not set to a sane default.  When
the address was generated, a group would be inserted when
it was not necessary, thus causing an overflow.

This closes #481 issue on GitHub.
This commit is contained in:
Oisin Canty 2021-07-02 10:55:13 +00:00
parent 54bf3e1912
commit 7d2bc04e39
2 changed files with 9 additions and 2 deletions

View file

@ -45,6 +45,13 @@ process stopped or crashed.
</para>
</change>
<change type="bugfix">
<para>
the controller or router process could crash if the configuration contained
a full-form IPv6 in a listener address.
</para>
</change>
</changes>

View file

@ -525,9 +525,9 @@ nxt_inet6_ntop(u_char *addr, u_char *buf, u_char *end)
return buf;
}
zero_start = 8;
zero_start = 16;
zero_groups = 0;
last_zero_start = 8;
last_zero_start = 16;
last_zero_groups = 0;
for (i = 0; i < 16; i += 2) {