X-Git-Url: http://git.openwrt.org/?p=project%2Fmdnsd.git;a=blobdiff_plain;f=service.c;fp=service.c;h=af3083ec60e7792fb32c5df525723c54513dac1e;hp=97b6f911121c2cd2b22334a4705e66f5a23d723c;hb=eadfa26a5cf31e27f551c37c1362983e9db37c4d;hpb=d13290b427487bb05581e11875af3bfe74d6da2d diff --git a/service.c b/service.c index 97b6f91..af3083e 100644 --- a/service.c +++ b/service.c @@ -218,6 +218,7 @@ service_load_blob(struct blob_attr *b) uint8_t *d_txt; int rem2; int txt_len = 0; + unsigned int n; blobmsg_parse(service_policy, ARRAY_SIZE(service_policy), _tb, blobmsg_data(b), blobmsg_data_len(b)); @@ -228,8 +229,9 @@ service_load_blob(struct blob_attr *b) blobmsg_for_each_attr(txt, _tb[SERVICE_TXT], rem2) txt_len += 1 + strlen(blobmsg_get_string(txt)); + n = strlen(blobmsg_name(b)) + 1; s = calloc_a(sizeof(*s), - &d_id, strlen(blobmsg_name(b)) + 1, + &d_id, n, &d_instance, _tb[SERVICE_INSTANCE] ? strlen(blobmsg_get_string(_tb[SERVICE_INSTANCE])) + 1 : 0, &d_service, strlen(blobmsg_get_string(_tb[SERVICE_SERVICE])) + 1, &d_txt, txt_len); @@ -237,7 +239,7 @@ service_load_blob(struct blob_attr *b) return; s->port = blobmsg_get_u32(_tb[SERVICE_PORT]); - s->id = strcpy(d_id, blobmsg_name(b)); + s->id = strncpy(d_id, blobmsg_name(b), n); if (_tb[SERVICE_INSTANCE]) s->instance = strcpy(d_instance, blobmsg_get_string(_tb[SERVICE_INSTANCE])); else