<pre style='margin:0'>
Joshua Root (jmroot) pushed a commit to branch master
in repository macports-ports.

</pre>
<p><a href="https://github.com/macports/macports-ports/commit/164fb32e7bc255dabcad2a236b248f1a0d203bd1">https://github.com/macports/macports-ports/commit/164fb32e7bc255dabcad2a236b248f1a0d203bd1</a></p>
<pre style="white-space: pre; background: #F8F8F8">The following commit(s) were added to refs/heads/master by this push:
<span style='display:block; white-space:pre;color:#404040;'>     new 164fb32  radmind: update to 1.14.1
</span>164fb32 is described below

<span style='display:block; white-space:pre;color:#808000;'>commit 164fb32e7bc255dabcad2a236b248f1a0d203bd1
</span>Author: Joshua Root <jmr@macports.org>
AuthorDate: Wed Jan 29 08:57:53 2020 +1100

<span style='display:block; white-space:pre;color:#404040;'>    radmind: update to 1.14.1
</span>---
 net/radmind/Portfile              |  19 ++-
 net/radmind/files/cksum.c.patch   | 121 ++++++++++++++++
 net/radmind/files/configure.patch | 112 +++++++++++++++
 net/radmind/files/retr.c.patch    | 284 ++++++++++++++++++++++++++++++++++++++
 net/radmind/files/stor.c.patch    | 177 ++++++++++++++++++++++++
 5 files changed, 708 insertions(+), 5 deletions(-)

<span style='display:block; white-space:pre;color:#808080;'>diff --git a/net/radmind/Portfile b/net/radmind/Portfile
</span><span style='display:block; white-space:pre;color:#808080;'>index 923dd8b..e7a332c 100644
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>--- a/net/radmind/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/net/radmind/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -1,8 +1,7 @@
</span> PortSystem                1.0
 
 name                   radmind
<span style='display:block; white-space:pre;background:#ffe0e0;'>-version                 1.11.1
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-revision        3
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+version                    1.14.1
</span> categories                net sysutils
 license                        BSD
 maintainers            nomaintainer
<span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -17,15 +16,25 @@ long_description     A suite of Unix command-line tools and a server \
</span>                                   is detected, radmind can optionally reverse the \
                                        change.
 platforms              darwin
<span style='display:block; white-space:pre;background:#ffe0e0;'>-homepage                http://rsug.itd.umich.edu/software/radmind
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-master_sites       sourceforge
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>-checksums          md5 62419551c6b83873f10b5eb4462cd007
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+homepage           http://www.radmind.org
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+master_sites       sourceforge:project/radmind/radmind/radmind-${version}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+checksums          md5 8682217b757b3831e1c085d768d7e811 \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                rmd160 6b925083ef9dce2de21ebb0ffef287b1ffe9173d \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                sha256 92ce3d586245b107bf4e412b59eb02ec3e57b4d12a0b9a16b0fadf10983ed21f
</span> 
 depends_lib            path:lib/libssl.dylib:openssl port:zlib
 
<span style='display:block; white-space:pre;background:#e0ffe0;'>+patchfiles      configure.patch \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                cksum.c.patch \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                retr.c.patch \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                stor.c.patch
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span> configure.args    --mandir='\${prefix}/share/man' \
                                --with-radminddir='\${prefix}/var/radmind'
 
<span style='display:block; white-space:pre;background:#e0ffe0;'>+# tries to link with libsnet before building it
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+use_parallel_build  no
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span> destroot.keepdirs ${destroot}${prefix}/var/radmind/cert \
                                        ${destroot}${prefix}/var/radmind/client \
                                        ${destroot}${prefix}/var/radmind/command \
