Fix bug 1207
authorWerner Koch <wk@gnupg.org>
Wed, 12 May 2010 10:53:02 +0000 (10:53 +0000)
committerWerner Koch <wk@gnupg.org>
Wed, 12 May 2010 10:53:02 +0000 (10:53 +0000)
g10/ChangeLog
g10/plaintext.c

index e844e52..78c4799 100644 (file)
@@ -1,3 +1,8 @@
+2010-05-12  Werner Koch  <wk@g10code.com>
+
+       * plaintext.c (handle_plaintext): Check return code of fflush.
+       Fixes bug#1207.
+
 2010-05-07  Werner Koch  <wk@g10code.com>
 
        * import.c (chk_self_sigs): Check direct key signatures.  Fixes
index 34e18f6..3777648 100644 (file)
@@ -402,7 +402,15 @@ handle_plaintext( PKT_plaintext *pt, md_filter_context_t *mfx,
     /* Make sure that stdout gets flushed after the plaintext has
        been handled.  This is for extra security as we do a
        flush anyway before checking the signature.  */
-    fflush (stdout);
+    if (fflush (stdout))
+      {
+        /* We need to check the return code to detect errors like disk
+           full for short plaintexts.  See bug#1207.  Checking return
+           values is a good idea in any case.  */
+        if (!rc)
+          rc = gpg_error_from_syserror ();
+        log_error ("error flushing `%s': %s\n", "[stdout]", strerror (errno) );
+      }
 
     if( fp && fp != stdout )
       fclose (fp);