Merge pull request #5958 from keszybz/explicit-log-errno
Use explicit errno in log calls
This commit is contained in:
commit
401a38e770
|
@ -50,7 +50,7 @@ DEFINE_TRIVIAL_CLEANUP_FUNC(context_t, context_free);
|
|||
static int cached_use = -1;
|
||||
static struct selabel_handle *label_hnd = NULL;
|
||||
|
||||
#define log_enforcing(...) log_full(security_getenforce() == 1 ? LOG_ERR : LOG_DEBUG, __VA_ARGS__)
|
||||
#define log_enforcing(...) log_full_errno(security_getenforce() == 1 ? LOG_ERR : LOG_DEBUG, errno, __VA_ARGS__)
|
||||
#endif
|
||||
|
||||
bool mac_selinux_use(void) {
|
||||
|
|
|
@ -555,15 +555,29 @@ void dual_timestamp_serialize(FILE *f, const char *name, dual_timestamp *t) {
|
|||
|
||||
int dual_timestamp_deserialize(const char *value, dual_timestamp *t) {
|
||||
uint64_t a, b;
|
||||
int r, pos;
|
||||
|
||||
assert(value);
|
||||
assert(t);
|
||||
|
||||
if (sscanf(value, "%" PRIu64 "%" PRIu64, &a, &b) != 2) {
|
||||
log_debug("Failed to parse dual timestamp value \"%s\": %m", value);
|
||||
pos = strspn(value, WHITESPACE);
|
||||
if (value[pos] == '-')
|
||||
return -EINVAL;
|
||||
pos += strspn(value + pos, DIGITS);
|
||||
pos += strspn(value + pos, WHITESPACE);
|
||||
if (value[pos] == '-')
|
||||
return -EINVAL;
|
||||
|
||||
r = sscanf(value, "%" PRIu64 "%" PRIu64 "%n", &a, &b, &pos);
|
||||
if (r != 2) {
|
||||
log_debug("Failed to parse dual timestamp value \"%s\".", value);
|
||||
return -EINVAL;
|
||||
}
|
||||
|
||||
if (value[pos] != '\0')
|
||||
/* trailing garbage */
|
||||
return -EINVAL;
|
||||
|
||||
t->realtime = a;
|
||||
t->monotonic = b;
|
||||
|
||||
|
|
|
@ -398,8 +398,7 @@ static int whitelist_major(const char *path, const char *name, char type, const
|
|||
return 0;
|
||||
|
||||
fail:
|
||||
log_warning_errno(errno, "Failed to read /proc/devices: %m");
|
||||
return -errno;
|
||||
return log_warning_errno(errno, "Failed to read /proc/devices: %m");
|
||||
}
|
||||
|
||||
static bool cgroup_context_has_cpu_weight(CGroupContext *c) {
|
||||
|
|
|
@ -536,7 +536,7 @@ static int config_parse_cpu_affinity2(
|
|||
return ncpus;
|
||||
|
||||
if (sched_setaffinity(0, CPU_ALLOC_SIZE(ncpus), c) < 0)
|
||||
log_warning("Failed to set CPU affinity: %m");
|
||||
log_warning_errno(errno, "Failed to set CPU affinity: %m");
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
|
|
@ -355,7 +355,7 @@ static int raw_import_process(RawImport *i) {
|
|||
}
|
||||
if (l == 0) {
|
||||
if (i->compress.type == IMPORT_COMPRESS_UNKNOWN) {
|
||||
log_error("Premature end of file: %m");
|
||||
log_error("Premature end of file.");
|
||||
r = -EIO;
|
||||
goto finish;
|
||||
}
|
||||
|
@ -369,7 +369,7 @@ static int raw_import_process(RawImport *i) {
|
|||
if (i->compress.type == IMPORT_COMPRESS_UNKNOWN) {
|
||||
r = import_uncompress_detect(&i->compress, i->buffer, i->buffer_size);
|
||||
if (r < 0) {
|
||||
log_error("Failed to detect file compression: %m");
|
||||
log_error_errno(r, "Failed to detect file compression: %m");
|
||||
goto finish;
|
||||
}
|
||||
if (r == 0) /* Need more data */
|
||||
|
|
|
@ -284,7 +284,7 @@ static int tar_import_process(TarImport *i) {
|
|||
}
|
||||
if (l == 0) {
|
||||
if (i->compress.type == IMPORT_COMPRESS_UNKNOWN) {
|
||||
log_error("Premature end of file: %m");
|
||||
log_error("Premature end of file.");
|
||||
r = -EIO;
|
||||
goto finish;
|
||||
}
|
||||
|
@ -298,7 +298,7 @@ static int tar_import_process(TarImport *i) {
|
|||
if (i->compress.type == IMPORT_COMPRESS_UNKNOWN) {
|
||||
r = import_uncompress_detect(&i->compress, i->buffer, i->buffer_size);
|
||||
if (r < 0) {
|
||||
log_error("Failed to detect file compression: %m");
|
||||
log_error_errno(r, "Failed to detect file compression: %m");
|
||||
goto finish;
|
||||
}
|
||||
if (r == 0) /* Need more data */
|
||||
|
|
|
@ -1655,7 +1655,8 @@ static int client_receive_message_udp(
|
|||
if (errno == EAGAIN || errno == EINTR)
|
||||
return 0;
|
||||
|
||||
return log_dhcp_client_errno(client, errno, "Could not receive message from UDP socket: %m");
|
||||
return log_dhcp_client_errno(client, errno,
|
||||
"Could not receive message from UDP socket: %m");
|
||||
}
|
||||
if ((size_t) len < sizeof(DHCPMessage)) {
|
||||
log_dhcp_client(client, "Too small to be a DHCP message: ignoring");
|
||||
|
@ -1748,9 +1749,8 @@ static int client_receive_message_raw(
|
|||
if (errno == EAGAIN || errno == EINTR)
|
||||
return 0;
|
||||
|
||||
log_dhcp_client(client, "Could not receive message from raw socket: %m");
|
||||
|
||||
return -errno;
|
||||
return log_dhcp_client_errno(client, errno,
|
||||
"Could not receive message from raw socket: %m");
|
||||
} else if ((size_t)len < sizeof(DHCPPacket))
|
||||
return 0;
|
||||
|
||||
|
|
|
@ -525,8 +525,6 @@ int main(int argc, char *argv[]) {
|
|||
void *p;
|
||||
int r, q;
|
||||
|
||||
zero(c);
|
||||
|
||||
c.automatic_integer_property = 4711;
|
||||
assert_se(c.automatic_string_property = strdup("dudeldu"));
|
||||
|
||||
|
|
|
@ -631,10 +631,8 @@ static int enumerator_scan_devices_tag(sd_device_enumerator *enumerator, const c
|
|||
if (!dir) {
|
||||
if (errno == ENOENT)
|
||||
return 0;
|
||||
else {
|
||||
log_error("sd-device-enumerator: could not open tags directory %s: %m", path);
|
||||
return -errno;
|
||||
}
|
||||
else
|
||||
return log_error_errno(errno, "sd-device-enumerator: could not open tags directory %s: %m", path);
|
||||
}
|
||||
|
||||
/* TODO: filter away subsystems? */
|
||||
|
@ -758,10 +756,8 @@ static int parent_crawl_children(sd_device_enumerator *enumerator, const char *p
|
|||
int r = 0;
|
||||
|
||||
dir = opendir(path);
|
||||
if (!dir) {
|
||||
log_debug("sd-device-enumerate: could not open parent directory %s: %m", path);
|
||||
return -errno;
|
||||
}
|
||||
if (!dir)
|
||||
return log_debug_errno(errno, "sd-device-enumerate: could not open parent directory %s: %m", path);
|
||||
|
||||
FOREACH_DIRENT_ALL(dent, dir, return -errno) {
|
||||
_cleanup_free_ char *child = NULL;
|
||||
|
|
|
@ -195,8 +195,7 @@ int device_set_syspath(sd_device *device, const char *_syspath, bool verify) {
|
|||
/* this is not a valid device */
|
||||
return -ENODEV;
|
||||
|
||||
log_debug("sd-device: %s does not have an uevent file: %m", syspath);
|
||||
return -errno;
|
||||
return log_debug_errno(errno, "sd-device: %s does not have an uevent file: %m", syspath);
|
||||
}
|
||||
} else {
|
||||
/* everything else just needs to be a directory */
|
||||
|
|
|
@ -681,7 +681,7 @@ retry:
|
|||
|
||||
udev_device = udev_device_new_from_nulstr(udev_monitor->udev, &buf.raw[bufpos], buflen - bufpos);
|
||||
if (!udev_device) {
|
||||
log_debug("could not create device: %m");
|
||||
log_debug_errno(errno, "could not create device: %m");
|
||||
return NULL;
|
||||
}
|
||||
|
||||
|
|
|
@ -2029,7 +2029,7 @@ static int determine_names(void) {
|
|||
if (r < 0)
|
||||
return log_error_errno(r, "Failed to find image for machine '%s': %m", arg_machine);
|
||||
if (r == 0) {
|
||||
log_error("No image for machine '%s': %m", arg_machine);
|
||||
log_error("No image for machine '%s'.", arg_machine);
|
||||
return -ENOENT;
|
||||
}
|
||||
|
||||
|
|
|
@ -3045,7 +3045,7 @@ int unit_file_get_list(
|
|||
if (errno == ENOENT)
|
||||
continue;
|
||||
if (IN_SET(errno, ENOTDIR, EACCES)) {
|
||||
log_debug("Failed to open \"%s\": %m", *i);
|
||||
log_debug_errno(errno, "Failed to open \"%s\": %m", *i);
|
||||
continue;
|
||||
}
|
||||
|
||||
|
|
|
@ -115,7 +115,7 @@ int main(int argc, char *argv[]) {
|
|||
in_fd = SD_LISTEN_FDS_START;
|
||||
out_fd = SD_LISTEN_FDS_START;
|
||||
} else {
|
||||
log_error("Illegal number of file descriptors passed\n");
|
||||
log_error("Illegal number of file descriptors passed.");
|
||||
goto finish;
|
||||
}
|
||||
|
||||
|
@ -190,7 +190,7 @@ int main(int argc, char *argv[]) {
|
|||
}
|
||||
|
||||
for (;;) {
|
||||
_cleanup_(sd_bus_message_unrefp)sd_bus_message *m = NULL;
|
||||
_cleanup_(sd_bus_message_unrefp) sd_bus_message *m = NULL;
|
||||
int events_a, events_b, fd;
|
||||
uint64_t timeout_a, timeout_b, t;
|
||||
struct timespec _ts, *ts;
|
||||
|
@ -292,7 +292,7 @@ int main(int argc, char *argv[]) {
|
|||
r = ppoll(p, ELEMENTSOF(p), ts, NULL);
|
||||
}
|
||||
if (r < 0) {
|
||||
log_error("ppoll() failed: %m");
|
||||
log_error_errno(errno, "ppoll() failed: %m");
|
||||
goto finish;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -31,7 +31,7 @@ int main(int argc, char* argv[]) {
|
|||
|
||||
r = loopback_setup();
|
||||
if (r < 0)
|
||||
log_error("loopback: %m");
|
||||
log_error_errno(r, "loopback: %m");
|
||||
|
||||
return r >= 0 ? EXIT_SUCCESS : EXIT_FAILURE;
|
||||
}
|
||||
|
|
|
@ -105,7 +105,7 @@ static int print_gaih_addrtuples(const struct gaih_addrtuple *tuples) {
|
|||
goto numerical_index;
|
||||
|
||||
if (if_indextoname(it->scopeid, ifname) == NULL) {
|
||||
log_warning("if_indextoname(%d) failed: %m", it->scopeid);
|
||||
log_warning_errno(errno, "if_indextoname(%d) failed: %m", it->scopeid);
|
||||
numerical_index:
|
||||
xsprintf(ifname, "%i", it->scopeid);
|
||||
};
|
||||
|
|
|
@ -395,6 +395,9 @@ static void test_safe_atou16(void) {
|
|||
|
||||
r = safe_atou16("junk", &l);
|
||||
assert_se(r == -EINVAL);
|
||||
|
||||
r = safe_atou16("123x", &l);
|
||||
assert_se(r == -EINVAL);
|
||||
}
|
||||
|
||||
static void test_safe_atoi16(void) {
|
||||
|
@ -425,6 +428,70 @@ static void test_safe_atoi16(void) {
|
|||
|
||||
r = safe_atoi16("junk", &l);
|
||||
assert_se(r == -EINVAL);
|
||||
|
||||
r = safe_atoi16("123x", &l);
|
||||
assert_se(r == -EINVAL);
|
||||
}
|
||||
|
||||
static void test_safe_atou64(void) {
|
||||
int r;
|
||||
uint64_t l;
|
||||
|
||||
r = safe_atou64("12345", &l);
|
||||
assert_se(r == 0);
|
||||
assert_se(l == 12345);
|
||||
|
||||
r = safe_atou64(" 12345", &l);
|
||||
assert_se(r == 0);
|
||||
assert_se(l == 12345);
|
||||
|
||||
r = safe_atou64("18446744073709551617", &l);
|
||||
assert_se(r == -ERANGE);
|
||||
|
||||
r = safe_atou64("-1", &l);
|
||||
assert_se(r == -ERANGE);
|
||||
|
||||
r = safe_atou64(" -1", &l);
|
||||
assert_se(r == -ERANGE);
|
||||
|
||||
r = safe_atou64("junk", &l);
|
||||
assert_se(r == -EINVAL);
|
||||
|
||||
r = safe_atou64("123x", &l);
|
||||
assert_se(r == -EINVAL);
|
||||
}
|
||||
|
||||
static void test_safe_atoi64(void) {
|
||||
int r;
|
||||
int64_t l;
|
||||
|
||||
r = safe_atoi64("-12345", &l);
|
||||
assert_se(r == 0);
|
||||
assert_se(l == -12345);
|
||||
|
||||
r = safe_atoi64(" -12345", &l);
|
||||
assert_se(r == 0);
|
||||
assert_se(l == -12345);
|
||||
|
||||
r = safe_atoi64("32767", &l);
|
||||
assert_se(r == 0);
|
||||
assert_se(l == 32767);
|
||||
|
||||
r = safe_atoi64(" 32767", &l);
|
||||
assert_se(r == 0);
|
||||
assert_se(l == 32767);
|
||||
|
||||
r = safe_atoi64("9223372036854775813", &l);
|
||||
assert_se(r == -ERANGE);
|
||||
|
||||
r = safe_atoi64("-9223372036854775813", &l);
|
||||
assert_se(r == -ERANGE);
|
||||
|
||||
r = safe_atoi64("junk", &l);
|
||||
assert_se(r == -EINVAL);
|
||||
|
||||
r = safe_atoi64("123x", &l);
|
||||
assert_se(r == -EINVAL);
|
||||
}
|
||||
|
||||
static void test_safe_atod(void) {
|
||||
|
@ -538,6 +605,8 @@ int main(int argc, char *argv[]) {
|
|||
test_safe_atolli();
|
||||
test_safe_atou16();
|
||||
test_safe_atoi16();
|
||||
test_safe_atou64();
|
||||
test_safe_atoi64();
|
||||
test_safe_atod();
|
||||
test_parse_percent();
|
||||
test_parse_percent_unbounded();
|
||||
|
|
|
@ -273,6 +273,43 @@ static void test_format_timestamp_utc(void) {
|
|||
test_format_timestamp_utc_one(USEC_INFINITY, NULL);
|
||||
}
|
||||
|
||||
static void test_dual_timestamp_deserialize(void) {
|
||||
int r;
|
||||
dual_timestamp t;
|
||||
|
||||
r = dual_timestamp_deserialize("1234 5678", &t);
|
||||
assert_se(r == 0);
|
||||
assert_se(t.realtime == 1234);
|
||||
assert_se(t.monotonic == 5678);
|
||||
|
||||
r = dual_timestamp_deserialize("1234x 5678", &t);
|
||||
assert_se(r == -EINVAL);
|
||||
|
||||
r = dual_timestamp_deserialize("1234 5678y", &t);
|
||||
assert_se(r == -EINVAL);
|
||||
|
||||
r = dual_timestamp_deserialize("-1234 5678", &t);
|
||||
assert_se(r == -EINVAL);
|
||||
|
||||
r = dual_timestamp_deserialize("1234 -5678", &t);
|
||||
assert_se(r == -EINVAL);
|
||||
|
||||
/* Check that output wasn't modified. */
|
||||
assert_se(t.realtime == 1234);
|
||||
assert_se(t.monotonic == 5678);
|
||||
|
||||
r = dual_timestamp_deserialize("+123 567", &t);
|
||||
assert_se(r == 0);
|
||||
assert_se(t.realtime == 123);
|
||||
assert_se(t.monotonic == 567);
|
||||
|
||||
/* Check that we get "infinity" on overflow. */
|
||||
r = dual_timestamp_deserialize("18446744073709551617 0", &t);
|
||||
assert_se(r == 0);
|
||||
assert_se(t.realtime == USEC_INFINITY);
|
||||
assert_se(t.monotonic == 0);
|
||||
}
|
||||
|
||||
int main(int argc, char *argv[]) {
|
||||
uintmax_t x;
|
||||
|
||||
|
@ -288,6 +325,7 @@ int main(int argc, char *argv[]) {
|
|||
test_usec_sub();
|
||||
test_format_timestamp();
|
||||
test_format_timestamp_utc();
|
||||
test_dual_timestamp_deserialize();
|
||||
|
||||
/* Ensure time_t is signed */
|
||||
assert_cc((time_t) -1 < (time_t) 1);
|
||||
|
|
|
@ -724,10 +724,9 @@ static int path_set_xattrs(Item *i, const char *path) {
|
|||
|
||||
n = strlen(*value);
|
||||
log_debug("Setting extended attribute '%s=%s' on %s.", *name, *value, path);
|
||||
if (lsetxattr(path, *name, *value, n, 0) < 0) {
|
||||
log_error("Setting extended attribute %s=%s on %s failed: %m", *name, *value, path);
|
||||
return -errno;
|
||||
}
|
||||
if (lsetxattr(path, *name, *value, n, 0) < 0)
|
||||
return log_error_errno(errno, "Setting extended attribute %s=%s on %s failed: %m",
|
||||
*name, *value, path);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
|
|
@ -474,6 +474,13 @@ static int add_token(struct udev_rules *rules, struct token *token) {
|
|||
return 0;
|
||||
}
|
||||
|
||||
static void log_unknown_owner(int error, const char *entity, const char *owner) {
|
||||
if (IN_SET(abs(error), ENOENT, ESRCH))
|
||||
log_error("Specified %s '%s' unknown", entity, owner);
|
||||
else
|
||||
log_error_errno(error, "Error resolving %s '%s': %m", entity, owner);
|
||||
}
|
||||
|
||||
static uid_t add_uid(struct udev_rules *rules, const char *owner) {
|
||||
unsigned int i;
|
||||
uid_t uid = 0;
|
||||
|
@ -489,12 +496,8 @@ static uid_t add_uid(struct udev_rules *rules, const char *owner) {
|
|||
}
|
||||
}
|
||||
r = get_user_creds(&owner, &uid, NULL, NULL, NULL);
|
||||
if (r < 0) {
|
||||
if (r == -ENOENT || r == -ESRCH)
|
||||
log_error("specified user '%s' unknown", owner);
|
||||
else
|
||||
log_error_errno(r, "error resolving user '%s': %m", owner);
|
||||
}
|
||||
if (r < 0)
|
||||
log_unknown_owner(r, "user", owner);
|
||||
|
||||
/* grow buffer if needed */
|
||||
if (rules->uids_cur+1 >= rules->uids_max) {
|
||||
|
@ -536,12 +539,8 @@ static gid_t add_gid(struct udev_rules *rules, const char *group) {
|
|||
}
|
||||
}
|
||||
r = get_group_creds(&group, &gid);
|
||||
if (r < 0) {
|
||||
if (r == -ENOENT || r == -ESRCH)
|
||||
log_error("specified group '%s' unknown", group);
|
||||
else
|
||||
log_error_errno(r, "error resolving group '%s': %m", group);
|
||||
}
|
||||
if (r < 0)
|
||||
log_unknown_owner(r, "group", group);
|
||||
|
||||
/* grow buffer if needed */
|
||||
if (rules->gids_cur+1 >= rules->gids_max) {
|
||||
|
@ -814,7 +813,7 @@ static const char *get_key_attribute(struct udev *udev, char *str) {
|
|||
attr++;
|
||||
pos = strchr(attr, '}');
|
||||
if (pos == NULL) {
|
||||
log_error("missing closing brace for format");
|
||||
log_error("Missing closing brace for format");
|
||||
return NULL;
|
||||
}
|
||||
pos[0] = '\0';
|
||||
|
@ -2119,11 +2118,7 @@ void udev_rules_apply_to_event(struct udev_rules *rules,
|
|||
event->owner_set = true;
|
||||
r = get_user_creds(&ow, &event->uid, NULL, NULL, NULL);
|
||||
if (r < 0) {
|
||||
if (r == -ENOENT || r == -ESRCH)
|
||||
log_error("specified user '%s' unknown", owner);
|
||||
else
|
||||
log_error_errno(r, "error resolving user '%s': %m", owner);
|
||||
|
||||
log_unknown_owner(r, "user", owner);
|
||||
event->uid = 0;
|
||||
}
|
||||
log_debug("OWNER %u %s:%u",
|
||||
|
@ -2145,11 +2140,7 @@ void udev_rules_apply_to_event(struct udev_rules *rules,
|
|||
event->group_set = true;
|
||||
r = get_group_creds(&gr, &event->gid);
|
||||
if (r < 0) {
|
||||
if (r == -ENOENT || r == -ESRCH)
|
||||
log_error("specified group '%s' unknown", group);
|
||||
else
|
||||
log_error_errno(r, "error resolving group '%s': %m", group);
|
||||
|
||||
log_unknown_owner(r, "group", group);
|
||||
event->gid = 0;
|
||||
}
|
||||
log_debug("GROUP %u %s:%u",
|
||||
|
@ -2536,19 +2527,19 @@ int udev_rules_apply_static_dev_perms(struct udev_rules *rules) {
|
|||
}
|
||||
if (mode != (stats.st_mode & 01777)) {
|
||||
r = chmod(device_node, mode);
|
||||
if (r < 0) {
|
||||
log_error("failed to chmod '%s' %#o", device_node, mode);
|
||||
return -errno;
|
||||
} else
|
||||
if (r < 0)
|
||||
return log_error_errno(errno, "Failed to chmod '%s' %#o: %m",
|
||||
device_node, mode);
|
||||
else
|
||||
log_debug("chmod '%s' %#o", device_node, mode);
|
||||
}
|
||||
|
||||
if ((uid != 0 && uid != stats.st_uid) || (gid != 0 && gid != stats.st_gid)) {
|
||||
r = chown(device_node, uid, gid);
|
||||
if (r < 0) {
|
||||
log_error("failed to chown '%s' %u %u ", device_node, uid, gid);
|
||||
return -errno;
|
||||
} else
|
||||
if (r < 0)
|
||||
return log_error_errno(errno, "Failed to chown '%s' %u %u: %m",
|
||||
device_node, uid, gid);
|
||||
else
|
||||
log_debug("chown '%s' %u %u", device_node, uid, gid);
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in a new issue