From 018543f3a8b620c0604e0598cab72425569b2a15 Mon Sep 17 00:00:00 2001 From: Martin Willi Date: Fri, 18 Jun 2010 09:18:27 +0200 Subject: [PATCH] Fix use of snprintf() in identification DN to ASCII conversion --- src/libstrongswan/utils/identification.c | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/src/libstrongswan/utils/identification.c b/src/libstrongswan/utils/identification.c index 3968b629b..3caeb8f0e 100644 --- a/src/libstrongswan/utils/identification.c +++ b/src/libstrongswan/utils/identification.c @@ -296,18 +296,30 @@ static void dntoa(chunk_t dn, char *buf, size_t len) { written = snprintf(buf, len,"%s=", oid_names[oid].name); } + if (written < 0 || written >= len) + { + break; + } buf += written; len -= written; chunk_printable(data, &printable, '?'); written = snprintf(buf, len, "%.*s", printable.len, printable.ptr); chunk_free(&printable); + if (written < 0 || written >= len) + { + break; + } buf += written; len -= written; if (data.ptr + data.len != dn.ptr + dn.len) { written = snprintf(buf, len, ", "); + if (written < 0 || written >= len) + { + break; + } buf += written; len -= written; }