[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 - 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] [channels.c channels.h clientloop.c misc.c misc.h serverloop.c ssh-agent.c]
some signed/unsigned int comparison cleanups; markus@ ok 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 20040812
- (dtucker) [sshd.c] Remove duplicate variable imported during sync. - (dtucker) [sshd.c] Remove duplicate variable imported during sync.
@ -1602,4 +1606,4 @@
- (djm) Trim deprecated options from INSTALL. Mention UsePAM - (djm) Trim deprecated options from INSTALL. Mention UsePAM
- (djm) Fix quote handling in sftp; Patch from admorten AT umich.edu - (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" #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> #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 * Wait for response from the agent. First read the length of the
* response packet. * response packet.
*/ */
len = 4; if (atomicio(read, auth->fd, buf, 4) != 4) {
while (len > 0) { error("Error reading response length from authentication socket.");
l = read(auth->fd, buf + 4 - len, len); return 0;
if (l == -1 && (errno == EAGAIN || errno == EINTR))
continue;
if (l <= 0) {
error("Error reading response length from authentication socket.");
return 0;
}
len -= l;
} }
/* Extract the length, and check it for sanity. */ /* Extract the length, and check it for sanity. */
@ -156,9 +149,7 @@ ssh_request_reply(AuthenticationConnection *auth, Buffer *request, Buffer *reply
l = len; l = len;
if (l > sizeof(buf)) if (l > sizeof(buf))
l = sizeof(buf); l = sizeof(buf);
l = read(auth->fd, buf, l); l = atomicio(read, auth->fd, buf, l);
if (l == -1 && (errno == EAGAIN || errno == EINTR))
continue;
if (l <= 0) { if (l <= 0) {
error("Error reading response from authentication socket."); error("Error reading response from authentication socket.");
return 0; return 0;

9
scp.c
View File

@ -71,7 +71,7 @@
*/ */
#include "includes.h" #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 "xmalloc.h"
#include "atomicio.h" #include "atomicio.h"
@ -898,11 +898,8 @@ bad: run_err("%s: %s", np, strerror(errno));
amt = size - i; amt = size - i;
count += amt; count += amt;
do { do {
j = read(remin, cp, amt); j = atomicio(read, remin, cp, amt);
if (j == -1 && (errno == EINTR || if (j <= 0) {
errno == EAGAIN)) {
continue;
} else if (j <= 0) {
run_err("%s", j ? strerror(errno) : run_err("%s", j ? strerror(errno) :
"dropped connection"); "dropped connection");
exit(1); exit(1);

View File

@ -7,7 +7,7 @@
*/ */
#include "includes.h" #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" #include "openbsd-compat/sys-queue.h"
@ -494,7 +494,7 @@ congreet(int s)
bufsiz = sizeof(buf); bufsiz = sizeof(buf);
cp = 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') if (*cp == '\r')
*cp = '\n'; *cp = '\n';
cp++; cp++;
@ -560,7 +560,7 @@ conread(int s)
congreet(s); congreet(s);
return; 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) { if (n < 0) {
error("read (%s): %s", c->c_name, strerror(errno)); error("read (%s): %s", c->c_name, strerror(errno));
confree(s); confree(s);