diff options
author | Steven Rostedt (Red Hat) <rostedt@goodmis.org> | 2015-09-14 13:56:05 -0400 |
---|---|---|
committer | Steven Rostedt <rostedt@goodmis.org> | 2016-03-21 18:05:48 -0400 |
commit | d4321519aec1d6aba5edd5582c21903132990b3d (patch) | |
tree | cf777cd1c4721ca00c80906921b3ee474f55e196 | |
parent | 8232b403ffd064fc100d5723c16069cda4ca49e4 (diff) | |
download | trace-cmd-d4321519aec1d6aba5edd5582c21903132990b3d.tar.gz |
trace-cmd: Replace bufcpy() with msgcpy() and optcpy()
The bufcpy() wrapper to memcpy() is not very useful except that it may save
on a typecast.
Create a msgcpy() and optcpy() to use instead that is type safe and also
allows for checking of memory size overflows in the future.
Signed-off-by: Steven Rostedt <rostedt@goodmis.org>
-rw-r--r-- | trace-msg.c | 19 |
1 files changed, 13 insertions, 6 deletions
diff --git a/trace-msg.c b/trace-msg.c index 0c95327e..373f3746 100644 --- a/trace-msg.c +++ b/trace-msg.c @@ -154,9 +154,16 @@ static int tracecmd_msg_alloc(u32 cmd, u32 len, struct tracecmd_msg **msg) return 0; } -static void bufcpy(void *dest, u32 offset, const void *buf, u32 buflen) +static void msgcpy(struct tracecmd_msg *msg, u32 offset, + const void *buf, u32 buflen) { - memcpy(dest+offset, buf, buflen); + memcpy(((void *)msg)+offset, buf, buflen); +} + +static void optcpy(struct tracecmd_msg_opt *opt, u32 offset, + const void *buf, u32 buflen) +{ + memcpy(((void *)opt)+offset, buf, buflen); } enum msg_opt_command { @@ -184,10 +191,10 @@ static int add_option_to_tinit(u32 cmd, const char *buf, opt->str.size = htonl(buflen); if (buf) - bufcpy(opt, TRACECMD_OPT_MIN_LEN, buf, buflen); + optcpy(opt, TRACECMD_OPT_MIN_LEN, buf, buflen); /* add option to msg */ - bufcpy(msg, offset, opt, ntohl(opt->size)); + msgcpy(msg, offset, opt, ntohl(opt->size)); free(opt); return len; @@ -240,7 +247,7 @@ static int make_rinit(struct tracecmd_msg *msg) /* + rrqports->cpus or rrqports->port_array[i] */ offset += sizeof(be32); port = htonl(port_array[i]); - bufcpy(msg, offset, &port, sizeof(be32) * cpu_count); + msgcpy(msg, offset, &port, sizeof(be32) * cpu_count); } return 0; @@ -590,7 +597,7 @@ static void make_meta(const char *buf, int buflen, struct tracecmd_msg *msg) int offset = offsetof(struct tracecmd_msg, data.meta.str.buf); msg->data.meta.str.size = htonl(buflen); - bufcpy(msg, offset, buf, buflen); + msgcpy(msg, offset, buf, buflen); } int tracecmd_msg_metadata_send(int fd, const char *buf, int size) |