Merge pull request #12705 from keszybz/varlink-json-fix-and-two-cleanups

Varlink json fix and two cleanups
This commit is contained in:
Yu Watanabe
2019-05-31 08:28:37 +09:00
committed by GitHub
8 changed files with 44 additions and 18 deletions
+2 -2
View File
@@ -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)))
+1 -1
View File
@@ -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);
+5 -7
View File
@@ -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);
+2 -1
View File
@@ -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. */
+8 -2
View File
@@ -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) {
+6 -5
View File
@@ -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) {
+4
View File
@@ -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)
+16
View File
@@ -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;
}