mirror of
https://git.proxmox.com/git/mirror_frr
synced 2025-08-16 08:32:45 +00:00
lib: add zlog_sanitize function
Signed-off-by: Christian Franke <chris@opensourcerouting.org>
This commit is contained in:
parent
e4e41e3277
commit
1f806fc2c8
30
lib/log.c
30
lib/log.c
@ -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;
|
||||||
|
}
|
||||||
|
@ -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
|
||||||
|
Loading…
Reference in New Issue
Block a user