On 2021-11-20 18:19 +01, Florian Obser <flor...@openbsd.org> wrote:

> +/*
> + * Clear AD flag in the answer.
> + */
> +static void
> +clear_ad(struct asr_result *ar)
> +{
> +     struct asr_dns_header   *h;
> +     uint16_t                 flags;
> +
> +     h = (struct asr_dns_header *)ar->ar_data;
> +     flags = ntohs(h->flags);
> +     flags &= ~(AD_MASK);
> +     h->flags = htons(flags);
> +}
> +

btw. is it possible that this is not alligned correctly on sparc64?

should be do something like (not even compile tested)

static void
clear_ad(struct asr_result *ar)
{
        struct asr_dns_header    h;

        memmove(&h, ar->ar_data, sizeof(h));
        h.flags = ntohs(h.flags);
        h.flags &= ~(AD_MASK);
        h.flags = htons(h.flags);
        memmove(ar->ar_data, &h, sizeof(h));
}

-- 
I'm not entirely sure you are real.

Reply via email to