[authfd.c scp.c ssh-keyscan.c]
     use atomicio instead of homegrown equivalents or read/write.
     markus@ ok
This commit is contained in:
Darren Tucker 2004-08-13 21:19:37 +10:00
parent c7a6fc41bf
commit fe6649da0c
4 changed files with 16 additions and 24 deletions

View File

@ -5,6 +5,10 @@
- avsm@cvs.openbsd.org 2004/08/11 21:43:05
[channels.c channels.h clientloop.c misc.c misc.h serverloop.c ssh-agent.c]
some signed/unsigned int comparison cleanups; markus@ ok
- avsm@cvs.openbsd.org 2004/08/11 21:44:32
[authfd.c scp.c ssh-keyscan.c]
use atomicio instead of homegrown equivalents or read/write.
markus@ ok
20040812
- (dtucker) [sshd.c] Remove duplicate variable imported during sync.
@ -1602,4 +1606,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.3499 2004/08/13 11:18:00 dtucker Exp $
$Id: ChangeLog,v 1.3500 2004/08/13 11:19:37 dtucker Exp $

View File

@ -35,7 +35,7 @@
*/
#include "includes.h"
RCSID("$OpenBSD: authfd.c,v 1.63 2003/11/21 11:57:03 djm Exp $");
RCSID("$OpenBSD: authfd.c,v 1.64 2004/08/11 21:44:31 avsm Exp $");
#include <openssl/evp.h>
@ -133,16 +133,9 @@ ssh_request_reply(AuthenticationConnection *auth, Buffer *request, Buffer *reply
* Wait for response from the agent. First read the length of the
* response packet.
*/
len = 4;
while (len > 0) {
l = read(auth->fd, buf + 4 - len, len);
if (l == -1 && (errno == EAGAIN || errno == EINTR))
continue;
if (l <= 0) {
error("Error reading response length from authentication socket.");
return 0;
}
len -= l;
if (atomicio(read, auth->fd, buf, 4) != 4) {
error("Error reading response length from authentication socket.");
return 0;
}
/* Extract the length, and check it for sanity. */
@ -156,9 +149,7 @@ ssh_request_reply(AuthenticationConnection *auth, Buffer *request, Buffer *reply
l = len;
if (l > sizeof(buf))
l = sizeof(buf);
l = read(auth->fd, buf, l);
if (l == -1 && (errno == EAGAIN || errno == EINTR))
continue;
l = atomicio(read, auth->fd, buf, l);
if (l <= 0) {
error("Error reading response from authentication socket.");
return 0;

9
scp.c
View File

@ -71,7 +71,7 @@
*/
#include "includes.h"
RCSID("$OpenBSD: scp.c,v 1.116 2004/07/08 12:47:21 dtucker Exp $");
RCSID("$OpenBSD: scp.c,v 1.117 2004/08/11 21:44:32 avsm Exp $");
#include "xmalloc.h"
#include "atomicio.h"
@ -898,11 +898,8 @@ bad: run_err("%s: %s", np, strerror(errno));
amt = size - i;
count += amt;
do {
j = read(remin, cp, amt);
if (j == -1 && (errno == EINTR ||
errno == EAGAIN)) {
continue;
} else if (j <= 0) {
j = atomicio(read, remin, cp, amt);
if (j <= 0) {
run_err("%s", j ? strerror(errno) :
"dropped connection");
exit(1);

View File

@ -7,7 +7,7 @@
*/
#include "includes.h"
RCSID("$OpenBSD: ssh-keyscan.c,v 1.49 2004/06/14 01:44:39 djm Exp $");
RCSID("$OpenBSD: ssh-keyscan.c,v 1.50 2004/08/11 21:44:32 avsm Exp $");
#include "openbsd-compat/sys-queue.h"
@ -494,7 +494,7 @@ congreet(int s)
bufsiz = sizeof(buf);
cp = buf;
while (bufsiz-- && (n = read(s, cp, 1)) == 1 && *cp != '\n') {
while (bufsiz-- && (n = atomicio(read, s, cp, 1)) == 1 && *cp != '\n') {
if (*cp == '\r')
*cp = '\n';
cp++;
@ -560,7 +560,7 @@ conread(int s)
congreet(s);
return;
}
n = read(s, c->c_data + c->c_off, c->c_len - c->c_off);
n = atomicio(read, s, c->c_data + c->c_off, c->c_len - c->c_off);
if (n < 0) {
error("read (%s): %s", c->c_name, strerror(errno));
confree(s);