Re: [PATCH] netfilter ulog byte alignment problem

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Fabian Hugelshofer wrote:
I am using libipulog on an XScale IXP422 processor (big endian ARM). I
call ipulog_get_packet to decode the multipart message and then access
the fields in the packet (ulog_packet_msg_t). Accessing fields 'mac' and
'payload' does not give me the right data. The data is actually there,
but an access to the arrays ends up at a wrong location. Manually adding
an offset leads to the correct position (e.g. pkt->payload[-66] instead
of pkt->payload[0] for the first byte of the IP packet).

I tracked the issue down to a byte alignment problem in
ulog_packet_msg_t (include/linux/netfilter_ipv4/ipt_ULOG.h). Setting
attributes 'packed' or 'aligned' or using 'size_t' instead of 'unsigned
char' for field 'mac_len' solved the problem. It seems necessary to help
the compiler doing things right.

This patch requires applications to be recompiled against the new header
file. Let me know what you think.

I'm afraid it might break compatibility on other architectures.
Are your userspace and kernel compiled using the same options?
Why would they lay out the structure differently?
--
To unsubscribe from this list: send the line "unsubscribe netfilter-devel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html

[Index of Archives]     [Netfitler Users]     [LARTC]     [Bugtraq]     [Yosemite Forum]

  Powered by Linux