struct rt *get_option_routes(const struct dhcp_message *, const char *,
unsigned long long *);
ssize_t decode_rfc3397(char *, ssize_t, int, const uint8_t *);
+ssize_t print_string(char *, ssize_t, int, const uint8_t *);
ssize_t configure_env(char **, const char *, const struct dhcp_message *,
const struct if_options *);
struct nd_opt_hdr *ndo;
struct ra_opt *rao;
struct ipv6_addr *ap;
- char *opt;
+ char *opt, *tmp;
struct timeval expire;
uint8_t has_prefix, has_dns, new_rap, new_data;
syslog(LOG_ERR, "%s: invalid DNSSL option",
ifp->name);
} else {
- opt = xmalloc(l);
- decode_rfc3397(opt, l, n, op);
+ tmp = xmalloc(l);
+ decode_rfc3397(tmp, l, n, op);
+ n = print_string(NULL, 0,
+ l - 1, (const uint8_t *)tmp);
+ opt = xmalloc(n);
+ print_string(opt, n,
+ l - 1, (const uint8_t *)tmp);
+ free(tmp);
}
break;
}