Merge pull request #26 from fperrad/kill_kr

remove K&R old style code
This commit is contained in:
Matt Johnston 2016-11-18 22:48:50 +08:00 committed by GitHub
commit 6830a65923
6 changed files with 30 additions and 42 deletions

View File

@ -1,6 +1,8 @@
/* $OpenBSD: atomicio.c,v 1.17 2006/04/01 05:51:34 djm Exp $ */
/* /*
* Copied from OpenSSH 3.6.1p2. * Copied from OpenSSH/OpenBSD.
* *
* Copyright (c) 2005 Anil Madhavapeddy. All rights reserved.
* Copyright (c) 1995,1999 Theo de Raadt. All rights reserved. * Copyright (c) 1995,1999 Theo de Raadt. All rights reserved.
* All rights reserved. * All rights reserved.
* *
@ -25,39 +27,32 @@
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/ */
/* RCSID("OpenBSD: atomicio.c,v 1.10 2001/05/08 22:48:07 markus Exp "); */ #include "includes.h"
#include "atomicio.h" #include "atomicio.h"
/* /*
* ensure all of data on socket comes through. f==read || f==write * ensure all of data on socket comes through. f==read || f==vwrite
*/ */
ssize_t size_t
atomicio(f, fd, _s, n) atomicio(ssize_t (*f) (int, void *, size_t), int fd, void *_s, size_t n)
ssize_t (*f) ();
int fd;
void *_s;
size_t n;
{ {
char *s = _s; char *s = _s;
ssize_t res;
size_t pos = 0; size_t pos = 0;
ssize_t res;
while (n > pos) { while (n > pos) {
res = (f) (fd, s + pos, n - pos); res = (f) (fd, s + pos, n - pos);
switch (res) { switch (res) {
case -1: case -1:
#ifdef EWOULDBLOCK
if (errno == EINTR || errno == EAGAIN || errno == EWOULDBLOCK)
#else
if (errno == EINTR || errno == EAGAIN) if (errno == EINTR || errno == EAGAIN)
#endif
continue; continue;
/* FALLTHROUGH */ return 0;
case 0: case 0:
return (res); errno = EPIPE;
return pos;
default: default:
pos += res; pos += (size_t)res;
} }
} }
return (pos); return (pos);

View File

@ -1,8 +1,7 @@
/* $OpenBSD: atomicio.h,v 1.7 2006/03/25 22:22:42 djm Exp $ */
/* /*
* Copied from OpenSSH 3.6.1p2, required for loginrec.c * Copied from OpenSSH/OpenBSD, required for loginrec.c
*
* $OpenBSD: atomicio.h,v 1.4 2001/06/26 06:32:46 itojun Exp $
* *
* Copyright (c) 1995,1999 Theo de Raadt. All rights reserved. * Copyright (c) 1995,1999 Theo de Raadt. All rights reserved.
* All rights reserved. * All rights reserved.
@ -28,9 +27,9 @@
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/ */
#include "includes.h"
/* /*
* Ensure all of data on socket comes through. f==read || f==write * Ensure all of data on socket comes through. f==read || f==vwrite
*/ */
ssize_t atomicio(ssize_t (*)(), int, void *, size_t); size_t atomicio(ssize_t (*)(int, void *, size_t), int, void *, size_t);
#define vwrite (ssize_t (*)(int, void *, size_t))write

View File

@ -130,7 +130,7 @@ static buffer * agent_request(unsigned char type, buffer *data) {
} }
buf_setpos(payload, 0); buf_setpos(payload, 0);
ret = atomicio(write, fd, buf_getptr(payload, payload->len), payload->len); ret = atomicio(vwrite, fd, buf_getptr(payload, payload->len), payload->len);
if ((size_t)ret != payload->len) { if ((size_t)ret != payload->len) {
TRACE(("write failed fd %d for agent_request, %s", fd, strerror(errno))) TRACE(("write failed fd %d for agent_request, %s", fd, strerror(errno)))
goto out; goto out;

View File

@ -114,8 +114,8 @@ size_t strlcpy(char *dst, const char *src, size_t size) {
#endif /* HAVE_STRLCPY */ #endif /* HAVE_STRLCPY */
#ifndef HAVE_STRLCAT #ifndef HAVE_STRLCAT
/* taken from openbsd-compat for OpenSSH 3.6.1p1 */ /* taken from openbsd-compat for OpenSSH 7.2p2 */
/* "$OpenBSD: strlcat.c,v 1.8 2001/05/13 15:40:15 deraadt Exp $" /* "$OpenBSD: strlcat.c,v 1.13 2005/08/08 08:05:37 espie Exp $"
* *
* Appends src to string dst of size siz (unlike strncat, siz is the * Appends src to string dst of size siz (unlike strncat, siz is the
* full size of dst, not space left). At most siz-1 characters * full size of dst, not space left). At most siz-1 characters
@ -123,15 +123,12 @@ size_t strlcpy(char *dst, const char *src, size_t size) {
* Returns strlen(src) + MIN(siz, strlen(initial dst)). * Returns strlen(src) + MIN(siz, strlen(initial dst)).
* If retval >= siz, truncation occurred. * If retval >= siz, truncation occurred.
*/ */
size_t size_t
strlcat(dst, src, siz) strlcat(char *dst, const char *src, size_t siz)
char *dst;
const char *src;
size_t siz;
{ {
register char *d = dst; char *d = dst;
register const char *s = src; const char *s = src;
register size_t n = siz; size_t n = siz;
size_t dlen; size_t dlen;
/* Find the end of dst and adjust bytes left but don't go past end */ /* Find the end of dst and adjust bytes left but don't go past end */

View File

@ -706,7 +706,7 @@ utmp_write_direct(struct logininfo *li, struct utmp *ut)
} }
(void)lseek(fd, (off_t)(tty * sizeof(struct utmp)), SEEK_SET); (void)lseek(fd, (off_t)(tty * sizeof(struct utmp)), SEEK_SET);
if (atomicio(write, fd, ut, sizeof(*ut)) != sizeof(*ut)) if (atomicio(vwrite, fd, ut, sizeof(*ut)) != sizeof(*ut))
dropbear_log(LOG_WARNING, "utmp_write_direct: error writing %s: %s", dropbear_log(LOG_WARNING, "utmp_write_direct: error writing %s: %s",
UTMP_FILE, strerror(errno)); UTMP_FILE, strerror(errno));
@ -895,7 +895,7 @@ wtmp_write(struct logininfo *li, struct utmp *ut)
return 0; return 0;
} }
if (fstat(fd, &buf) == 0) if (fstat(fd, &buf) == 0)
if (atomicio(write, fd, ut, sizeof(*ut)) != sizeof(*ut)) { if (atomicio(vwrite, fd, ut, sizeof(*ut)) != sizeof(*ut)) {
ftruncate(fd, buf.st_size); ftruncate(fd, buf.st_size);
dropbear_log(LOG_WARNING, "wtmp_write: problem writing %s: %s", dropbear_log(LOG_WARNING, "wtmp_write: problem writing %s: %s",
WTMP_FILE, strerror(errno)); WTMP_FILE, strerror(errno));
@ -1062,7 +1062,7 @@ wtmpx_write(struct logininfo *li, struct utmpx *utx)
} }
if (fstat(fd, &buf) == 0) if (fstat(fd, &buf) == 0)
if (atomicio(write, fd, utx, sizeof(*utx)) != sizeof(*utx)) { if (atomicio(vwrite, fd, utx, sizeof(*utx)) != sizeof(*utx)) {
ftruncate(fd, buf.st_size); ftruncate(fd, buf.st_size);
dropbear_log(LOG_WARNING, "wtmpx_write: problem writing %s: %s", dropbear_log(LOG_WARNING, "wtmpx_write: problem writing %s: %s",
WTMPX_FILE, strerror(errno)); WTMPX_FILE, strerror(errno));
@ -1351,7 +1351,7 @@ lastlog_perform_login(struct logininfo *li)
return(0); return(0);
/* write the entry */ /* write the entry */
if (atomicio(write, fd, &last, sizeof(last)) != sizeof(last)) { if (atomicio(vwrite, fd, &last, sizeof(last)) != sizeof(last)) {
close(fd); close(fd);
dropbear_log(LOG_WARNING, "lastlog_write_filemode: Error writing to %s: %s", dropbear_log(LOG_WARNING, "lastlog_write_filemode: Error writing to %s: %s",
LASTLOG_FILE, strerror(errno)); LASTLOG_FILE, strerror(errno));

View File

@ -12,9 +12,6 @@
* called by a name other than "ssh" or "Secure Shell". * called by a name other than "ssh" or "Secure Shell".
*/ */
/* actually from atomicio, but is only used in scp code */
#define vwrite (ssize_t (*)(int, void *, size_t))write
char *chop(char *); char *chop(char *);
char *strdelim(char **); char *strdelim(char **);
void set_nonblock(int); void set_nonblock(int);