[LIBGPG-ERROR PATCH] estream read/write access
NIIBE Yutaka
gniibe at fsij.org
Tue Jun 14 03:18:58 CEST 2016
Hello,
I'm looking at the issue 2371:
https://bugs.gnupg.org/gnupg/issue2371
I think that this bug (in libgpg-error for gpg 2.1) should be fixed
soon.
This bug is revealed by the change of GPG:
https://lists.gnupg.org/pipermail/gnupg-devel/2016-April/031001.html
commit 12af2630cf4d1a39179179925fac8f2cce7504ff
Author: Justus Winter <justus at g10code.com>
Date: Fri Apr 8 19:21:12 2016 +0200
common: Add support for the new extended private key format.
* agent/findkey.c (write_extended_private_key): New function.
(agent_write_private_key): Detect if an existing file is in extended
format and update the key within if it is.
(read_key_file): Handle the new format.
No, this change itself is valid and nothing wrong.
However, this is the first instance for estream to do READ and WRITE
(in the history of the code > 10 years :-). In the function
agent_write_private_key, the pattern is:
es_fopen
es_fread
es_fseek
es_fwrite
which should work well, but if results core dump by assertion failure
in the function es_flush of libgpg-error.
Here is a fix.
diff --git a/src/estream.c b/src/estream.c
index 499cc75..14576d3 100644
--- a/src/estream.c
+++ b/src/estream.c
@@ -2671,6 +2671,7 @@ es_writen (estream_t _GPGRT__RESTRICT stream,
else
goto out;
}
+ stream->flags.writing = 1;
}
}
@@ -2693,9 +2694,6 @@ es_writen (estream_t _GPGRT__RESTRICT stream,
if (bytes_written)
*bytes_written = data_written;
- if (data_written)
- if (!stream->flags.writing)
- stream->flags.writing = 1;
return err;
}
--
More information about the Gnupg-devel
mailing list