<span style='display:block; white-space:pre;color:#808080;'>diff --git a/net/radmind/files/cksum.c.patch b/net/radmind/files/cksum.c.patch
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 0000000..6af7a43
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/net/radmind/files/cksum.c.patch
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,121 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- cksum.c.orig   2010-12-13 14:42:49.000000000 +1100
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ cksum.c        2020-01-29 08:49:22.000000000 +1100
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -41,20 +41,26 @@ do_fcksum( int fd, char *cksum_b64 )
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     off_t         size = 0;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     unsigned char buf[ 8192 ];
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     extern EVP_MD *md;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-    EVP_MD_CTX            mdctx;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    EVP_MD_CTX            *mdctx;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     unsigned char         md_value[ EVP_MAX_MD_SIZE ];
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-    EVP_DigestInit( &mdctx, md );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    mdctx = EVP_MD_CTX_new();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    if (!mdctx) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        return( -1 );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    EVP_DigestInit( mdctx, md );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     while (( rr = read( fd, buf, sizeof( buf ))) > 0 ) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   size += rr;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-  EVP_DigestUpdate( &mdctx, buf, (unsigned int)rr );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  EVP_DigestUpdate( mdctx, buf, (unsigned int)rr );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     if ( rr < 0 ) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  EVP_MD_CTX_free( mdctx );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   return( -1 );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-    EVP_DigestFinal( &mdctx, md_value, &md_len );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    EVP_DigestFinal( mdctx, md_value, &md_len );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    EVP_MD_CTX_free( mdctx );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     base64_e( md_value, md_len, cksum_b64 );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     return( size );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -103,13 +109,17 @@ do_acksum( char *path, char *cksum_b64, 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     struct as_entry               as_entries_endian[ 3 ];
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     unsigned int          md_len;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     extern EVP_MD         *md;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-    EVP_MD_CTX            mdctx;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    EVP_MD_CTX            *mdctx;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     unsigned char         md_value[ EVP_MAX_MD_SIZE ];
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-    EVP_DigestInit( &mdctx, md ); 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    mdctx = EVP_MD_CTX_new();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    if (!mdctx) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        return( -1 );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    EVP_DigestInit( mdctx, md ); 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     /* checksum applesingle header */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-    EVP_DigestUpdate( &mdctx, (char *)&as_header, AS_HEADERLEN );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    EVP_DigestUpdate( mdctx, (char *)&as_header, AS_HEADERLEN );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     size += (size_t)AS_HEADERLEN;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     /* endian handling, sum big-endian header entries */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -120,53 +130,61 @@ do_acksum( char *path, char *cksum_b64, 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     as_entry_netswap( &as_entries_endian[ AS_DFE ] );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     /* checksum header entries */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-    EVP_DigestUpdate( &mdctx, (char *)&as_entries_endian,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    EVP_DigestUpdate( mdctx, (char *)&as_entries_endian,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+           (unsigned int)( 3 * sizeof( struct as_entry )));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     size += sizeof( 3 * sizeof( struct as_entry ));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     /* checksum finder info data */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-    EVP_DigestUpdate( &mdctx, afinfo->ai.ai_data, FINFOLEN );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    EVP_DigestUpdate( mdctx, afinfo->ai.ai_data, FINFOLEN );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     size += FINFOLEN;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     /* checksum rsrc fork data */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     if ( afinfo->as_ents[ AS_RFE ].ae_length > 0 ) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         if ( snprintf( rsrc_path, MAXPATHLEN, "%s%s",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+           path, _PATH_RSRCFORKSPEC ) >= MAXPATHLEN ) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            EVP_MD_CTX_free( mdctx );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             errno = ENAMETOOLONG;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             return( -1 );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   if (( rfd = open( rsrc_path, O_RDONLY )) < 0 ) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++      EVP_MD_CTX_free( mdctx );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+       return( -1 );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   while (( rc = read( rfd, buf, sizeof( buf ))) > 0 ) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-      EVP_DigestUpdate( &mdctx, buf, (unsigned int)rc );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++      EVP_DigestUpdate( mdctx, buf, (unsigned int)rc );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+       size += (size_t)rc;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   if ( close( rfd ) < 0 ) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++      EVP_MD_CTX_free( mdctx );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+       return( -1 );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   if ( rc < 0 ) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++      EVP_MD_CTX_free( mdctx );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+       return( -1 );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     if (( dfd = open( path, O_RDONLY, 0 )) < 0 ) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  EVP_MD_CTX_free( mdctx );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   return( -1 );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     /* checksum data fork */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     while (( rc = read( dfd, buf, sizeof( buf ))) > 0 ) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-  EVP_DigestUpdate( &mdctx, buf, (unsigned int)rc );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  EVP_DigestUpdate( mdctx, buf, (unsigned int)rc );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   size += (size_t)rc;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     if ( rc < 0 ) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  EVP_MD_CTX_free( mdctx );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   return( -1 );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     if ( close( dfd ) < 0 ) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  EVP_MD_CTX_free( mdctx );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   return( -1 );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-    EVP_DigestFinal( &mdctx, md_value, &md_len );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    EVP_DigestFinal( mdctx, md_value, &md_len );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    EVP_MD_CTX_free( mdctx );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     base64_e( ( char*)&md_value, md_len, cksum_b64 );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     return( size );
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/net/radmind/files/configure.patch b/net/radmind/files/configure.patch
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 0000000..8f5d43f
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/net/radmind/files/configure.patch
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,112 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- configure.orig 2010-12-13 14:49:48.000000000 +1100
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ configure      2020-01-29 07:09:44.000000000 +1100
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -5203,9 +5203,9 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-{ echo "$as_me:$LINENO: checking for SSLeay_version in -lcrypto" >&5
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-echo $ECHO_N "checking for SSLeay_version in -lcrypto... $ECHO_C" >&6; }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-if test "${ac_cv_lib_crypto_SSLeay_version+set}" = set; then
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++{ echo "$as_me:$LINENO: checking for OpenSSL_version in -lcrypto" >&5
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++echo $ECHO_N "checking for OpenSSL_version in -lcrypto... $ECHO_C" >&6; }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++if test "${ac_cv_lib_crypto_OpenSSL_version+set}" = set; then
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   echo $ECHO_N "(cached) $ECHO_C" >&6
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ else
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   ac_check_lib_save_LIBS=$LIBS
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -5223,11 +5223,11 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #ifdef __cplusplus
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ extern "C"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-char SSLeay_version ();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++char OpenSSL_version ();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ int
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ main ()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-return SSLeay_version ();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++return OpenSSL_version ();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   ;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   return 0;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -5250,21 +5250,21 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    test ! -s conftest.err
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        } && test -s conftest$ac_exeext &&
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        $as_test_x conftest$ac_exeext; then
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-  ac_cv_lib_crypto_SSLeay_version=yes
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  ac_cv_lib_crypto_OpenSSL_version=yes
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ else
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   echo "$as_me: failed program was:" >&5
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ sed 's/^/| /' conftest.$ac_ext >&5
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-  ac_cv_lib_crypto_SSLeay_version=no
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  ac_cv_lib_crypto_OpenSSL_version=no
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ fi
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+       conftest$ac_exeext conftest.$ac_ext
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ LIBS=$ac_check_lib_save_LIBS
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ fi
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-{ echo "$as_me:$LINENO: result: $ac_cv_lib_crypto_SSLeay_version" >&5
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-echo "${ECHO_T}$ac_cv_lib_crypto_SSLeay_version" >&6; }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-if test $ac_cv_lib_crypto_SSLeay_version = yes; then
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++{ echo "$as_me:$LINENO: result: $ac_cv_lib_crypto_OpenSSL_version" >&5
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++echo "${ECHO_T}$ac_cv_lib_crypto_OpenSSL_version" >&6; }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++if test $ac_cv_lib_crypto_OpenSSL_version = yes; then
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   cat >>confdefs.h <<_ACEOF
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #define HAVE_LIBCRYPTO 1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ _ACEOF
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- libsnet/configure.orig 2010-12-13 14:43:02.000000000 +1100
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ libsnet/configure      2020-01-29 07:12:25.000000000 +1100
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -3090,9 +3090,9 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ fi
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-{ echo "$as_me:$LINENO: checking for SSLeay_version in -lcrypto" >&5
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-echo $ECHO_N "checking for SSLeay_version in -lcrypto... $ECHO_C" >&6; }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-if test "${ac_cv_lib_crypto_SSLeay_version+set}" = set; then
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++{ echo "$as_me:$LINENO: checking for OpenSSL_version in -lcrypto" >&5
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++echo $ECHO_N "checking for OpenSSL_version in -lcrypto... $ECHO_C" >&6; }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++if test "${ac_cv_lib_crypto_OpenSSL_version+set}" = set; then
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   echo $ECHO_N "(cached) $ECHO_C" >&6
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ else
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   ac_check_lib_save_LIBS=$LIBS
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -3110,11 +3110,11 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #ifdef __cplusplus
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ extern "C"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-char SSLeay_version ();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++char OpenSSL_version ();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ int
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ main ()
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-return SSLeay_version ();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++return OpenSSL_version ();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   ;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   return 0;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -3137,21 +3137,21 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+    test ! -s conftest.err
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        } && test -s conftest$ac_exeext &&
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+        $as_test_x conftest$ac_exeext; then
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-  ac_cv_lib_crypto_SSLeay_version=yes
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  ac_cv_lib_crypto_OpenSSL_version=yes
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ else
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   echo "$as_me: failed program was:" >&5
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ sed 's/^/| /' conftest.$ac_ext >&5
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-  ac_cv_lib_crypto_SSLeay_version=no
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  ac_cv_lib_crypto_OpenSSL_version=no
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ fi
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ rm -f core conftest.err conftest.$ac_objext conftest_ipa8_conftest.oo \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+       conftest$ac_exeext conftest.$ac_ext
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ LIBS=$ac_check_lib_save_LIBS
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ fi
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-{ echo "$as_me:$LINENO: result: $ac_cv_lib_crypto_SSLeay_version" >&5
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-echo "${ECHO_T}$ac_cv_lib_crypto_SSLeay_version" >&6; }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-if test $ac_cv_lib_crypto_SSLeay_version = yes; then
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++{ echo "$as_me:$LINENO: result: $ac_cv_lib_crypto_OpenSSL_version" >&5
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++echo "${ECHO_T}$ac_cv_lib_crypto_OpenSSL_version" >&6; }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++if test $ac_cv_lib_crypto_OpenSSL_version = yes; then
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   cat >>confdefs.h <<_ACEOF
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ #define HAVE_LIBCRYPTO 1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ _ACEOF
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/net/radmind/files/retr.c.patch b/net/radmind/files/retr.c.patch
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 0000000..560e5e6
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/net/radmind/files/retr.c.patch
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,284 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- retr.c.orig    2010-12-13 14:42:49.000000000 +1100
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ retr.c 2020-01-29 08:52:28.000000000 +1100
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -74,7 +74,7 @@ retr( SNET *sn, char *pathdesc, char *pa
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     char          buf[ 8192 ]; 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     ssize_t               rr;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     extern EVP_MD *md;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-    EVP_MD_CTX            mdctx;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    EVP_MD_CTX            *mdctx = NULL;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     unsigned char md_value[ EVP_MAX_MD_SIZE ];
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     char          cksum_b64[ SZ_BASE64_E( EVP_MAX_MD_SIZE ) ];
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -84,13 +84,18 @@ retr( SNET *sn, char *pathdesc, char *pa
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+       fprintf( stderr, "%s\n", pathdesc );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+       return( 1 );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-  EVP_DigestInit( &mdctx, md );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  mdctx = EVP_MD_CTX_new();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  if (!mdctx) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        return( 1 );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  EVP_DigestInit( mdctx, md );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     if ( verbose ) printf( ">>> RETR %s\n", pathdesc );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     if ( snet_writef( sn, "RETR %s\n", pathdesc ) < 0 ) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   fprintf( stderr, "retrieve %s failed: 1-%s\n", pathdesc,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+       strerror( errno ));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  EVP_MD_CTX_free( mdctx );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   return( -1 );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -98,11 +103,13 @@ retr( SNET *sn, char *pathdesc, char *pa
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     if (( line = snet_getline_multi( sn, logger, &tv )) == NULL ) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   fprintf( stderr, "retrieve %s failed: 2-%s\n", pathdesc,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+       strerror( errno ));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  EVP_MD_CTX_free( mdctx );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   return( -1 );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     if ( *line != '2' ) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   fprintf( stderr, "%s\n", line );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  EVP_MD_CTX_free( mdctx );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   return( 1 );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -111,6 +118,7 @@ retr( SNET *sn, char *pathdesc, char *pa
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     if (( line = snet_getline( sn, &tv )) == NULL ) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   fprintf( stderr, "retrieve %s failed: 3-%s\n", pathdesc,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+       strerror( errno ));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  EVP_MD_CTX_free( mdctx );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   return( -1 );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     size = strtoofft( line, NULL, 10 );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -119,6 +127,7 @@ retr( SNET *sn, char *pathdesc, char *pa
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   fprintf( stderr, "line %d: size in transcript does not match size "
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+       "from server\n", linenum );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   fprintf( stderr, "%s\n", pathdesc );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  EVP_MD_CTX_free( mdctx );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   return( -1 );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -127,6 +136,7 @@ retr( SNET *sn, char *pathdesc, char *pa
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+       path, getpid()) >= MAXPATHLEN ) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   fprintf( stderr, "%s.radmind.%i: too long", path,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+           (int)getpid());
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  EVP_MD_CTX_free( mdctx );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   return( -1 );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     /* Open file */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -135,14 +145,17 @@ retr( SNET *sn, char *pathdesc, char *pa
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+       errno = 0;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+       if ( mkprefix( temppath ) != 0 ) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+           perror( temppath );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++          EVP_MD_CTX_free( mdctx );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+           return( -1 );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+       }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+       if (( fd = open( temppath, O_WRONLY | O_CREAT, tempmode )) < 0 ) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+           perror( temppath );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++          EVP_MD_CTX_free( mdctx );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+           return( -1 );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+       }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   } else {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+       perror( temppath );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++      EVP_MD_CTX_free( mdctx );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+       return( -1 );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -165,7 +178,7 @@ retr( SNET *sn, char *pathdesc, char *pa
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+       goto error2;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   if ( cksum ) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-      EVP_DigestUpdate( &mdctx, buf, (unsigned int)rr );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++      EVP_DigestUpdate( mdctx, buf, (unsigned int)rr );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   if ( dodots ) { putc( '.', stdout ); fflush( stdout ); }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   size -= rr;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -197,7 +210,9 @@ retr( SNET *sn, char *pathdesc, char *pa
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     /* cksum file */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     if ( cksum ) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-  EVP_DigestFinal( &mdctx, md_value, &md_len );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  EVP_DigestFinal( mdctx, md_value, &md_len );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  EVP_MD_CTX_free( mdctx );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  mdctx = NULL;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   base64_e( md_value, md_len, cksum_b64 );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   if ( strcmp( trancksum, cksum_b64 ) != 0 ) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+       fprintf( stderr, "line %d: checksum in transcript does not match "
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -213,6 +228,7 @@ retr( SNET *sn, char *pathdesc, char *pa
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ error2:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     close( fd );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ error1:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    EVP_MD_CTX_free( mdctx );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     unlink( temppath );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     return( returnval );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -246,7 +262,7 @@ retr_applefile( SNET *sn, char *pathdesc
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     struct as_entry               ae_ents[ 3 ]; 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     struct timeval                tv;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     extern EVP_MD         *md;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-    EVP_MD_CTX            mdctx;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    EVP_MD_CTX            *mdctx = NULL;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     unsigned char         md_value[ EVP_MAX_MD_SIZE ];
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     char                  cksum_b64[ SZ_BASE64_E( EVP_MAX_MD_SIZE ) ];
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -256,13 +272,18 @@ retr_applefile( SNET *sn, char *pathdesc
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+       fprintf( stderr, "%s\n", pathdesc );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             return( 1 );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-        EVP_DigestInit( &mdctx, md );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        mdctx = EVP_MD_CTX_new();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        if (!mdctx) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            return( 1 );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        EVP_DigestInit( mdctx, md );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     if ( verbose ) printf( ">>> RETR %s\n", pathdesc );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     if ( snet_writef( sn, "RETR %s\n", pathdesc ) < 0 ) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   fprintf( stderr, "retrieve applefile %s failed: 1-%s\n", pathdesc,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+       strerror( errno ));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  EVP_MD_CTX_free( mdctx );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   return( -1 );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -270,11 +291,13 @@ retr_applefile( SNET *sn, char *pathdesc
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     if (( line = snet_getline_multi( sn, logger, &tv )) == NULL ) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   fprintf( stderr, "retrieve applefile %s failed: 2-%s\n", pathdesc,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+       strerror( errno ));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  EVP_MD_CTX_free( mdctx );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   return( -1 );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     if ( *line != '2' ) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         fprintf( stderr, "%s\n", line );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        EVP_MD_CTX_free( mdctx );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         return( 1 );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -283,6 +306,7 @@ retr_applefile( SNET *sn, char *pathdesc
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     if (( line = snet_getline( sn, &tv )) == NULL ) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   fprintf( stderr, "retrieve applefile %s failed: 3-%s\n", pathdesc,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+       strerror( errno ));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  EVP_MD_CTX_free( mdctx );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   return( -1 );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     size = strtoofft( line, NULL, 10 );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -291,6 +315,7 @@ retr_applefile( SNET *sn, char *pathdesc
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   fprintf( stderr, "line %d: size in transcript does not match size"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+       "from server\n", linenum );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   fprintf( stderr, "%s\n", pathdesc );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  EVP_MD_CTX_free( mdctx );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   return( -1 );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     }  
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     if ( size < ( AS_HEADERLEN + ( 3 * sizeof( struct as_entry )) +
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -298,6 +323,7 @@ retr_applefile( SNET *sn, char *pathdesc
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   fprintf( stderr,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+       "retrieve applefile %s failed: AppleSingle-encoded file too "
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+       "short\n", path );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  EVP_MD_CTX_free( mdctx );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   return( -1 );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -306,6 +332,7 @@ retr_applefile( SNET *sn, char *pathdesc
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     if (( rc = snet_read( sn, ( char * )&ah, AS_HEADERLEN, &tv )) <= 0 ) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   fprintf( stderr, "retrieve applefile %s failed: 4-%s\n", pathdesc,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+       strerror( errno ));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  EVP_MD_CTX_free( mdctx );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   return( -1 );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     if (( rc != AS_HEADERLEN ) ||
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -313,16 +340,18 @@ retr_applefile( SNET *sn, char *pathdesc
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   fprintf( stderr,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+       "retrieve applefile %s failed: corrupt AppleSingle-encoded file\n",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+       path );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  EVP_MD_CTX_free( mdctx );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   return( -1 );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     if ( cksum ) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-  EVP_DigestUpdate( &mdctx, (char *)&ah, (unsigned int)rc );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  EVP_DigestUpdate( mdctx, (char *)&ah, (unsigned int)rc );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     /* name temp file */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     if ( snprintf( temppath, MAXPATHLEN, "%s.radmind.%i", path,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+       getpid()) >= MAXPATHLEN ) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   fprintf( stderr, "%s.radmind.%i: too long", path, ( int )getpid());
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  EVP_MD_CTX_free( mdctx );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   return( -1 );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -333,15 +362,18 @@ retr_applefile( SNET *sn, char *pathdesc
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+       errno = 0;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+       if ( mkprefix( temppath ) != 0 ) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+           perror( temppath );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++          EVP_MD_CTX_free( mdctx );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+           return( -1 );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+       }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+       if (( dfd = open( temppath, O_CREAT | O_EXCL | O_WRONLY,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+               tempmode )) < 0 ) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+           perror( temppath );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++          EVP_MD_CTX_free( mdctx );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+           return( -1 );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+       }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   } else {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+       perror( temppath );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++      EVP_MD_CTX_free( mdctx );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+       return( -1 );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -373,7 +405,7 @@ retr_applefile( SNET *sn, char *pathdesc
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     /* Should we check for valid ae_ents here? YES! */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     if ( cksum ) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-  EVP_DigestUpdate( &mdctx, (char *)&ae_ents, (unsigned int)rc );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  EVP_DigestUpdate( mdctx, (char *)&ae_ents, (unsigned int)rc );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     if ( dodots ) { putc( '.', stdout ); fflush( stdout ); }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -398,7 +430,7 @@ retr_applefile( SNET *sn, char *pathdesc
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   goto error2;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     if ( cksum ) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-  EVP_DigestUpdate( &mdctx, finfo, (unsigned int)rc );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  EVP_DigestUpdate( mdctx, finfo, (unsigned int)rc );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     if ( dodots ) { putc( '.', stdout ); fflush( stdout ); }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     size -= rc;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -448,7 +480,7 @@ retr_applefile( SNET *sn, char *pathdesc
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+           goto error3;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+       }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+       if ( cksum ) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-          EVP_DigestUpdate( &mdctx, buf, (unsigned int)rc );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++          EVP_DigestUpdate( mdctx, buf, (unsigned int)rc );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+       }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+       if ( dodots ) { putc( '.', stdout ); fflush( stdout ); }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+       if ( showprogress ) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -482,7 +514,7 @@ retr_applefile( SNET *sn, char *pathdesc
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   if ( cksum ) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-      EVP_DigestUpdate( &mdctx, buf, (unsigned int)rc );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++      EVP_DigestUpdate( mdctx, buf, (unsigned int)rc );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   if ( dodots ) { putc( '.', stdout ); fflush( stdout); }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   if ( showprogress ) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -523,7 +555,9 @@ retr_applefile( SNET *sn, char *pathdesc
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     if ( verbose ) printf( "<<< .\n" );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     if ( cksum ) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-  EVP_DigestFinal( &mdctx, md_value, &md_len );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  EVP_DigestFinal( mdctx, md_value, &md_len );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  EVP_MD_CTX_free( mdctx );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  mdctx = NULL;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   base64_e(( char*)&md_value, md_len, cksum_b64 );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         if ( strcmp( trancksum, cksum_b64 ) != 0 ) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+       fprintf( stderr, "line %d: checksum in transcript does not match "
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -541,6 +575,7 @@ error3:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ error2:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     close( dfd );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ error1:
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    EVP_MD_CTX_free( mdctx );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     unlink( temppath );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     return( returnval );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ }
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/net/radmind/files/stor.c.patch b/net/radmind/files/stor.c.patch
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 0000000..d80f1ea
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/net/radmind/files/stor.c.patch
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,177 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- stor.c.orig    2010-12-13 14:42:49.000000000 +1100
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ stor.c 2020-01-29 08:56:26.000000000 +1100
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -136,7 +136,7 @@ stor_file( SNET *sn, char *pathdesc, cha
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     ssize_t             rr, size = 0;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     unsigned int  md_len;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     extern EVP_MD       *md;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-    EVP_MD_CTX          mdctx;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    EVP_MD_CTX          *mdctx = NULL;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     unsigned char       md_value[ EVP_MAX_MD_SIZE ];
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     char       cksum_b64[ SZ_BASE64_E( EVP_MAX_MD_SIZE ) ];
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -146,7 +146,12 @@ stor_file( SNET *sn, char *pathdesc, cha
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+       fprintf( stderr, "line %d: No checksum listed\n", linenum );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+       exit( 2 );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-  EVP_DigestInit( &mdctx, md );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  mdctx = EVP_MD_CTX_new();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  if (!mdctx) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++      perror(NULL);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        exit( 2 );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  EVP_DigestInit( mdctx, md );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     /* Open and stat file */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -197,12 +202,13 @@ stor_file( SNET *sn, char *pathdesc, cha
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   if ( snet_write( sn, buf, rr, &tv ) != rr ) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+       fprintf( stderr, "stor_file %s failed: %s\n", pathdesc,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+           strerror( errno ));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++          EVP_MD_CTX_free( mdctx );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+       return( -1 );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   size -= rr;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   if ( dodots ) { putc( '.', stdout ); fflush( stdout ); }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   if ( cksum ) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-      EVP_DigestUpdate( &mdctx, buf, (unsigned int)rr );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++      EVP_DigestUpdate( mdctx, buf, (unsigned int)rr );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   if ( showprogress ) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -226,6 +232,7 @@ stor_file( SNET *sn, char *pathdesc, cha
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     if ( snet_writef( sn, ".\r\n" ) < 0 ) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   fprintf( stderr, "stor_file %s failed: %s\n", pathdesc,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+       strerror( errno ));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  EVP_MD_CTX_free( mdctx );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   return( -1 );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     if ( verbose ) fputs( "\n>>> .\n", stdout );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -237,7 +244,8 @@ stor_file( SNET *sn, char *pathdesc, cha
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     /* cksum data sent */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     if ( cksum ) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-  EVP_DigestFinal( &mdctx, md_value, &md_len );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  EVP_DigestFinal( mdctx, md_value, &md_len );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  EVP_MD_CTX_free( mdctx );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   base64_e( md_value, md_len, cksum_b64 );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         if ( strcmp( trancksum, cksum_b64 ) != 0 ) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+       fprintf( stderr,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -262,7 +270,7 @@ stor_applefile( SNET *sn, char *pathdesc
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     unsigned int          md_len;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     unsigned int  rsrc_len;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     extern EVP_MD         *md;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-    EVP_MD_CTX            mdctx;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++    EVP_MD_CTX            *mdctx = NULL;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     unsigned char         md_value[ EVP_MAX_MD_SIZE ];
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     char          cksum_b64[ EVP_MAX_MD_SIZE ];
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -272,7 +280,12 @@ stor_applefile( SNET *sn, char *pathdesc
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+       fprintf( stderr, "line %d: No checksum listed\n", linenum );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+       exit( 2 );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-        EVP_DigestInit( &mdctx, md );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        mdctx = EVP_MD_CTX_new();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        if (!mdctx) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            perror(NULL);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            exit( 2 );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        EVP_DigestInit( mdctx, md );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     /* Check size listed in transcript */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -303,6 +316,7 @@ stor_applefile( SNET *sn, char *pathdesc
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         if ( snprintf( rsrc_path, MAXPATHLEN, "%s%s",
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+           path, _PATH_RSRCFORKSPEC ) >= MAXPATHLEN ) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             errno = ENAMETOOLONG;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            EVP_MD_CTX_free( mdctx );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             return( -1 );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   if (( rfd = open( rsrc_path, O_RDONLY )) < 0 ) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -335,11 +349,12 @@ stor_applefile( SNET *sn, char *pathdesc
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+           AS_HEADERLEN  ) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   fprintf( stderr, "stor_applefile %s failed: %s\n", pathdesc,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+       strerror( errno ));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  EVP_MD_CTX_free( mdctx );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   return( -1 );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     size -= AS_HEADERLEN;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     if ( cksum ) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-  EVP_DigestUpdate( &mdctx, (char *)&as_header, AS_HEADERLEN );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  EVP_DigestUpdate( mdctx, (char *)&as_header, AS_HEADERLEN );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     if ( dodots ) { putc( '.', stdout ); fflush( stdout ); }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     if ( showprogress ) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -353,11 +368,12 @@ stor_applefile( SNET *sn, char *pathdesc
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+           != ( 3 * sizeof( struct as_entry ))) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   fprintf( stderr, "stor_applefile %s failed: %s\n", pathdesc,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+       strerror( errno ));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  EVP_MD_CTX_free( mdctx );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   return( -1 );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     size -= ( 3 * sizeof( struct as_entry ));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     if ( cksum ) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-  EVP_DigestUpdate( &mdctx, (char *)&afinfo->as_ents,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  EVP_DigestUpdate( mdctx, (char *)&afinfo->as_ents,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+       (unsigned int)( 3 * sizeof( struct as_entry )));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     if ( dodots ) { putc( '.', stdout ); fflush( stdout ); }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -371,11 +387,12 @@ stor_applefile( SNET *sn, char *pathdesc
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+       &tv ) != FINFOLEN ) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   fprintf( stderr, "stor_applefile %s failed: %s\n", pathdesc,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+       strerror( errno ));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  EVP_MD_CTX_free( mdctx );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   return( -1 );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     size -= FINFOLEN;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     if ( cksum ) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-  EVP_DigestUpdate( &mdctx, afinfo->ai.ai_data, FINFOLEN );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  EVP_DigestUpdate( mdctx, afinfo->ai.ai_data, FINFOLEN );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     if ( dodots ) { putc( '.', stdout ); fflush( stdout ); }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     if ( showprogress ) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -389,11 +406,12 @@ stor_applefile( SNET *sn, char *pathdesc
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+       if ( snet_write( sn, buf, rc, &tv ) != rc ) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+           fprintf( stderr, "stor_applefile %s failed: %s\n", pathdesc,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+               strerror( errno ));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++          EVP_MD_CTX_free( mdctx );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+           return( -1 );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+       }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+       size -= rc;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+       if ( cksum ) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-          EVP_DigestUpdate( &mdctx, buf, (unsigned int)rc );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++          EVP_DigestUpdate( mdctx, buf, (unsigned int)rc );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+       } 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+       if ( dodots ) { putc( '.', stdout ); fflush( stdout ); }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+       if ( showprogress ) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -413,11 +431,12 @@ stor_applefile( SNET *sn, char *pathdesc
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   if ( snet_write( sn, buf, rc, &tv ) != rc ) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+       fprintf( stderr, "stor_applefile %s failed: %s\n", pathdesc,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+           strerror( errno ));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++      EVP_MD_CTX_free( mdctx );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+       return( -1 );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   size -= rc;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   if ( cksum ) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-      EVP_DigestUpdate( &mdctx, buf, (unsigned int)rc );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++      EVP_DigestUpdate( mdctx, buf, (unsigned int)rc );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+           if ( dodots ) { putc( '.', stdout ); fflush( stdout ); }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   if ( showprogress ) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -442,6 +461,7 @@ stor_applefile( SNET *sn, char *pathdesc
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     if ( snet_writef( sn, ".\r\n" ) < 0 ) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   fprintf( stderr, "stor_applefile %s failed: %s\n", pathdesc,
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+       strerror( errno ));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++  EVP_MD_CTX_free( mdctx );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+   return( -1 );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     if ( verbose ) fputs( "\n>>> .\n", stdout );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -463,7 +483,8 @@ stor_applefile( SNET *sn, char *pathdesc
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     /* cksum data sent */
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+     if ( cksum ) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-        EVP_DigestFinal( &mdctx, md_value, &md_len );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        EVP_DigestFinal( mdctx, md_value, &md_len );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++        EVP_MD_CTX_free( mdctx );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         base64_e( ( char*)&md_value, md_len, cksum_b64 );
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         if ( strcmp( trancksum, cksum_b64 ) != 0 ) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+       fprintf( stderr,
</span></pre><pre style='margin:0'>

</pre>