Message ID | 20190627152502.174918-1-gthelen@google.com (mailing list archive) |
---|---|
State | Accepted |
Commit | f8d45ca8cd97cdbefba4a513fbd814efe6a645af |
Headers | show |
Series | trace-cmd: always initialize write_record() len | expand |
On Thu, 27 Jun 2019 08:25:02 -0700 Greg Thelen <gthelen@google.com> wrote: Hi Greg, > write_record() uses an uninitializedd 'len' when record->size is 0. I'm > not sure how likely this case is. Hmm, yeah, I guess it can be zero, as it's the data size, not the record true size. If we had a zero size data record, I guess it would still exist. > > To be safe and silence compiler warning, unconditionally initialize len. Looks good to me. I'll add it to the queue. Thanks! -- Steve > > Signed-off-by: Greg Thelen <gthelen@google.com> > --- > tracecmd/trace-split.c | 10 +++------- > 1 file changed, 3 insertions(+), 7 deletions(-) > > diff --git a/tracecmd/trace-split.c b/tracecmd/trace-split.c > index d27b3c65badc..6c8a774e13d0 100644 > --- a/tracecmd/trace-split.c > +++ b/tracecmd/trace-split.c > @@ -80,7 +80,7 @@ static int write_record(struct tracecmd_input *handle, > unsigned long long diff; > struct tep_handle *pevent; > void *page; > - int len; > + int len = 0; > char *ptr; > int index = 0; > int time; > @@ -106,12 +106,8 @@ static int write_record(struct tracecmd_input *handle, > return 0; > } > > - if (record->size) { > - if (record->size < 28 * 4) > - len = record->size / 4; > - else > - len = 0; > - } > + if (record->size && (record->size < 28 * 4)) > + len = record->size / 4; > > time = (unsigned)diff; > time = create_type_len(pevent, time, len);
diff --git a/tracecmd/trace-split.c b/tracecmd/trace-split.c index d27b3c65badc..6c8a774e13d0 100644 --- a/tracecmd/trace-split.c +++ b/tracecmd/trace-split.c @@ -80,7 +80,7 @@ static int write_record(struct tracecmd_input *handle, unsigned long long diff; struct tep_handle *pevent; void *page; - int len; + int len = 0; char *ptr; int index = 0; int time; @@ -106,12 +106,8 @@ static int write_record(struct tracecmd_input *handle, return 0; } - if (record->size) { - if (record->size < 28 * 4) - len = record->size / 4; - else - len = 0; - } + if (record->size && (record->size < 28 * 4)) + len = record->size / 4; time = (unsigned)diff; time = create_type_len(pevent, time, len);
write_record() uses an uninitializedd 'len' when record->size is 0. I'm not sure how likely this case is. To be safe and silence compiler warning, unconditionally initialize len. Signed-off-by: Greg Thelen <gthelen@google.com> --- tracecmd/trace-split.c | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-)