mirror of https://github.com/moparisthebest/curl
Marked with TODO comments a number of problems in the Kerberos code detected
while investigating the issue in http://curl.haxx.se/mail/lib-2008-09/0262.html I'm hesitant to fix them because I have no way of testing the result.
This commit is contained in:
parent
d098ab436d
commit
484d549ece
|
@ -101,6 +101,7 @@ static const struct Curl_sec_client_mech * const mechs[] = {
|
||||||
NULL
|
NULL
|
||||||
};
|
};
|
||||||
|
|
||||||
|
/* TODO: This function isn't actually used anywhere and should be removed */
|
||||||
int
|
int
|
||||||
Curl_sec_getc(struct connectdata *conn, FILE *F)
|
Curl_sec_getc(struct connectdata *conn, FILE *F)
|
||||||
{
|
{
|
||||||
|
@ -124,6 +125,7 @@ block_read(int fd, void *buf, size_t len)
|
||||||
if(b == 0)
|
if(b == 0)
|
||||||
return 0;
|
return 0;
|
||||||
else if(b < 0 && (errno == EINTR || errno == EAGAIN))
|
else if(b < 0 && (errno == EINTR || errno == EAGAIN))
|
||||||
|
/* TODO: this will busy loop in the EAGAIN case */
|
||||||
continue;
|
continue;
|
||||||
else if(b < 0)
|
else if(b < 0)
|
||||||
return -1;
|
return -1;
|
||||||
|
@ -163,6 +165,8 @@ sec_get_data(struct connectdata *conn,
|
||||||
else if(b < 0)
|
else if(b < 0)
|
||||||
return -1;
|
return -1;
|
||||||
len = ntohl(len);
|
len = ntohl(len);
|
||||||
|
/* TODO: This realloc will cause a memory leak in an out of memory
|
||||||
|
* condition */
|
||||||
buf->data = realloc(buf->data, len);
|
buf->data = realloc(buf->data, len);
|
||||||
b = buf->data ? block_read(fd, buf->data, len) : -1;
|
b = buf->data ? block_read(fd, buf->data, len) : -1;
|
||||||
if(b == 0)
|
if(b == 0)
|
||||||
|
|
|
@ -630,13 +630,16 @@ int Curl_read(struct connectdata *conn, /* connection data */
|
||||||
return -1;
|
return -1;
|
||||||
#endif
|
#endif
|
||||||
if(nread < 0)
|
if(nread < 0)
|
||||||
/* since it is negative and not EGAIN, it was a protocol-layer error */
|
/* since it is negative and not EAGAIN, it was a protocol-layer error */
|
||||||
return CURLE_RECV_ERROR;
|
return CURLE_RECV_ERROR;
|
||||||
}
|
}
|
||||||
else {
|
else {
|
||||||
if(conn->sec_complete)
|
if(conn->sec_complete)
|
||||||
nread = Curl_sec_read(conn, sockfd, buffertofill,
|
nread = Curl_sec_read(conn, sockfd, buffertofill,
|
||||||
bytesfromsocket);
|
bytesfromsocket);
|
||||||
|
/* TODO: Need to handle EAGAIN here somehow, similar to how it
|
||||||
|
* is done in Curl_read_plain, either right here or in Curl_sec_read
|
||||||
|
* itself. */
|
||||||
else {
|
else {
|
||||||
int ret = Curl_read_plain(sockfd, buffertofill, bytesfromsocket,
|
int ret = Curl_read_plain(sockfd, buffertofill, bytesfromsocket,
|
||||||
&nread);
|
&nread);
|
||||||
|
|
Loading…
Reference in New Issue