read fixes

git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@7152 ec53bebd-3082-4978-b11e-865c3cabbd6b
This commit is contained in:
Assar Westerlund
1999-10-17 10:31:57 +00:00
parent 9fb0a9020d
commit 7938449553

View File

@@ -127,7 +127,7 @@ sec_getc(FILE *F)
{ {
if(sec_complete && data_prot) { if(sec_complete && data_prot) {
char c; char c;
if(sec_read(fileno(F), &c, 1) == 0) if(sec_read(fileno(F), &c, 1) <= 0)
return EOF; return EOF;
return c; return c;
} else } else
@@ -141,7 +141,9 @@ block_read(int fd, void *buf, size_t len)
int b; int b;
while(len) { while(len) {
b = read(fd, p, len); b = read(fd, p, len);
if(b <= 0) if (b == 0)
return 0;
else if (b < 0)
return -1; return -1;
len -= b; len -= b;
p += b; p += b;
@@ -168,12 +170,19 @@ static int
sec_get_data(int fd, struct buffer *buf, int level) sec_get_data(int fd, struct buffer *buf, int level)
{ {
int len; int len;
int b;
if(block_read(fd, &len, sizeof(len)) < 0)
b = block_read(fd, &len, sizeof(len));
if (b == 0)
return 0;
else if (b < 0)
return -1; return -1;
len = ntohl(len); len = ntohl(len);
buf->data = realloc(buf->data, len); buf->data = realloc(buf->data, len);
if(block_read(fd, buf->data, len) < 0) b = block_read(fd, buf->data, len);
if (b == 0)
return 0;
else if (b < 0)
return -1; return -1;
buf->size = (*mech->decode)(app_data, buf->data, len, data_prot); buf->size = (*mech->decode)(app_data, buf->data, len, data_prot);
buf->index = 0; buf->index = 0;