Skip to content

Commit

Permalink
[NETFILTER]: Fix CID offset bug in PPTP NAT helper debug message
Browse files Browse the repository at this point in the history
The recent (kernel 2.6.15.1) fix for PPTP NAT helper introduced a
bug - which only appears if DEBUGP is enabled though.

The calculation of the CID offset into a PPTP request struct is
not correct, so that at least not the correct CID is displayed
if DEBUGP is enabled.

This patch corrects CID offset calculation and introduces a #define
for that.

Signed-off-by: Holger Eitzenberger <heitzenberger@astaro.com>
Signed-off-by: Patrick McHardy <kaber@trash.net>
Signed-off-by: David S. Miller <davem@davemloft.net>
  • Loading branch information
Holger Eitzenberger authored and David S. Miller committed Mar 21, 2006
1 parent 77ff72d commit f2ad52c
Showing 1 changed file with 5 additions and 3 deletions.
8 changes: 5 additions & 3 deletions net/ipv4/netfilter/ip_nat_helper_pptp.c
Original file line number Diff line number Diff line change
Expand Up @@ -52,6 +52,8 @@

#define IP_NAT_PPTP_VERSION "3.0"

#define REQ_CID(req, off) (*(u_int16_t *)((char *)(req) + (off)))

MODULE_LICENSE("GPL");
MODULE_AUTHOR("Harald Welte <laforge@gnumonks.org>");
MODULE_DESCRIPTION("Netfilter NAT helper module for PPTP");
Expand Down Expand Up @@ -198,7 +200,7 @@ pptp_outbound_pkt(struct sk_buff **pskb,
/* only OUT_CALL_REQUEST, IN_CALL_REPLY, CALL_CLEAR_REQUEST pass
* down to here */
DEBUGP("altering call id from 0x%04x to 0x%04x\n",
ntohs(*(u_int16_t *)pptpReq + cid_off), ntohs(new_callid));
ntohs(REQ_CID(pptpReq, cid_off)), ntohs(new_callid));

/* mangle packet */
if (ip_nat_mangle_tcp_packet(pskb, ct, ctinfo,
Expand Down Expand Up @@ -342,7 +344,7 @@ pptp_inbound_pkt(struct sk_buff **pskb,

/* mangle packet */
DEBUGP("altering peer call id from 0x%04x to 0x%04x\n",
ntohs(*(u_int16_t *)pptpReq + pcid_off), ntohs(new_pcid));
ntohs(REQ_CID(pptpReq, pcid_off)), ntohs(new_pcid));

if (ip_nat_mangle_tcp_packet(pskb, ct, ctinfo,
pcid_off + sizeof(struct pptp_pkt_hdr) +
Expand All @@ -353,7 +355,7 @@ pptp_inbound_pkt(struct sk_buff **pskb,

if (new_cid) {
DEBUGP("altering call id from 0x%04x to 0x%04x\n",
ntohs(*(u_int16_t *)pptpReq + cid_off), ntohs(new_cid));
ntohs(REQ_CID(pptpReq, cid_off)), ntohs(new_cid));
if (ip_nat_mangle_tcp_packet(pskb, ct, ctinfo,
cid_off + sizeof(struct pptp_pkt_hdr) +
sizeof(struct PptpControlHeader),
Expand Down

0 comments on commit f2ad52c

Please sign in to comment.