Acked-by: Ethan Jackson <et...@nicira.com>
On Thu, Jan 24, 2013 at 2:44 PM, Ben Pfaff <b...@nicira.com> wrote: > Two of the users of vlog_set_levels_from_string() in the tests could have > silently failed, if their arguments were invalid. This avoids that problem > (and a memory leak). > > Found by Coverity. > > Signed-off-by: Ben Pfaff <b...@nicira.com> > --- > lib/vlog.c | 10 ++++++++++ > lib/vlog.h | 5 +++-- > tests/test-odp.c | 6 +++--- > 3 files changed, 16 insertions(+), 5 deletions(-) > > diff --git a/lib/vlog.c b/lib/vlog.c > index 7867b07..8bc9938 100644 > --- a/lib/vlog.c > +++ b/lib/vlog.c > @@ -431,6 +431,16 @@ exit: > return msg; > } > > +/* Set debugging levels. Abort with an error message if 's' is invalid. */ > +void > +vlog_set_levels_from_string_assert(const char *s) > +{ > + char *error = vlog_set_levels_from_string(s); > + if (error) { > + ovs_fatal(0, "%s", error); > + } > +} > + > /* If 'arg' is null, configure maximum verbosity. Otherwise, sets > * configuration according to 'arg' (see vlog_set_levels_from_string()). */ > void > diff --git a/lib/vlog.h b/lib/vlog.h > index 2595772..ab746c8 100644 > --- a/lib/vlog.h > +++ b/lib/vlog.h > @@ -1,5 +1,5 @@ > /* > - * Copyright (c) 2008, 2009, 2010, 2011, 2012 Nicira, Inc. > + * Copyright (c) 2008, 2009, 2010, 2011, 2012, 2013 Nicira, Inc. > * > * Licensed under the Apache License, Version 2.0 (the "License"); > * you may not use this file except in compliance with the License. > @@ -114,7 +114,8 @@ struct vlog_rate_limit { > enum vlog_level vlog_get_level(const struct vlog_module *, enum > vlog_facility); > void vlog_set_levels(struct vlog_module *, > enum vlog_facility, enum vlog_level); > -char *vlog_set_levels_from_string(const char *); > +char *vlog_set_levels_from_string(const char *) WARN_UNUSED_RESULT; > +void vlog_set_levels_from_string_assert(const char *); > char *vlog_get_levels(void); > bool vlog_is_enabled(const struct vlog_module *, enum vlog_level); > bool vlog_should_drop(const struct vlog_module *, enum vlog_level, > diff --git a/tests/test-odp.c b/tests/test-odp.c > index 5ed31a9..268a105 100644 > --- a/tests/test-odp.c > +++ b/tests/test-odp.c > @@ -1,5 +1,5 @@ > /* > - * Copyright (c) 2011, 2012 Nicira, Inc. > + * Copyright (c) 2011, 2012, 2013 Nicira, Inc. > * > * Licensed under the Apache License, Version 2.0 (the "License"); > * you may not use this file except in compliance with the License. > @@ -32,7 +32,7 @@ parse_keys(void) > struct ds in; > > ds_init(&in); > - vlog_set_levels_from_string("odp_util:console:dbg"); > + vlog_set_levels_from_string_assert("odp_util:console:dbg"); > while (!ds_get_test_line(&in, stdin)) { > enum odp_key_fitness fitness; > struct ofpbuf odp_key; > @@ -98,7 +98,7 @@ parse_actions(void) > struct ds in; > > ds_init(&in); > - vlog_set_levels_from_string("odp_util:console:dbg"); > + vlog_set_levels_from_string_assert("odp_util:console:dbg"); > while (!ds_get_test_line(&in, stdin)) { > struct ofpbuf odp_actions; > struct ds out; > -- > 1.7.2.5 > > _______________________________________________ > dev mailing list > dev@openvswitch.org > http://openvswitch.org/mailman/listinfo/dev _______________________________________________ dev mailing list dev@openvswitch.org http://openvswitch.org/mailman/listinfo/dev