From: mole <mole@quadra.ru>
To: linux-ppp@vger.kernel.org
Subject: pppd segfaults on AMD64 with ms-chap
Date: Tue, 08 Jun 2004 07:16:14 +0000 [thread overview]
Message-ID: <40C59FC1.6070007@quadra.ru> (raw)
[-- Attachment #1: Type: text/plain, Size: 688 bytes --]
I am new to this list, sorry if this problem is already solved.
I have tried to use pptp on fedora Core 2 for AMD64 and found that pppd
segfaults on my machine when ms-chap is in use.
If pppd is compiled with openssl's sha then pppd doesn't segfault on
authentication but mppe-enabled kernel then gives me oops in mppe sha code.
The same kernel/pppd work fine in 32 bit mode.
The problem proved to be in the broken sha1 implementation that assumes
that unsigned long is 32-bit wide.
The quick/minimal change to make it all work in 64-bit mode is in the
attached patch. But it looks like the code needs more cleanups to make
it obviously 64-bit safe.
Best,
Oleg Makarenko
[-- Attachment #2: pppd-x86_64.patch --]
[-- Type: text/plain, Size: 1463 bytes --]
diff -urN ppp-2.4.2_cvs_20030610.orig/linux/mppe/sha1.c ppp-2.4.2_cvs_20030610/linux/mppe/sha1.c
--- ppp-2.4.2_cvs_20030610.orig/linux/mppe/sha1.c 2002-04-02 18:01:37.000000000 +0400
+++ ppp-2.4.2_cvs_20030610/linux/mppe/sha1.c 2004-06-08 14:55:46.000000000 +0400
@@ -19,6 +19,7 @@
#if defined(__linux__)
#include <asm/byteorder.h>
#include <linux/string.h>
+#include <linux/types.h>
#else if defined(__solaris__)
#include <sys/isa_defs.h>
#include <sys/ddi.h>
@@ -59,10 +60,10 @@
static void
SHA1_Transform(unsigned long state[5], const unsigned char buffer[64])
{
- unsigned long a, b, c, d, e;
+ u32 a, b, c, d, e;
typedef union {
unsigned char c[64];
- unsigned long l[16];
+ u32 l[16];
} CHAR64LONG16;
CHAR64LONG16 *block;
diff -urN ppp-2.4.2_cvs_20030610.orig/pppd/sha1.c ppp-2.4.2_cvs_20030610/pppd/sha1.c
--- ppp-2.4.2_cvs_20030610.orig/pppd/sha1.c 2002-04-02 17:54:59.000000000 +0400
+++ ppp-2.4.2_cvs_20030610/pppd/sha1.c 2004-06-08 14:54:44.000000000 +0400
@@ -18,6 +18,7 @@
#include <string.h>
#include <netinet/in.h> /* htonl() */
+#include <sys/types.h> /* u_int32_t */
#include "sha1.h"
static void
@@ -44,10 +45,10 @@
static void
SHA1_Transform(unsigned long state[5], const unsigned char buffer[64])
{
- unsigned long a, b, c, d, e;
+ u_int32_t a, b, c, d, e;
typedef union {
unsigned char c[64];
- unsigned long l[16];
+ u_int32_t l[16];
} CHAR64LONG16;
CHAR64LONG16 *block;
next reply other threads:[~2004-06-08 7:16 UTC|newest]
Thread overview: 4+ messages / expand[flat|nested] mbox.gz Atom feed top
2004-06-08 7:16 mole [this message]
2004-06-08 7:20 ` pppd segfaults on AMD64 with ms-chap James Cameron
2004-06-09 5:38 ` Guy Rouillier
2004-06-11 7:59 ` mole
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=40C59FC1.6070007@quadra.ru \
--to=mole@quadra.ru \
--cc=linux-ppp@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.