<feed xmlns='http://www.w3.org/2005/Atom'>
<title>accel-ppp.git/accel-pppd/ctrl/pptp, branch master</title>
<subtitle>High performance PPTP/L2TP/SSTP/PPPoE/IPoE server for Linux (mirror of https://github.com/accel-ppp/accel-ppp.git)
</subtitle>
<id>https://git.amelek.net/accel-ppp/accel-ppp.git/atom?h=master</id>
<link rel='self' href='https://git.amelek.net/accel-ppp/accel-ppp.git/atom?h=master'/>
<link rel='alternate' type='text/html' href='https://git.amelek.net/accel-ppp/accel-ppp.git/'/>
<updated>2026-09-09T15:42:09+00:00</updated>
<entry>
<title>utils: centralize max macro</title>
<updated>2026-09-09T15:42:09+00:00</updated>
<author>
<name>Denys Fedoryshchenko</name>
<email>denys.f@collabora.com</email>
</author>
<published>2026-08-29T23:46:44+00:00</published>
<link rel='alternate' type='text/html' href='https://git.amelek.net/accel-ppp/accel-ppp.git/commit/?id=78d75b1dcf0d42e6ad5ce8b7203a19e17b9c87dc'/>
<id>urn:sha1:78d75b1dcf0d42e6ad5ce8b7203a19e17b9c87dc</id>
<content type='text'>
Closes #354
</content>
</entry>
<entry>
<title>Merge pull request #350 from nuclearcat/pptp-fixes</title>
<updated>2026-08-16T06:13:39+00:00</updated>
<author>
<name>Denys Fedoryshchenko</name>
<email>denys.f@collabora.com</email>
</author>
<published>2026-08-16T06:13:39+00:00</published>
<link rel='alternate' type='text/html' href='https://git.amelek.net/accel-ppp/accel-ppp.git/commit/?id=89637ee2417fc7f42e4213d417da38aa814047e4'/>
<id>urn:sha1:89637ee2417fc7f42e4213d417da38aa814047e4</id>
<content type='text'>
PPTP fixes</content>
</entry>
<entry>
<title>pptp: use the kernel PPPoX UAPI header</title>
<updated>2026-08-09T22:31:12+00:00</updated>
<author>
<name>Denys Fedoryshchenko</name>
<email>denys.f@collabora.com</email>
</author>
<published>2026-08-09T10:33:03+00:00</published>
<link rel='alternate' type='text/html' href='https://git.amelek.net/accel-ppp/accel-ppp.git/commit/?id=9505f3fe72f7930e94aec51188babcabe783e4da'/>
<id>urn:sha1:9505f3fe72f7930e94aec51188babcabe783e4da</id>
<content type='text'>
Linux 2.6.37 and later provide the PPTP socket address and protocol definitions in linux/if_pppox.h. Use that header directly instead of carrying an old private copy containing obsolete kernel-internal declarations.
</content>
</entry>
<entry>
<title>pptp: reject a malformed bind address</title>
<updated>2026-08-09T05:58:08+00:00</updated>
<author>
<name>Denys Fedoryshchenko</name>
<email>denys.f@collabora.com</email>
</author>
<published>2026-08-09T04:16:38+00:00</published>
<link rel='alternate' type='text/html' href='https://git.amelek.net/accel-ppp/accel-ppp.git/commit/?id=9d47f220a09eb30750f85973dc2f0d4157eb78be'/>
<id>urn:sha1:9d47f220a09eb30750f85973dc2f0d4157eb78be</id>
<content type='text'>
An unparsable bind= value went through inet_addr() unchecked and became
255.255.255.255, so the only symptom was bind() failing with "Cannot
assign requested address", which does not point at the configuration.
Parse with inet_aton() and name the offending value instead.

Also zero the address before filling it in, so the padding passed to
bind() is not stack garbage.
</content>
</entry>
<entry>
<title>pptp: pass a proper value to SO_REUSEADDR</title>
<updated>2026-08-09T05:58:08+00:00</updated>
<author>
<name>Denys Fedoryshchenko</name>
<email>denys.f@collabora.com</email>
</author>
<published>2026-08-09T04:16:14+00:00</published>
<link rel='alternate' type='text/html' href='https://git.amelek.net/accel-ppp/accel-ppp.git/commit/?id=0d7cd3a4ae6beed4eab485052a5e27b0772f15c6'/>
<id>urn:sha1:0d7cd3a4ae6beed4eab485052a5e27b0772f15c6</id>
<content type='text'>
The option value was the address of the listening descriptor rather than
a boolean, so the effect depended on the descriptor number: it enabled
SO_REUSEADDR only because that number happened to be non-zero, and would
disable it if the daemon were ever started with the lower descriptors
closed. Use a dedicated flag, as cli/telnet.c does.
</content>
</entry>
<entry>
<title>pptp: make echo-failure=0 disable the check explicitly</title>
<updated>2026-08-09T05:58:08+00:00</updated>
<author>
<name>Denys Fedoryshchenko</name>
<email>denys.f@collabora.com</email>
</author>
<published>2026-08-09T04:15:43+00:00</published>
<link rel='alternate' type='text/html' href='https://git.amelek.net/accel-ppp/accel-ppp.git/commit/?id=a9f666ea84927427a27261b81aa77435d4296d28'/>
<id>urn:sha1:a9f666ea84927427a27261b81aa77435d4296d28</id>
<content type='text'>
load_config() accepts echo-failure=0, but the test for it was
"++echo_sent == conf_echo_failure", which can never match once the
counter has been incremented, so a zero left dead peers undetected
without saying so anywhere. Test the option first and compare with &gt;=,
which keeps the behaviour for every configured value and makes the
disabled case readable, and document it in accel-ppp.conf.5.
</content>
</entry>
<entry>
<title>pptp: fix byte order of peer call id in Call-Disconnect-Notify</title>
<updated>2026-08-09T05:58:08+00:00</updated>
<author>
<name>Denys Fedoryshchenko</name>
<email>denys.f@collabora.com</email>
</author>
<published>2026-08-09T04:07:39+00:00</published>
<link rel='alternate' type='text/html' href='https://git.amelek.net/accel-ppp/accel-ppp.git/commit/?id=d76b2f6c6b8f2c510fae5beb24e261901a221d3c'/>
<id>urn:sha1:d76b2f6c6b8f2c510fae5beb24e261901a221d3c</id>
<content type='text'>
conn-&gt;peer_call_id is assigned msg-&gt;call_id straight from the wire, so it
holds a network order value, but send_pptp_call_disconnect_notify() then
applies htons() to it. On little-endian hosts the field is swapped twice
and a peer call id of 0x1234 is sent as 0x3412, so the peer cannot match
the notify to its call. Big-endian hosts are unaffected, as both swaps
are no-ops there.

Store the call id in host order, which is what the htons() at the point
of use expects. Nothing else reads the field.
</content>
</entry>
<entry>
<title>pptp: check getsockname()/getpeername() results</title>
<updated>2026-08-09T05:58:08+00:00</updated>
<author>
<name>Denys Fedoryshchenko</name>
<email>denys.f@collabora.com</email>
</author>
<published>2026-08-09T04:14:41+00:00</published>
<link rel='alternate' type='text/html' href='https://git.amelek.net/accel-ppp/accel-ppp.git/commit/?id=a62e3abe2aae259f90289b431e086490020d49ed'/>
<id>urn:sha1:a62e3abe2aae259f90289b431e086490020d49ed</id>
<content type='text'>
Both calls were issued on an uninitialised struct sockaddr_in and their
results ignored, so a failure would build the tunnel endpoints, and the
call socket's local call id, out of stack garbage. Fail the call instead.

In pptp_connect() the local address was fetched into the same variable
that held the peer address obtained from accept(), so a failure there
would silently set called-station-id to the calling station. Read it
into its own variable before the connection is set up, and re-arm the
address length before each accept() rather than leaving it at whatever
the previous iteration wrote.
</content>
</entry>
<entry>
<title>pptp: close call socket when Outgoing-Call-Reply cannot be sent</title>
<updated>2026-08-09T05:58:08+00:00</updated>
<author>
<name>Denys Fedoryshchenko</name>
<email>denys.f@collabora.com</email>
</author>
<published>2026-08-09T04:13:45+00:00</published>
<link rel='alternate' type='text/html' href='https://git.amelek.net/accel-ppp/accel-ppp.git/commit/?id=f49ed06b26b2b3ea3a97589be2e51ceb2a084243'/>
<id>urn:sha1:f49ed06b26b2b3ea3a97589be2e51ceb2a084243</id>
<content type='text'>
The PPPoX socket created for the call is only handed to conn-&gt;ppp.fd
after the reply has been posted, so returning early on a post_msg()
failure leaks the descriptor: disconnect() knows nothing about it and
establish_ppp() has not run yet. The establish_ppp() failure path just
below already closes it.
</content>
</entry>
<entry>
<title>pptp: reject control messages shorter than the header</title>
<updated>2026-08-09T05:58:08+00:00</updated>
<author>
<name>Denys Fedoryshchenko</name>
<email>denys.f@collabora.com</email>
</author>
<published>2026-08-09T04:15:01+00:00</published>
<link rel='alternate' type='text/html' href='https://git.amelek.net/accel-ppp/accel-ppp.git/commit/?id=2ad648c3cdde7c5b439abde9566c6dedce966c9e'/>
<id>urn:sha1:2ad648c3cdde7c5b439abde9566c6dedce966c9e</id>
<content type='text'>
PPTP_CTRL_SIZE() evaluates to 0 for unrecognised control types, so a
message declaring length 0 with such a type passed the length check,
reached process_packet() and was logged as unknown, after which
in_size -= 0 consumed nothing. The stale header stayed at the head of
the buffer and every later byte queued behind it, so the connection
could never make progress: it stalled until in_size reached
PPTP_CTRL_SIZE_MAX, at which point read() was called with a zero-length
buffer, returned 0 and was misreported as "disconnect by peer".

Require the declared length to cover the header, alongside the existing
upper bound.
</content>
</entry>
</feed>
