diff options
author | Joe Perches <joe@perches.com> | 2011-06-09 20:23:37 +0200 |
---|---|---|
committer | Linus Torvalds <torvalds@linux-foundation.org> | 2011-06-09 21:51:15 +0200 |
commit | 29cf519ee086686e5f0fc91cbb2d601dd1190f9c (patch) | |
tree | 25087a60cf10c246548c5b1c6e915e49b2dddc43 | |
parent | exec: delay address limit change until point of no return (diff) | |
download | linux-29cf519ee086686e5f0fc91cbb2d601dd1190f9c.tar.xz linux-29cf519ee086686e5f0fc91cbb2d601dd1190f9c.zip |
vsprintf: Update %pI6c to not compress a single 0
RFC 5952 (http://tools.ietf.org/html/rfc5952) mandates that 2 or more
consecutive 0's are required before using :: compression.
Update ip6_compressed_string to match the RFC and update the http
reference as well.
Signed-off-by: Joe Perches <joe@perches.com>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
-rw-r--r-- | lib/vsprintf.c | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/lib/vsprintf.c b/lib/vsprintf.c index c11205688fb4..4365df31a1d5 100644 --- a/lib/vsprintf.c +++ b/lib/vsprintf.c @@ -666,6 +666,8 @@ char *ip6_compressed_string(char *p, const char *addr) colonpos = i; } } + if (longest == 1) /* don't compress a single 0 */ + colonpos = -1; /* emit address */ for (i = 0; i < range; i++) { @@ -826,7 +828,7 @@ int kptr_restrict __read_mostly; * IPv4 uses dot-separated decimal with leading 0's (010.123.045.006) * - '[Ii]4[hnbl]' IPv4 addresses in host, network, big or little endian order * - 'I6c' for IPv6 addresses printed as specified by - * http://tools.ietf.org/html/draft-ietf-6man-text-addr-representation-00 + * http://tools.ietf.org/html/rfc5952 * - 'U' For a 16 byte UUID/GUID, it prints the UUID/GUID in the form * "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx" * Options for %pU are: |