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:
Dan Fandrich 2008-11-02 05:01:39 +00:00
parent d098ab436d
commit 484d549ece
2 changed files with 8 additions and 1 deletions

View File

@ -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)

View File

@ -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);