mirror of
https://github.com/systemd/systemd
synced 2024-09-16 06:43:18 +00:00
sd-dhcp-client-id/duid: do not trigger assertion when invalid size is passed
The data may be from user input or file. We usually use assertion for programming error. Hence, using assert is not a good choise there. Preparation for later commits.
This commit is contained in:
parent
25cbc42d93
commit
cf9b425749
|
@ -51,7 +51,9 @@ int sd_dhcp_client_id_set(
|
|||
|
||||
assert_return(client_id, -EINVAL);
|
||||
assert_return(data, -EINVAL);
|
||||
assert_return(client_id_data_size_is_valid(data_size), -EINVAL);
|
||||
|
||||
if (!client_id_data_size_is_valid(data_size))
|
||||
return -EINVAL;
|
||||
|
||||
client_id->id.type = type;
|
||||
memcpy(client_id->id.data, data, data_size);
|
||||
|
@ -67,10 +69,12 @@ int sd_dhcp_client_id_set_raw(
|
|||
|
||||
assert_return(client_id, -EINVAL);
|
||||
assert_return(data, -EINVAL);
|
||||
assert_return(client_id_size_is_valid(data_size), -EINVAL);
|
||||
|
||||
/* Unlike sd_dhcp_client_id_set(), this takes whole client ID including its type. */
|
||||
|
||||
if (!client_id_size_is_valid(data_size))
|
||||
return -EINVAL;
|
||||
|
||||
memcpy(client_id->raw, data, data_size);
|
||||
|
||||
client_id->size = data_size;
|
||||
|
@ -150,7 +154,6 @@ int sd_dhcp_client_id_to_string_from_raw(const void *data, size_t data_size, cha
|
|||
int r;
|
||||
|
||||
assert_return(data, -EINVAL);
|
||||
assert_return(client_id_size_is_valid(data_size), -EINVAL);
|
||||
assert_return(ret, -EINVAL);
|
||||
|
||||
r = sd_dhcp_client_id_set_raw(&client_id, data, data_size);
|
||||
|
|
|
@ -71,7 +71,9 @@ int sd_dhcp_duid_set(
|
|||
|
||||
assert_return(duid, -EINVAL);
|
||||
assert_return(data, -EINVAL);
|
||||
assert_return(duid_data_size_is_valid(data_size), -EINVAL);
|
||||
|
||||
if (!duid_data_size_is_valid(data_size))
|
||||
return -EINVAL;
|
||||
|
||||
unaligned_write_be16(&duid->duid.type, duid_type);
|
||||
memcpy(duid->duid.data, data, data_size);
|
||||
|
@ -87,10 +89,12 @@ int sd_dhcp_duid_set_raw(
|
|||
|
||||
assert_return(duid, -EINVAL);
|
||||
assert_return(data, -EINVAL);
|
||||
assert_return(duid_size_is_valid(data_size), -EINVAL);
|
||||
|
||||
/* Unlike sd_dhcp_duid_set(), this takes whole DUID including its type. */
|
||||
|
||||
if (!duid_size_is_valid(data_size))
|
||||
return -EINVAL;
|
||||
|
||||
memcpy(duid->raw, data, data_size);
|
||||
|
||||
duid->size = data_size;
|
||||
|
@ -209,9 +213,11 @@ int dhcp_duid_to_string_internal(uint16_t type, const void *data, size_t data_si
|
|||
const char *t;
|
||||
|
||||
assert(data);
|
||||
assert(duid_data_size_is_valid(data_size));
|
||||
assert(ret);
|
||||
|
||||
if (!duid_data_size_is_valid(data_size))
|
||||
return -EINVAL;
|
||||
|
||||
x = hexmem(data, data_size);
|
||||
if (!x)
|
||||
return -ENOMEM;
|
||||
|
|
Loading…
Reference in a new issue