aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSteven Rostedt (Red Hat) <rostedt@goodmis.org>2015-09-14 13:56:05 -0400
committerSteven Rostedt <rostedt@goodmis.org>2016-03-21 18:05:48 -0400
commitd4321519aec1d6aba5edd5582c21903132990b3d (patch)
treecf777cd1c4721ca00c80906921b3ee474f55e196
parent8232b403ffd064fc100d5723c16069cda4ca49e4 (diff)
downloadtrace-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.c19
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)