sd-device: allow to read sysattr which contains embedded NUL
This effectively reverts the commit 2a394d0bf2.
But drop trailing '\r' of the read value, as sd_device_set_sysattr_value() drops it.
Fixes #20025.
This commit is contained in:
@@ -2022,13 +2022,17 @@ _public_ int sd_device_get_sysattr_value(sd_device *device, const char *sysattr,
|
||||
/* skip non-readable files */
|
||||
return -EPERM;
|
||||
else {
|
||||
/* read attribute value */
|
||||
r = read_full_virtual_file(path, &value, NULL);
|
||||
size_t size;
|
||||
|
||||
/* Read attribute value, Some attributes contain embedded '\0'. So, it is necessary to
|
||||
* also get the size of the result. See issue #20025. */
|
||||
r = read_full_virtual_file(path, &value, &size);
|
||||
if (r < 0)
|
||||
return r;
|
||||
|
||||
/* drop trailing newlines */
|
||||
delete_trailing_chars(value, "\n");
|
||||
while (size > 0 && strchr(NEWLINE, value[--size]))
|
||||
value[size] = '\0';
|
||||
}
|
||||
|
||||
/* Unfortunately, we need to return 'const char*' instead of 'char*'. Hence, failure in caching
|
||||
|
||||
Reference in New Issue
Block a user