X-Git-Url: http://drtracing.org/?a=blobdiff_plain;f=lib%2Fvsprintf.c;h=4365df31a1d52122cd670d5ad2fe321fc887337f;hb=29cf519ee086686e5f0fc91cbb2d601dd1190f9c;hp=1d659d7bb0f8ed595156f9863f773c476fe68d23;hpb=22e95ac87d62bdc65b8a694a23cd4a364689b013;p=deliverable%2Flinux.git diff --git a/lib/vsprintf.c b/lib/vsprintf.c index 1d659d7bb0f8..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: @@ -898,7 +900,7 @@ char *pointer(const char *fmt, char *buf, char *end, void *ptr, case 'U': return uuid_string(buf, end, ptr, spec, fmt); case 'V': - return buf + vsnprintf(buf, end - buf, + return buf + vsnprintf(buf, end > buf ? end - buf : 0, ((struct va_format *)ptr)->fmt, *(((struct va_format *)ptr)->va)); case 'K':