mirror of
https://github.com/openvswitch/ovs
synced 2025-08-22 01:51:26 +00:00
ovsdb: Require database, table, column names to be valid identifiers.
Database, table, and column names have always been required by the OVSDB specification to be identifiers (e.g. valid C identifiers), but this has never been enforced. This commit adds enforcement and fixes one instance of an invalid column name in the vswitch schema.
This commit is contained in:
parent
b9edf64b05
commit
b966380b45
@ -41,8 +41,8 @@ ovsdb_parser_init(struct ovsdb_parser *parser, const struct json *json,
|
||||
}
|
||||
}
|
||||
|
||||
static bool
|
||||
is_id(const char *string)
|
||||
bool
|
||||
ovsdb_parser_is_id(const char *string)
|
||||
{
|
||||
unsigned char c;
|
||||
|
||||
@ -83,7 +83,7 @@ ovsdb_parser_member(struct ovsdb_parser *parser, const char *name,
|
||||
if ((value->type >= 0 && value->type < JSON_N_TYPES
|
||||
&& types & (1u << value->type))
|
||||
|| (types & OP_ID && value->type == JSON_STRING
|
||||
&& is_id(value->u.string)))
|
||||
&& ovsdb_parser_is_id(value->u.string)))
|
||||
{
|
||||
svec_add(&parser->used, name);
|
||||
return value;
|
||||
|
@ -71,4 +71,6 @@ struct ovsdb_error *ovsdb_parser_get_error(const struct ovsdb_parser *);
|
||||
struct ovsdb_error *ovsdb_parser_finish(struct ovsdb_parser *)
|
||||
WARN_UNUSED_RESULT;
|
||||
|
||||
bool ovsdb_parser_is_id(const char *string);
|
||||
|
||||
#endif /* ovsdb-parser.h */
|
||||
|
@ -107,6 +107,8 @@ ovsdb_schema_from_json(struct json *json, struct ovsdb_schema **schemap)
|
||||
if (node->name[0] == '_') {
|
||||
error = ovsdb_syntax_error(json, NULL, "names beginning with "
|
||||
"\"_\" are reserved");
|
||||
} else if (!ovsdb_parser_is_id(node->name)) {
|
||||
error = ovsdb_syntax_error(json, NULL, "name must be a valid id");
|
||||
} else {
|
||||
error = ovsdb_table_schema_from_json(node->data, node->name,
|
||||
&table);
|
||||
|
@ -111,6 +111,8 @@ ovsdb_table_schema_from_json(const struct json *json, const char *name,
|
||||
if (node->name[0] == '_') {
|
||||
error = ovsdb_syntax_error(json, NULL, "names beginning with "
|
||||
"\"_\" are reserved");
|
||||
} else if (!ovsdb_parser_is_id(node->name)) {
|
||||
error = ovsdb_syntax_error(json, NULL, "name must be a valid id");
|
||||
} else {
|
||||
error = ovsdb_column_from_json(node->data, node->name, &column);
|
||||
}
|
||||
|
@ -160,6 +160,6 @@
|
||||
"certificate": {
|
||||
"comment": "Name of a PEM file containing a certificate, signed by the certificate authority (CA) used by the controller and manager, that certifies the switch's private key, identifying a trustworthy switch.",
|
||||
"type": "string"},
|
||||
"ca-cert": {
|
||||
"ca_cert": {
|
||||
"comment": "Name of a PEM file containing the CA certificate used to verify that the switch is connected to a trustworthy controller.",
|
||||
"type": "string"}}}}}
|
||||
|
Loading…
x
Reference in New Issue
Block a user