1
0
mirror of git://git.gnupg.org/gnupg.git synced 2025-05-14 08:13:25 +02:00

* plaintext.c (handle_plaintext): Make sure that the stdout flush

succeeded, so we can't lose data when using gpg in a pipeline.  Fixes
bug #1207.
This commit is contained in:
David Shaw 2010-03-26 16:57:09 +00:00
parent 9529d72b2c
commit 5bcd4f613b
2 changed files with 18 additions and 4 deletions

View File

@ -1,3 +1,9 @@
2010-03-26 David Shaw <dshaw@jabberwocky.com>
* plaintext.c (handle_plaintext): Make sure that the stdout flush
succeeded, so we can't lose data when using gpg in a pipeline.
Fixes bug #1207.
2010-02-17 Werner Koch <wk@g10code.com> 2010-02-17 Werner Koch <wk@g10code.com>
* keygen.c (ask_user_id): Avoid infinite loop in case of invalid * keygen.c (ask_user_id): Avoid infinite loop in case of invalid
@ -13615,7 +13621,7 @@ Thu Feb 12 22:24:42 1998 Werner Koch (wk@frodo)
Copyright 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, Copyright 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
2007, 2008, 2009 Free Software Foundation, Inc. 2007, 2008, 2009, 2010 Free Software Foundation, Inc.
This file is free software; as a special exception the author gives This file is free software; as a special exception the author gives
unlimited permission to copy and/or distribute it, with or without unlimited permission to copy and/or distribute it, with or without

View File

@ -1,6 +1,6 @@
/* plaintext.c - process plaintext packets /* plaintext.c - process plaintext packets
* Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, * Copyright (C) 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
* 2006 Free Software Foundation, Inc. * 2007, 2010 Free Software Foundation, Inc.
* *
* This file is part of GnuPG. * This file is part of GnuPG.
* *
@ -392,7 +392,15 @@ handle_plaintext( PKT_plaintext *pt, md_filter_context_t *mfx,
/* Make sure that stdout gets flushed after the plaintext has /* Make sure that stdout gets flushed after the plaintext has
been handled. This is for extra security as we do a been handled. This is for extra security as we do a
flush anyway before checking the signature. */ flush anyway before checking the signature. */
fflush (stdout); if(fflush(stdout))
{
/* We check whether this fflush succeeded since fp might have
been stdout piping to a file. The fflush could fail if the
file cannot be written (disk full, etc). See bug 1207 for
more. */
log_error("Error flushing plaintext: %s\n",strerror(errno));
rc=G10ERR_WRITE_FILE;
}
if( fp && fp != stdout ) if( fp && fp != stdout )
fclose(fp); fclose(fp);