}
int cg_get_xattr_bool(const char *path, const char *name) {
- _cleanup_free_ char *val = NULL;
+ _cleanup_free_ char *fs = NULL;
int r;
assert(path);
assert(name);
- r = cg_get_xattr_malloc(path, name, &val);
+ r = cg_get_path(SYSTEMD_CGROUP_CONTROLLER, path, NULL, &fs);
if (r < 0)
return r;
- return parse_boolean(val);
+ return getxattr_at_bool(AT_FDCWD, fs, name, /* flags= */ 0);
}
int cg_remove_xattr(const char *path, const char *name) {
assert(filename);
/* No xattr or cannot parse it? Then skip this. */
- _cleanup_free_ char *extension_release_xattr = NULL;
- r = fgetxattr_malloc(extension_release_fd, "user.extension-release.strict", &extension_release_xattr);
+ r = getxattr_at_bool(extension_release_fd, /* path= */ NULL, "user.extension-release.strict", /* flags= */ 0);
if (ERRNO_IS_NEG_XATTR_ABSENT(r))
return log_debug_errno(r, "%s/%s does not have user.extension-release.strict xattr, ignoring.",
extension_release_dir_path, filename);
extension_release_dir_path, filename);
/* Explicitly set to request strict matching? Skip it. */
- r = parse_boolean(extension_release_xattr);
- if (r < 0)
- return log_debug_errno(r,
- "%s/%s: Failed to parse 'user.extension-release.strict' extended attribute from file, ignoring: %m",
- extension_release_dir_path, filename);
if (r > 0) {
log_debug("%s/%s: 'user.extension-release.strict' attribute is true, ignoring file.",
extension_release_dir_path, filename);
static SeedAction arg_action = _ACTION_INVALID;
static CreditEntropy may_credit(int seed_fd) {
- _cleanup_free_ char *creditable = NULL;
const char *e;
int r;
}
/* Determine if the file is marked as creditable */
- r = fgetxattr_malloc(seed_fd, "user.random-seed-creditable", &creditable);
+ r = getxattr_at_bool(seed_fd, /* path= */ NULL, "user.random-seed-creditable", /* flags= */ 0);
if (r < 0) {
if (ERRNO_IS_XATTR_ABSENT(r))
log_debug_errno(r, "Seed file is not marked as creditable, not crediting.");
return CREDIT_ENTROPY_NO_WAY;
}
-
- r = parse_boolean(creditable);
- if (r <= 0) {
- if (r < 0)
- log_warning_errno(r, "Failed to parse user.random-seed-creditable extended attribute, ignoring: %s", creditable);
- else
- log_debug("Seed file is marked as not creditable, not crediting.");
-
+ if (r == 0) {
+ log_debug("Seed file is marked as not creditable, not crediting.");
return CREDIT_ENTROPY_NO_WAY;
}