mirror of
https://github.com/systemd/systemd-stable.git
synced 2024-12-23 17:34:00 +03:00
Merge pull request #12705 from keszybz/varlink-json-fix-and-two-cleanups
Varlink json fix and two cleanups
This commit is contained in:
commit
9e90465539
@ -37,8 +37,8 @@ static inline int memcmp_nn(const void *s1, size_t n1, const void *s2, size_t n2
|
||||
#define memzero(x,l) \
|
||||
({ \
|
||||
size_t _l_ = (l); \
|
||||
void *_x_ = (x); \
|
||||
_l_ == 0 ? _x_ : memset(_x_, 0, _l_); \
|
||||
if (_l_ > 0) \
|
||||
memset(x, 0, _l_); \
|
||||
})
|
||||
|
||||
#define zero(x) (memzero(&(x), sizeof(x)))
|
||||
|
@ -1734,7 +1734,7 @@ static void remove_directory(sd_journal *j, Directory *d) {
|
||||
hashmap_remove(j->directories_by_wd, INT_TO_PTR(d->wd));
|
||||
|
||||
if (j->inotify_fd >= 0)
|
||||
inotify_rm_watch(j->inotify_fd, d->wd);
|
||||
(void) inotify_rm_watch(j->inotify_fd, d->wd);
|
||||
}
|
||||
|
||||
hashmap_remove(j->directories_by_path, d->path);
|
||||
|
@ -852,15 +852,13 @@ int config_parse_macsec_key_id(
|
||||
|
||||
r = unhexmem(rvalue, strlen(rvalue), &p, &l);
|
||||
if (r < 0) {
|
||||
log_syntax(unit, LOG_ERR, filename, line, r, "Failed to parse key id. Ignoring assignment: %s", rvalue);
|
||||
return 0;
|
||||
}
|
||||
if (l > MACSEC_KEYID_LEN) {
|
||||
log_syntax(unit, LOG_ERR, filename, line, 0,
|
||||
"The size of key id is too large (%zu), maximum of %zu permitted. "
|
||||
"Ignoring assignment: %s", l, (size_t) MACSEC_KEYID_LEN, rvalue);
|
||||
log_syntax(unit, LOG_ERR, filename, line, r, "Failed to parse KeyId \"%s\": %m", rvalue);
|
||||
return 0;
|
||||
}
|
||||
if (l > MACSEC_KEYID_LEN)
|
||||
return log_syntax(unit, LOG_ERR, filename, line, 0,
|
||||
"Specified KeyId is larger then the allowed maximum (%zu > %u), ignoring: %s",
|
||||
l, MACSEC_KEYID_LEN, rvalue);
|
||||
|
||||
dest = a ? a->sa.key_id : b->sa.key_id;
|
||||
memcpy_safe(dest, p, l);
|
||||
|
@ -965,7 +965,8 @@ void link_check_ready(Link *link) {
|
||||
return;
|
||||
|
||||
if ((link_dhcp4_enabled(link) || link_dhcp6_enabled(link)) &&
|
||||
!(link->dhcp4_configured || link->dhcp6_configured) &&
|
||||
!link->dhcp4_configured &&
|
||||
!link->dhcp6_configured &&
|
||||
!(link_ipv4ll_enabled(link, ADDRESS_FAMILY_FALLBACK_IPV4) && link->ipv4ll_address && link->ipv4ll_route))
|
||||
/* When DHCP is enabled, at least one protocol must provide an address, or
|
||||
* an IPv4ll fallback address must be configured. */
|
||||
|
@ -1555,6 +1555,9 @@ int json_variant_format(JsonVariant *v, JsonFormatFlags flags, char **ret) {
|
||||
size_t sz = 0;
|
||||
int r;
|
||||
|
||||
/* Returns the length of the generated string (without the terminating NUL),
|
||||
* or negative on error. */
|
||||
|
||||
assert_return(v, -EINVAL);
|
||||
assert_return(ret, -EINVAL);
|
||||
|
||||
@ -1567,6 +1570,9 @@ int json_variant_format(JsonVariant *v, JsonFormatFlags flags, char **ret) {
|
||||
|
||||
json_variant_dump(v, flags, f, NULL);
|
||||
|
||||
/* Add terminating 0, so that the output buffer is a valid string. */
|
||||
fputc('\0', f);
|
||||
|
||||
r = fflush_and_check(f);
|
||||
}
|
||||
if (r < 0)
|
||||
@ -1574,8 +1580,8 @@ int json_variant_format(JsonVariant *v, JsonFormatFlags flags, char **ret) {
|
||||
|
||||
assert(s);
|
||||
*ret = TAKE_PTR(s);
|
||||
|
||||
return (int) sz;
|
||||
assert(sz > 0);
|
||||
return (int) sz - 1;
|
||||
}
|
||||
|
||||
void json_variant_dump(JsonVariant *v, JsonFormatFlags flags, FILE *f, const char *prefix) {
|
||||
|
@ -246,8 +246,7 @@ static int varlink_new(Varlink **ret) {
|
||||
|
||||
assert(ret);
|
||||
|
||||
/* Here use new0 as the below structured initializer is nested. */
|
||||
v = new0(Varlink, 1);
|
||||
v = new(Varlink, 1);
|
||||
if (!v)
|
||||
return -ENOMEM;
|
||||
|
||||
@ -1212,6 +1211,7 @@ static int varlink_enqueue_json(Varlink *v, JsonVariant *m) {
|
||||
r = json_variant_format(m, 0, &text);
|
||||
if (r < 0)
|
||||
return r;
|
||||
assert(text[r] == '\0');
|
||||
|
||||
if (v->output_buffer_size + r + 1 > VARLINK_BUFFER_MAX)
|
||||
return -ENOBUFS;
|
||||
@ -2304,7 +2304,7 @@ int varlink_server_bind_method(VarlinkServer *s, const char *method, VarlinkMeth
|
||||
|
||||
int varlink_server_bind_method_many_internal(VarlinkServer *s, ...) {
|
||||
va_list ap;
|
||||
int r;
|
||||
int r = 0;
|
||||
|
||||
assert_return(s, -EINVAL);
|
||||
|
||||
@ -2321,10 +2321,11 @@ int varlink_server_bind_method_many_internal(VarlinkServer *s, ...) {
|
||||
|
||||
r = varlink_server_bind_method(s, method, callback);
|
||||
if (r < 0)
|
||||
return r;
|
||||
break;
|
||||
}
|
||||
va_end(ap);
|
||||
|
||||
return 0;
|
||||
return r;
|
||||
}
|
||||
|
||||
int varlink_server_bind_connect(VarlinkServer *s, VarlinkConnect callback) {
|
||||
|
@ -89,6 +89,7 @@ static void test_variant(const char *data, Test test) {
|
||||
r = json_variant_format(v, 0, &s);
|
||||
assert_se(r >= 0);
|
||||
assert_se(s);
|
||||
assert_se((size_t) r == strlen(s));
|
||||
|
||||
log_info("formatted normally: %s\n", s);
|
||||
|
||||
@ -105,6 +106,7 @@ static void test_variant(const char *data, Test test) {
|
||||
r = json_variant_format(v, JSON_FORMAT_PRETTY, &s);
|
||||
assert_se(r >= 0);
|
||||
assert_se(s);
|
||||
assert_se((size_t) r == strlen(s));
|
||||
|
||||
log_info("formatted prettily:\n%s", s);
|
||||
|
||||
@ -120,12 +122,14 @@ static void test_variant(const char *data, Test test) {
|
||||
r = json_variant_format(v, JSON_FORMAT_COLOR, &s);
|
||||
assert_se(r >= 0);
|
||||
assert_se(s);
|
||||
assert_se((size_t) r == strlen(s));
|
||||
printf("Normal with color: %s\n", s);
|
||||
|
||||
s = mfree(s);
|
||||
r = json_variant_format(v, JSON_FORMAT_COLOR|JSON_FORMAT_PRETTY, &s);
|
||||
assert_se(r >= 0);
|
||||
assert_se(s);
|
||||
assert_se((size_t) r == strlen(s));
|
||||
printf("Pretty with color:\n%s\n", s);
|
||||
|
||||
if (test)
|
||||
|
@ -191,6 +191,20 @@ static void test_get_group_creds_one(const char *id, const char *name, gid_t gid
|
||||
assert_se(rgid == gid);
|
||||
}
|
||||
|
||||
static void test_make_salt(void) {
|
||||
log_info("/* %s */", __func__);
|
||||
|
||||
_cleanup_free_ char *s, *t;
|
||||
|
||||
assert_se(make_salt(&s) == 0);
|
||||
log_info("got %s", s);
|
||||
|
||||
assert_se(make_salt(&t) == 0);
|
||||
log_info("got %s", t);
|
||||
|
||||
assert(!streq(s, t));
|
||||
}
|
||||
|
||||
int main(int argc, char *argv[]) {
|
||||
test_uid_to_name_one(0, "root");
|
||||
test_uid_to_name_one(UID_NOBODY, NOBODY_USER_NAME);
|
||||
@ -221,5 +235,7 @@ int main(int argc, char *argv[]) {
|
||||
test_valid_gecos();
|
||||
test_valid_home();
|
||||
|
||||
test_make_salt();
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user