lib: add zlog_sanitize function

Signed-off-by: Christian Franke <chris@opensourcerouting.org>
This commit is contained in:
David Lamparter 2017-03-02 17:33:37 +01:00 committed by Donald Sharp
parent e4e41e3277
commit 1f806fc2c8
2 changed files with 31 additions and 0 deletions

View File

@ -1151,3 +1151,33 @@ zlog_hexdump (const void *mem, unsigned int len) {
} }
zlog_debug("\n%s", buf); zlog_debug("\n%s", buf);
} }
const char *
zlog_sanitize (char *buf, size_t bufsz, const void *in, size_t inlen)
{
const char *inbuf = in;
char *pos = buf, *end = buf + bufsz;
const char *iend = inbuf + inlen;
memset (buf, 0, bufsz);
for (; inbuf < iend; inbuf++)
{
/* don't write partial escape sequence */
if (end - pos < 5)
break;
if (*inbuf == '\n')
snprintf (pos, end - pos, "\\n");
else if (*inbuf == '\r')
snprintf (pos, end - pos, "\\r");
else if (*inbuf == '\t')
snprintf (pos, end - pos, "\\t");
else if (*inbuf < ' ' || *inbuf == '"' || *inbuf >= 127)
snprintf (pos, end - pos, "\\x%02hhx", *inbuf);
else
*pos = *inbuf;
pos += strlen (pos);
}
return buf;
}

View File

@ -188,6 +188,7 @@ extern size_t quagga_timestamp(int timestamp_precision /* # subsecond digits */,
char *buf, size_t buflen); char *buf, size_t buflen);
extern void zlog_hexdump(const void *mem, unsigned int len); extern void zlog_hexdump(const void *mem, unsigned int len);
extern const char *zlog_sanitize(char *buf, size_t bufsz, const void *in, size_t inlen);
extern int extern int