krb4 fixed

This commit is contained in:
Daniel Stenberg
2005-02-22 12:20:30 +00:00
parent 527f70e540
commit f8b4ba80e0
2 changed files with 13 additions and 11 deletions

View File

@@ -200,7 +200,7 @@ krb4_auth(void *app_data, struct connectdata *conn)
int ret; int ret;
char *p; char *p;
unsigned char *ptr; unsigned char *ptr;
int len; size_t len;
KTEXT_ST adat; KTEXT_ST adat;
MSG_DAT msg_data; MSG_DAT msg_data;
int checksum; int checksum;
@@ -324,7 +324,7 @@ CURLcode Curl_krb_kauth(struct connectdata *conn)
char *name; char *name;
char *p; char *p;
char passwd[100]; char passwd[100];
int tmp; size_t tmp;
ssize_t nread; ssize_t nread;
int save; int save;
CURLcode result; CURLcode result;
@@ -355,11 +355,11 @@ CURLcode Curl_krb_kauth(struct connectdata *conn)
p += 2; p += 2;
tmp = Curl_base64_decode(p, &ptr); tmp = Curl_base64_decode(p, &ptr);
if(len > sizeof(tkt.dat)-1) { if(tmp >= sizeof(tkt.dat)) {
free(ptr); free(ptr);
len=0; tmp=0;
} }
if(!len || !ptr) { if(!tmp || !ptr) {
Curl_failf(conn->data, "Failed to decode base64 in reply.\n"); Curl_failf(conn->data, "Failed to decode base64 in reply.\n");
Curl_set_command_prot(conn, save); Curl_set_command_prot(conn, save);
return CURLE_FTP_WEIRD_SERVER_REPLY; return CURLE_FTP_WEIRD_SERVER_REPLY;

View File

@@ -297,13 +297,15 @@ int
Curl_sec_read_msg(struct connectdata *conn, char *s, int level) Curl_sec_read_msg(struct connectdata *conn, char *s, int level)
{ {
int len; int len;
char *buf; unsigned char *buf;
int code; int code;
buf = malloc(strlen(s)); len = Curl_base64_decode(s + 4, &buf); /* XXX */
len = Curl_base64_decode(s + 4, buf); /* XXX */ if(len > 0)
len = (conn->mech->decode)(conn->app_data, buf, len, level, conn);
else
return -1;
len = (conn->mech->decode)(conn->app_data, buf, len, level, conn);
if(len < 0) { if(len < 0) {
free(buf); free(buf);
return -1; return -1;
@@ -314,10 +316,10 @@ Curl_sec_read_msg(struct connectdata *conn, char *s, int level)
if(buf[3] == '-') if(buf[3] == '-')
code = 0; code = 0;
else else
sscanf(buf, "%d", &code); sscanf((char *)buf, "%d", &code);
if(buf[len-1] == '\n') if(buf[len-1] == '\n')
buf[len-1] = '\0'; buf[len-1] = '\0';
strcpy(s, buf); strcpy(s, (char *)buf);
free(buf); free(buf);
return code; return code;
} }