short i/o: fix calls to read to use xread or read_in_full
We have a number of badly checked read() calls. Often we are expecting read() to read exactly the size we requested or fail, this fails to handle interrupts or short reads. Add a read_in_full() providing those semantics. Otherwise we at a minimum need to check for EINTR and EAGAIN, where this is appropriate use xread(). Signed-off-by: Andy Whitcroft <apw@shadowen.org> Signed-off-by: Junio C Hamano <junkio@cox.net>
This commit is contained in:

committed by
Junio C Hamano

parent
e08140568a
commit
93d26e4cb9
@ -224,7 +224,7 @@ socket_perror( const char *func, Socket_t *sock, int ret )
|
||||
static int
|
||||
socket_read( Socket_t *sock, char *buf, int len )
|
||||
{
|
||||
int n = read( sock->fd, buf, len );
|
||||
int n = xread( sock->fd, buf, len );
|
||||
if (n <= 0) {
|
||||
socket_perror( "read", sock, n );
|
||||
close( sock->fd );
|
||||
@ -390,7 +390,7 @@ arc4_init( void )
|
||||
fprintf( stderr, "Fatal: no random number source available.\n" );
|
||||
exit( 3 );
|
||||
}
|
||||
if (read( fd, dat, 128 ) != 128) {
|
||||
if (read_in_full( fd, dat, 128 ) != 128) {
|
||||
fprintf( stderr, "Fatal: cannot read random number source.\n" );
|
||||
exit( 3 );
|
||||
}
|
||||
|
Reference in New Issue
Block a user