]> granicus.if.org Git - curl/commitdiff
krb4 fixed
authorDaniel Stenberg <daniel@haxx.se>
Tue, 22 Feb 2005 12:20:30 +0000 (12:20 +0000)
committerDaniel Stenberg <daniel@haxx.se>
Tue, 22 Feb 2005 12:20:30 +0000 (12:20 +0000)
lib/krb4.c
lib/security.c

index 7b04828ab50d51714ff20e5644c158064c3f8fec..e5ecabffab59e22d3e5c45aeca43bc0acb1fed44 100644 (file)
@@ -200,7 +200,7 @@ krb4_auth(void *app_data, struct connectdata *conn)
   int ret;
   char *p;
   unsigned char *ptr;
-  int len;
+  size_t len;
   KTEXT_ST adat;
   MSG_DAT msg_data;
   int checksum;
@@ -324,7 +324,7 @@ CURLcode Curl_krb_kauth(struct connectdata *conn)
   char *name;
   char *p;
   char passwd[100];
-  int tmp;
+  size_t tmp;
   ssize_t nread;
   int save;
   CURLcode result;
@@ -355,11 +355,11 @@ CURLcode Curl_krb_kauth(struct connectdata *conn)
 
   p += 2;
   tmp = Curl_base64_decode(p, &ptr);
-  if(len > sizeof(tkt.dat)-1) {
+  if(tmp >= sizeof(tkt.dat)) {
     free(ptr);
-    len=0;
+    tmp=0;
   }
-  if(!len || !ptr) {
+  if(!tmp || !ptr) {
     Curl_failf(conn->data, "Failed to decode base64 in reply.\n");
     Curl_set_command_prot(conn, save);
     return CURLE_FTP_WEIRD_SERVER_REPLY;
index 64c55b3ba5a4ed34260b641f7889c8eeefea9a22..c1df26c05e04f1f2964caba6c5607c55a125bd96 100644 (file)
@@ -297,13 +297,15 @@ int
 Curl_sec_read_msg(struct connectdata *conn, char *s, int level)
 {
   int len;
-  char *buf;
+  unsigned char *buf;
   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) {
     free(buf);
     return -1;
@@ -314,10 +316,10 @@ Curl_sec_read_msg(struct connectdata *conn, char *s, int level)
   if(buf[3] == '-')
     code = 0;
   else
-    sscanf(buf, "%d", &code);
+    sscanf((char *)buf, "%d", &code);
   if(buf[len-1] == '\n')
     buf[len-1] = '\0';
-  strcpy(s, buf);
+  strcpy(s, (char *)buf);
   free(buf);
   return code;
 }