Hi guys,

It's been way too long! I'm running CHICKEN 4.9.0.1 and the openssl-egg
segfaults at ssl-load-certificate-chain! and friends.

I have two patches/suggestions:
- remove home path expansion
- use the pathname-expand egg

I need either of these patches to make openssl not segfault on my system.
Any chance of fixing this upstream?

Thanks!
K.
From 8aeb5252f681d472816dc84e6f00f284ce8aa3c9 Mon Sep 17 00:00:00 2001
From: Kristian Lein-Mathisen <kristianl...@gmail.com>
Date: Tue, 19 May 2015 13:22:22 +0200
Subject: [PATCH] bugfix: no home-path expansion

because `##sys#expand-home-path` was removed in something like
4.9.0.1. this variable is unbound and causes a segfault (OBS! no error
saying that ##sys#expand-home-path is not available)
---
 openssl.scm | 14 ++++++--------
 1 file changed, 6 insertions(+), 8 deletions(-)

diff --git a/openssl.scm b/openssl.scm
index db693fe..9e2d57a 100644
--- a/openssl.scm
+++ b/openssl.scm
@@ -42,8 +42,7 @@
    ##sys#current-thread
    ##sys#size
    ##sys#setslot
-   ##sys#check-string
-   ##sys#expand-home-path))
+   ##sys#check-string))
 
 (use srfi-18 tcp)
 
@@ -583,7 +582,7 @@ EOF
   (unless (eq?
 	   ((foreign-lambda
 	     int "SSL_CTX_use_certificate_chain_file" c-pointer c-string)
-	    (ssl-unwrap-context obj) (##sys#expand-home-path pathname))
+	    (ssl-unwrap-context obj) pathname)
 	   1)
     (ssl-abort 'ssl-load-certificate-chain! #f pathname)))
 
@@ -602,7 +601,7 @@ EOF
 	     "  return(SSL_CTX_use_PrivateKey_file("
 	     "           (SSL_CTX *)ctx, path, "
 	     "           (asn1 ? SSL_FILETYPE_ASN1 : SSL_FILETYPE_PEM)));\n")
-	    (ssl-unwrap-context obj) (##sys#expand-home-path pathname)
+	    (ssl-unwrap-context obj) pathname
 	    rsa? asn1?)
 	   1)
     (ssl-abort 'ssl-load-private-key! #f pathname rsa? asn1?)))
@@ -626,8 +625,8 @@ EOF
 	   ((foreign-lambda
 	     int "SSL_CTX_load_verify_locations" c-pointer c-string c-string)
 	    (ssl-unwrap-context obj)
-	    (if pathname (##sys#expand-home-path pathname) #f)
-	    (if dirname (##sys#expand-home-path dirname) #f))
+	    (if pathname pathname #f)
+	    (if dirname dirname #f))
 	   1)
     (ssl-abort 'ssl-load-verify-root-certificates! #f pathname dirname)))
 
@@ -636,8 +635,7 @@ EOF
   (##sys#check-string pathname)
   (ssl-clear-error)
   (cond
-   (((foreign-lambda c-pointer "SSL_load_client_CA_file" c-string)
-     (##sys#expand-home-path pathname))
+   (((foreign-lambda c-pointer "SSL_load_client_CA_file" c-string) pathname)
     => (cut
 	(foreign-lambda
 	 void "SSL_CTX_set_client_CA_list" c-pointer c-pointer)
-- 
2.4.1

From 14254fa5a4e0d9d2084c309abc3cc128950f6919 Mon Sep 17 00:00:00 2001
From: Kristian Lein-Mathisen <kristianl...@gmail.com>
Date: Tue, 19 May 2015 13:31:21 +0200
Subject: [PATCH] bugfix: migrates from ##sys#expand-home-path =>
 pathname-expand

the ##sys#expand-home-path procedure was removed from core around
chicken 4.9.0.1, and put in a separate egg. let's use that egg (or not
expand at all?)

without this patch, ssl-load-certificate-chain! and friends will
segfault! it's trying to call an unbound procedure: ##sys#expand-home-path
---
 openssl.meta |  1 +
 openssl.scm  | 15 +++++++--------
 2 files changed, 8 insertions(+), 8 deletions(-)

diff --git a/openssl.meta b/openssl.meta
index b27c8a2..5904c83 100644
--- a/openssl.meta
+++ b/openssl.meta
@@ -5,5 +5,6 @@
  (author "Thomas Chust")
  (license "BSD")
  (category net)
+ (depends pathname-expand)
  (doc-from-wiki)
  (files "openssl.scm" "openssl.release-info" "openssl.meta" "openssl.setup"))
diff --git a/openssl.scm b/openssl.scm
index db693fe..f7665d4 100644
--- a/openssl.scm
+++ b/openssl.scm
@@ -42,10 +42,9 @@
    ##sys#current-thread
    ##sys#size
    ##sys#setslot
-   ##sys#check-string
-   ##sys#expand-home-path))
+   ##sys#check-string))
 
-(use srfi-18 tcp)
+(use srfi-18 tcp pathname-expand)
 
 #>
 #include <errno.h>
@@ -583,7 +582,7 @@ EOF
   (unless (eq?
 	   ((foreign-lambda
 	     int "SSL_CTX_use_certificate_chain_file" c-pointer c-string)
-	    (ssl-unwrap-context obj) (##sys#expand-home-path pathname))
+	    (ssl-unwrap-context obj) (pathname-expand pathname))
 	   1)
     (ssl-abort 'ssl-load-certificate-chain! #f pathname)))
 
@@ -602,7 +601,7 @@ EOF
 	     "  return(SSL_CTX_use_PrivateKey_file("
 	     "           (SSL_CTX *)ctx, path, "
 	     "           (asn1 ? SSL_FILETYPE_ASN1 : SSL_FILETYPE_PEM)));\n")
-	    (ssl-unwrap-context obj) (##sys#expand-home-path pathname)
+	    (ssl-unwrap-context obj) (pathname-expand pathname)
 	    rsa? asn1?)
 	   1)
     (ssl-abort 'ssl-load-private-key! #f pathname rsa? asn1?)))
@@ -626,8 +625,8 @@ EOF
 	   ((foreign-lambda
 	     int "SSL_CTX_load_verify_locations" c-pointer c-string c-string)
 	    (ssl-unwrap-context obj)
-	    (if pathname (##sys#expand-home-path pathname) #f)
-	    (if dirname (##sys#expand-home-path dirname) #f))
+	    (if pathname (pathname-expand pathname) #f)
+	    (if dirname (pathname-expand dirname) #f))
 	   1)
     (ssl-abort 'ssl-load-verify-root-certificates! #f pathname dirname)))
 
@@ -637,7 +636,7 @@ EOF
   (ssl-clear-error)
   (cond
    (((foreign-lambda c-pointer "SSL_load_client_CA_file" c-string)
-     (##sys#expand-home-path pathname))
+     (pathname-expand pathname))
     => (cut
 	(foreign-lambda
 	 void "SSL_CTX_set_client_CA_list" c-pointer c-pointer)
-- 
2.4.1

_______________________________________________
Chicken-users mailing list
Chicken-users@nongnu.org
https://lists.nongnu.org/mailman/listinfo/chicken-users

Reply via email to