]> git.ipfire.org Git - thirdparty/systemd.git/commitdiff
sd-dhcp-client: make return arguments for sd_dhcp_client_get_client_id() optional
authorYu Watanabe <watanabe.yu+github@gmail.com>
Mon, 8 May 2023 15:34:06 +0000 (00:34 +0900)
committerYu Watanabe <watanabe.yu+github@gmail.com>
Mon, 8 May 2023 15:34:06 +0000 (00:34 +0900)
src/libsystemd-network/sd-dhcp-client.c
src/systemd/sd-dhcp-client.h

index b73abcb82d162dbee743a3c29dd3b1fe91df2060..19ed80db5c75c481f7b51599210400a39b326ee2 100644 (file)
@@ -339,25 +339,32 @@ int sd_dhcp_client_set_mac(
 
 int sd_dhcp_client_get_client_id(
                 sd_dhcp_client *client,
-                uint8_t *type,
-                const uint8_t **data,
-                size_t *data_len) {
+                uint8_t *ret_type,
+                const uint8_t **ret_data,
+                size_t *ret_data_len) {
 
         assert_return(client, -EINVAL);
-        assert_return(type, -EINVAL);
-        assert_return(data, -EINVAL);
-        assert_return(data_len, -EINVAL);
 
-        if (client->client_id_len) {
-                *type = client->client_id.type;
-                *data = client->client_id.raw.data;
-                *data_len = client->client_id_len - sizeof(client->client_id.type);
-        } else {
-                *type = 0;
-                *data = NULL;
-                *data_len = 0;
+        if (client->client_id_len > 0) {
+                if (client->client_id_len < offsetof(sd_dhcp_client_id, raw.data))
+                        return -EINVAL;
+
+                if (ret_type)
+                        *ret_type = client->client_id.type;
+                if (ret_data)
+                        *ret_data = client->client_id.raw.data;
+                if (ret_data_len)
+                        *ret_data_len = client->client_id_len - offsetof(sd_dhcp_client_id, raw.data);
+                return 1;
         }
 
+        if (ret_type)
+                *ret_type = 0;
+        if (ret_data)
+                *ret_data = NULL;
+        if (ret_data_len)
+                *ret_data_len = 0;
+
         return 0;
 }
 
index 2b3f995769837e23bfaea63b3e5d2d50180b84e8..2b8fddcf046df912460edd9f9446638bea36ba8b 100644 (file)
@@ -279,9 +279,9 @@ int sd_dhcp_client_set_duid_llt(
                 uint64_t llt_time);
 int sd_dhcp_client_get_client_id(
                 sd_dhcp_client *client,
-                uint8_t *type,
-                const uint8_t **data,
-                size_t *data_len);
+                uint8_t *ret_type,
+                const uint8_t **ret_data,
+                size_t *ret_data_len);
 int sd_dhcp_client_set_mtu(
                 sd_dhcp_client *client,
                 uint32_t mtu);