read fixes
git-svn-id: svn://svn.h5l.se/heimdal/trunk/heimdal@7152 ec53bebd-3082-4978-b11e-865c3cabbd6b
This commit is contained in:
@@ -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;
|
||||||
|
Reference in New Issue
Block a user