Hi all
In linux-2.4.13-h323patch/net/ipv4/netfilter/ip_conntrack_h323.c I found the
following piece of code (See bottom)
In the if statement ctinfo is checked for some conditions. The way they test
the conditions tells me that the IP_CT_ESTABLISHED and IP_CT_IS_REPLY are
bitmasks because they are added and they are part of an enumaration. When i
looked at the declaration of that enum i see an ordinairy enum without
numbers (thus using default ones starting at zero!)
What will result in the following numbers after the pre processor...
IP_CT_ESTABLISHED = 0
IP_CT_RELATED = 1
IP_CT_NEW = 2
IP_CT_IS_REPLY = 3
IP_CT_NUMBER = IP_CT_IS_REPLY * 2 - 1 = 5 (huh?)
I Really dont understand the logic here..... You cannot bitmask this!!!
(Unless there is a sofisticated state behind these numbers)
What I was expecting:
IP_CT_ESTABLISHED = 1
IP_CT_RELATED = 2
IP_CT_NEW = 4
IP_CT_IS_REPLY = 8
IP_CT_NUMBER = IP_CT_IS_REPLY * 2 - 1 = 15 (number of possible
combinations?)
What i like to know from every self respecting hacker is this a bug or do i
not understand the logic behind this.
At least is is poor ducumented to me...
Snippet where the enum is used
(linux-2.4.13-h323patch/net/ipv4/netfilter/ip_conntrack_h323.c)
*****
*****
static int h245_help(const struct iphdr *iph, size_t len,
struct ip_conntrack *ct,
enum ip_conntrack_info ctinfo)
{
...
...
...
/* Until there's been traffic both ways, don't look in packets. */
if (ctinfo != IP_CT_ESTABLISHED
&& ctinfo != IP_CT_ESTABLISHED + IP_CT_IS_REPLY) {
DEBUGP("ct_h245_help: Conntrackinfo = %u\n", ctinfo);
return NF_ACCEPT;
}
...
...
}
****
****
Snippet where the enum is declared
(linux-2.4.13-h323patch/include/linux/netfilter_ipv4/ip_conntrack.h)
****
****
...
...
enum ip_conntrack_info
{
/* Part of an established connection (either direction). */
IP_CT_ESTABLISHED,
/* Like NEW, but related to an existing connection, or ICMP error
(in either direction). */
IP_CT_RELATED,
/* Started a new connection to track (only
IP_CT_DIR_ORIGINAL); may be a retransmission. */
IP_CT_NEW,
/* >= this indicates reply direction */
IP_CT_IS_REPLY,
/* Number of distinct IP_CT types (no NEW in reply dirn). */
IP_CT_NUMBER = IP_CT_IS_REPLY * 2 - 1
};
...
...
****
****
_________________________________________________________________
MSN Photos is the easiest way to share and print your photos:
http://photos.msn.com/support/worldwide.aspx