nm-shared-utils: relax ovs ifname check to accept any (non-space) ASCII printable char
quoting 'man ovs-vswitchd.conf.db':
"The name must be alphanumeric and must not contain forward or backward
slashes."
OVS actually accepts a wider range of chars (all printable UTF-8 chars),
NetworkManager restricts this to ASCII char as it's a safer option for
now since OVS is not well documented on this matter.
https://bugzilla.redhat.com/show_bug.cgi?id=1788432
Fixes: e7d72a14f6
('libnm-core: use different ifname validation function for OVS bridges, ports and interfaces')
This commit is contained in:
@@ -8503,21 +8503,6 @@ test_connection_ovs_ifname (gconstpointer test_data)
|
|||||||
nmtst_assert_connection_unnormalizable (con,
|
nmtst_assert_connection_unnormalizable (con,
|
||||||
NM_CONNECTION_ERROR,
|
NM_CONNECTION_ERROR,
|
||||||
NM_CONNECTION_ERROR_INVALID_PROPERTY);
|
NM_CONNECTION_ERROR_INVALID_PROPERTY);
|
||||||
|
|
||||||
/* wrong: contains non-alphanumerical char */
|
|
||||||
g_object_set (s_con,
|
|
||||||
NM_SETTING_CONNECTION_INTERFACE_NAME, "ovs-0",
|
|
||||||
NULL);
|
|
||||||
nmtst_assert_connection_unnormalizable (con,
|
|
||||||
NM_CONNECTION_ERROR,
|
|
||||||
NM_CONNECTION_ERROR_INVALID_PROPERTY);
|
|
||||||
|
|
||||||
g_object_set (s_con,
|
|
||||||
NM_SETTING_CONNECTION_INTERFACE_NAME, "ovs@0",
|
|
||||||
NULL);
|
|
||||||
nmtst_assert_connection_unnormalizable (con,
|
|
||||||
NM_CONNECTION_ERROR,
|
|
||||||
NM_CONNECTION_ERROR_INVALID_PROPERTY);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* wrong: contains space */
|
/* wrong: contains space */
|
||||||
@@ -8534,6 +8519,11 @@ test_connection_ovs_ifname (gconstpointer test_data)
|
|||||||
NULL);
|
NULL);
|
||||||
nmtst_assert_connection_verifies (con);
|
nmtst_assert_connection_verifies (con);
|
||||||
|
|
||||||
|
g_object_set (s_con,
|
||||||
|
NM_SETTING_CONNECTION_INTERFACE_NAME, "ovs-br0",
|
||||||
|
NULL);
|
||||||
|
nmtst_assert_connection_verifies (con);
|
||||||
|
|
||||||
/* good if bridge, port, or patch interface */
|
/* good if bridge, port, or patch interface */
|
||||||
g_object_set (s_con,
|
g_object_set (s_con,
|
||||||
NM_SETTING_CONNECTION_INTERFACE_NAME, "ovs123123123123130123123",
|
NM_SETTING_CONNECTION_INTERFACE_NAME, "ovs123123123123130123123",
|
||||||
|
@@ -4097,11 +4097,14 @@ _nm_utils_ifname_valid_ovs (const char* name, GError **error)
|
|||||||
{
|
{
|
||||||
const char *ch;
|
const char *ch;
|
||||||
|
|
||||||
|
/* OVS actually accepts a wider range of chars (all printable UTF-8 chars),
|
||||||
|
NetworkManager restricts this to ASCII char as it's a safer option for
|
||||||
|
now since OVS is not well documented on this matter.
|
||||||
|
*/
|
||||||
for (ch = name; *ch; ++ch) {
|
for (ch = name; *ch; ++ch) {
|
||||||
if ( *ch == '\\'
|
if ( *ch == '\\'
|
||||||
|| *ch == '/'
|
|| *ch == '/'
|
||||||
|| g_ascii_isspace (*ch)
|
|| !g_ascii_isgraph (*ch)) {
|
||||||
|| !g_ascii_isalnum (*ch)) {
|
|
||||||
g_set_error_literal (error, NM_UTILS_ERROR, NM_UTILS_ERROR_UNKNOWN,
|
g_set_error_literal (error, NM_UTILS_ERROR, NM_UTILS_ERROR_UNKNOWN,
|
||||||
_("interface name must be alphanumerical with "
|
_("interface name must be alphanumerical with "
|
||||||
"no forward or backward slashes"));
|
"no forward or backward slashes"));
|
||||||
|
Reference in New Issue
Block a user