diff options
author | NIIBE Yutaka <gniibe@fsij.org> | 2016-06-15 11:44:35 +0200 |
---|---|---|
committer | Werner Koch <wk@gnupg.org> | 2016-06-15 11:44:35 +0200 |
commit | 28fd0ab40739e8cb73f208e30f78d8aa7a0a6d19 (patch) | |
tree | ab2194d448861ba0e1d7a32ed005e9f3f93f4c28 /src/estream.c | |
parent | baf4bcc0973c8b04bd760aaab0f4232c9354e203 (diff) | |
download | libgpg-error-28fd0ab40739e8cb73f208e30f78d8aa7a0a6d19.tar.gz |
estream: Fix assertion failure due to es_flush.
* src/estream.c (es_writen): Set writing flag even if no data was
written.
--
GnuPG-bug-id: 2371
Signed-off-by: Werner Koch <wk@gnupg.org>
gniibe tracked the problem down to a fully valid change in GnuPG
(gnupg commit 12af2630cf4d1a39179179925fac8f2cce7504ff). He wrote:
This is the first instance for estream to do READ and WRITE
(in the history of the code > 10 years :-). In the [gnupg] 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.
Diffstat (limited to 'src/estream.c')
-rw-r--r-- | src/estream.c | 4 |
1 files changed, 1 insertions, 3 deletions
diff --git a/src/estream.c b/src/estream.c index 2033b23..e382a29 100644 --- a/src/estream.c +++ b/src/estream.c @@ -2679,6 +2679,7 @@ es_writen (estream_t _GPGRT__RESTRICT stream, else goto out; } + stream->flags.writing = 1; } } @@ -2701,9 +2702,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; } |