? patch-netpgp_handle_writer_error_handling.diff.txt
Index: writer.c
===================================================================
RCS file: /cvsroot/src/crypto/external/bsd/netpgp/dist/src/lib/writer.c,v
retrieving revision 1.33
diff -u -p -r1.33 writer.c
--- writer.c	5 Mar 2012 02:20:18 -0000	1.33
+++ writer.c	28 Mar 2020 01:44:32 -0000
@@ -1040,10 +1040,17 @@ pgp_push_enc_se_ip(pgp_output_t *output,
 
 	/* Create and write encrypted PK session key */
 	if ((encrypted_pk_sesskey = pgp_create_pk_sesskey(pubkey, cipher)) == NULL) {
+		free(se_ip);
 		(void) fprintf(stderr, "pgp_push_enc_se_ip: null pk sesskey\n");
 		return 0;
 	}
-	pgp_write_pk_sesskey(output, encrypted_pk_sesskey);
+
+	if (pgp_write_pk_sesskey(output, encrypted_pk_sesskey) == 0) {
+		free(se_ip);
+		(void) fprintf(stderr, "pgp_push_enc_se_ip: failed to write session key\n");
+		return 0;
+
+	}
 
 	/* Setup the se_ip */
 	if ((encrypted = calloc(1, sizeof(*encrypted))) == NULL) {