All of lore.kernel.org
 help / color / mirror / Atom feed
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;
 

             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.