Fix build with opaque EVP_MD_CTX in LibreSSL 3.5.

Index: stor.c
--- stor.c.orig
+++ stor.c
@@ -136,7 +136,7 @@ stor_file( SNET *sn, char *pathdesc, char *path, off_t
     ssize_t             rr, size = 0;
     unsigned int	md_len;
     extern EVP_MD       *md;
-    EVP_MD_CTX          mdctx;
+    EVP_MD_CTX          *mdctx = NULL;
     unsigned char       md_value[ EVP_MAX_MD_SIZE ];
     char       cksum_b64[ SZ_BASE64_E( EVP_MAX_MD_SIZE ) ];
 
@@ -146,7 +146,12 @@ stor_file( SNET *sn, char *pathdesc, char *path, off_t
 	    fprintf( stderr, "line %d: No checksum listed\n", linenum );
 	    exit( 2 );
         }
-	EVP_DigestInit( &mdctx, md );
+	mdctx = EVP_MD_CTX_new( );
+        if ( mdctx == NULL ) {
+            fprintf( stderr, "EVP_MD_CTX_new failed\n");
+            exit( 2 );
+        }
+	EVP_DigestInit( mdctx, md );
     }
 
     /* Open and stat file */
@@ -197,12 +202,13 @@ stor_file( SNET *sn, char *pathdesc, char *path, off_t
 	if ( snet_write( sn, buf, rr, &tv ) != rr ) {
 	    fprintf( stderr, "stor_file %s failed: %s\n", pathdesc,
 		strerror( errno ));
+	    EVP_MD_CTX_free( mdctx );
 	    return( -1 );
 	}
 	size -= rr;
 	if ( dodots ) { putc( '.', stdout ); fflush( stdout ); }
 	if ( cksum ) {
-	    EVP_DigestUpdate( &mdctx, buf, (unsigned int)rr );
+	    EVP_DigestUpdate( mdctx, buf, (unsigned int)rr );
 	}
 	
 	if ( showprogress ) {
@@ -226,6 +232,7 @@ stor_file( SNET *sn, char *pathdesc, char *path, off_t
     if ( snet_writef( sn, ".\r\n" ) < 0 ) {
 	fprintf( stderr, "stor_file %s failed: %s\n", pathdesc,
 	    strerror( errno ));
+	EVP_MD_CTX_free( mdctx );
 	return( -1 );
     }
     if ( verbose ) fputs( "\n>>> .\n", stdout );
@@ -237,7 +244,7 @@ stor_file( SNET *sn, char *pathdesc, char *path, off_t
 
     /* cksum data sent */
     if ( cksum ) {
-	EVP_DigestFinal( &mdctx, md_value, &md_len );
+	EVP_DigestFinal( mdctx, md_value, &md_len );
 	base64_e( md_value, md_len, cksum_b64 );
         if ( strcmp( trancksum, cksum_b64 ) != 0 ) {
 	    fprintf( stderr,
@@ -247,6 +254,7 @@ stor_file( SNET *sn, char *pathdesc, char *path, off_t
     }
 
     if ( !quiet && !showprogress ) printf( "%s: stored\n", path );
+    EVP_MD_CTX_free( mdctx );
     return( 0 );
 }
 
