mirror of
https://github.com/openvswitch/ovs
synced 2025-10-13 14:07:02 +00:00
vlog: New function vlog_set_levels_from_string_assert().
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 <blp@nicira.com> Acked-by: Ethan Jackson <ethan@nicira.com>
This commit is contained in:
10
lib/vlog.c
10
lib/vlog.c
@@ -431,6 +431,16 @@ exit:
|
|||||||
return msg;
|
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
|
/* If 'arg' is null, configure maximum verbosity. Otherwise, sets
|
||||||
* configuration according to 'arg' (see vlog_set_levels_from_string()). */
|
* configuration according to 'arg' (see vlog_set_levels_from_string()). */
|
||||||
void
|
void
|
||||||
|
@@ -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");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with 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);
|
enum vlog_level vlog_get_level(const struct vlog_module *, enum vlog_facility);
|
||||||
void vlog_set_levels(struct vlog_module *,
|
void vlog_set_levels(struct vlog_module *,
|
||||||
enum vlog_facility, enum vlog_level);
|
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);
|
char *vlog_get_levels(void);
|
||||||
bool vlog_is_enabled(const struct vlog_module *, enum vlog_level);
|
bool vlog_is_enabled(const struct vlog_module *, enum vlog_level);
|
||||||
bool vlog_should_drop(const struct vlog_module *, enum vlog_level,
|
bool vlog_should_drop(const struct vlog_module *, enum vlog_level,
|
||||||
|
@@ -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");
|
* Licensed under the Apache License, Version 2.0 (the "License");
|
||||||
* you may not use this file except in compliance with the License.
|
* you may not use this file except in compliance with the License.
|
||||||
@@ -32,7 +32,7 @@ parse_keys(void)
|
|||||||
struct ds in;
|
struct ds in;
|
||||||
|
|
||||||
ds_init(&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)) {
|
while (!ds_get_test_line(&in, stdin)) {
|
||||||
enum odp_key_fitness fitness;
|
enum odp_key_fitness fitness;
|
||||||
struct ofpbuf odp_key;
|
struct ofpbuf odp_key;
|
||||||
@@ -98,7 +98,7 @@ parse_actions(void)
|
|||||||
struct ds in;
|
struct ds in;
|
||||||
|
|
||||||
ds_init(&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)) {
|
while (!ds_get_test_line(&in, stdin)) {
|
||||||
struct ofpbuf odp_actions;
|
struct ofpbuf odp_actions;
|
||||||
struct ds out;
|
struct ds out;
|
||||||
|
Reference in New Issue
Block a user