[channels.h]
     race when efd gets closed while there is still buffered data:
     change CHANNEL_EFD_OUTPUT_ACTIVE()
        1) c->efd must always be valid AND
        2a) no EOF has been seen OR
        2b) there is buffered data
     report, initial fix and testing Chuck Cranor
This commit is contained in:
Darren Tucker 2005-07-14 17:05:51 +10:00
parent bee73d5ce0
commit ce377c3ff1
2 changed files with 11 additions and 3 deletions

View File

@ -6,6 +6,14 @@
- dtucker@cvs.openbsd.org 2005/07/08 09:26:18
[misc.c]
Make comment match code; ok djm@
- markus@cvs.openbsd.org 2005/07/08 09:41:33
[channels.h]
race when efd gets closed while there is still buffered data:
change CHANNEL_EFD_OUTPUT_ACTIVE()
1) c->efd must always be valid AND
2a) no EOF has been seen OR
2b) there is buffered data
report, initial fix and testing Chuck Cranor
20050707
- dtucker [auth-krb5.c auth.h gss-serv-krb5.c] Move KRB5CCNAME generation for
@ -2804,4 +2812,4 @@
- (djm) Trim deprecated options from INSTALL. Mention UsePAM
- (djm) Fix quote handling in sftp; Patch from admorten AT umich.edu
$Id: ChangeLog,v 1.3840 2005/07/14 07:05:02 dtucker Exp $
$Id: ChangeLog,v 1.3841 2005/07/14 07:05:51 dtucker Exp $

View File

@ -1,4 +1,4 @@
/* $OpenBSD: channels.h,v 1.77 2005/06/16 03:38:36 djm Exp $ */
/* $OpenBSD: channels.h,v 1.78 2005/07/08 09:41:33 markus Exp $ */
/*
* Author: Tatu Ylonen <ylo@cs.hut.fi>
@ -149,7 +149,7 @@ struct Channel {
buffer_len(&c->extended) > 0))
#define CHANNEL_EFD_OUTPUT_ACTIVE(c) \
(compat20 && c->extended_usage == CHAN_EXTENDED_WRITE && \
((c->efd != -1 && !(c->flags & (CHAN_EOF_RCVD|CHAN_CLOSE_RCVD))) || \
c->efd != -1 && (!(c->flags & (CHAN_EOF_RCVD|CHAN_CLOSE_RCVD)) || \
buffer_len(&c->extended) > 0))
/* channel management */