summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/dhcp/nm-dhcp-manager.c17
1 files changed, 17 insertions, 0 deletions
diff --git a/src/dhcp/nm-dhcp-manager.c b/src/dhcp/nm-dhcp-manager.c
index 2fa86f7c98..6c71af9d0b 100644
--- a/src/dhcp/nm-dhcp-manager.c
+++ b/src/dhcp/nm-dhcp-manager.c
@@ -178,6 +178,7 @@ client_start (NMDhcpManager *self,
NMDhcpManagerPrivate *priv;
NMDhcpClient *client;
gboolean success = FALSE;
+ gsize hwaddr_len;
g_return_val_if_fail (NM_IS_DHCP_MANAGER (self), NULL);
g_return_val_if_fail (ifindex > 0, NULL);
@@ -185,6 +186,22 @@ client_start (NMDhcpManager *self,
g_return_val_if_fail (!dhcp_client_id || g_bytes_get_size (dhcp_client_id) >= 2, NULL);
g_return_val_if_fail (!error || !*error, NULL);
+ if (!hwaddr) {
+ nm_utils_error_set (error,
+ NM_UTILS_ERROR_UNKNOWN,
+ "missing MAC address");
+ return NULL;
+ }
+
+ hwaddr_len = g_bytes_get_size (hwaddr);
+ if ( hwaddr_len == 0
+ || hwaddr_len > NM_UTILS_HWADDR_LEN_MAX) {
+ nm_utils_error_set (error,
+ NM_UTILS_ERROR_UNKNOWN,
+ "invalid MAC address");
+ g_return_val_if_reached (NULL) ;
+ }
+
priv = NM_DHCP_MANAGER_GET_PRIVATE (self);
nm_assert (priv->client_factory);