diff options
author | Dan Fandrich <dan@coneharvesters.com> | 2008-11-02 05:01:39 +0000 |
---|---|---|
committer | Dan Fandrich <dan@coneharvesters.com> | 2008-11-02 05:01:39 +0000 |
commit | 484d549ecef3ee44dff4bbca418b5ace20629502 (patch) | |
tree | b2c366b79b716fd53dd4461b4839666ea8920e79 | |
parent | d098ab436d458735ed16dfcc6ab43cd4574bac57 (diff) |
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.
-rw-r--r-- | lib/security.c | 4 | ||||
-rw-r--r-- | lib/sendf.c | 5 |
2 files changed, 8 insertions, 1 deletions
diff --git a/lib/security.c b/lib/security.c index 3a9642ae4..7f6f3da0a 100644 --- a/lib/security.c +++ b/lib/security.c @@ -101,6 +101,7 @@ static const struct Curl_sec_client_mech * const mechs[] = { NULL }; +/* TODO: This function isn't actually used anywhere and should be removed */ int Curl_sec_getc(struct connectdata *conn, FILE *F) { @@ -124,6 +125,7 @@ block_read(int fd, void *buf, size_t len) if(b == 0) return 0; else if(b < 0 && (errno == EINTR || errno == EAGAIN)) + /* TODO: this will busy loop in the EAGAIN case */ continue; else if(b < 0) return -1; @@ -163,6 +165,8 @@ sec_get_data(struct connectdata *conn, else if(b < 0) return -1; len = ntohl(len); + /* TODO: This realloc will cause a memory leak in an out of memory + * condition */ buf->data = realloc(buf->data, len); b = buf->data ? block_read(fd, buf->data, len) : -1; if(b == 0) diff --git a/lib/sendf.c b/lib/sendf.c index 7a8c3cad2..4fe0b4806 100644 --- a/lib/sendf.c +++ b/lib/sendf.c @@ -630,13 +630,16 @@ int Curl_read(struct connectdata *conn, /* connection data */ return -1; #endif 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; } else { if(conn->sec_complete) nread = Curl_sec_read(conn, sockfd, buffertofill, 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 { int ret = Curl_read_plain(sockfd, buffertofill, bytesfromsocket, &nread); |