pull up r20485 from trunk
authorTom Yu <tlyu@mit.edu>
Thu, 9 Jul 2009 01:59:03 +0000 (01:59 +0000)
committerTom Yu <tlyu@mit.edu>
Thu, 9 Jul 2009 01:59:03 +0000 (01:59 +0000)
 ------------------------------------------------------------------------
 r20485 | raeburn | 2008-06-26 23:33:14 -0400 (Thu, 26 Jun 2008) | 8 lines

 ticket: new
 target_version: 1.6.4
 tags: pullup
 subject: use-after-free bugs

 Fix some bugs with storage being used immediately after being freed.
 None look like anything an attacker can really manipulate AFAICT.

ticket: 5998
version_fixed: 1.6.4

git-svn-id: svn://anonsvn.mit.edu/krb5/branches/krb5-1-6@22427 dc483132-0cff-0310-8789-dd5450dbe970

src/kadmin/server/server_stubs.c
src/kdc/network.c
src/lib/krb5/krb/mk_cred.c
src/slave/kprop.c

index f091540452dedb0a210581d6d4bcc99739f716b2..843dd75760bce2e52ca05f42f778c3428aa3f004 100644 (file)
@@ -1628,7 +1628,7 @@ generic_ret *init_2_svc(krb5_ui_4 *arg, struct svc_req *rqstp)
      }
 
      if (ret.code != 0)
-        errmsg = krb5_get_error_message(handle ? handle->context : NULL, ret.code);
+        errmsg = krb5_get_error_message(NULL, ret.code);
      else
         errmsg = "success";
 
index 3bf18786ce2f58759d6b03ee3085e1e21e59892d..5c25eb7270dc5ea419f4973d7e4e0c4475f6a64a 100644 (file)
@@ -775,10 +775,8 @@ static void process_packet(struct connection *conn, const char *prog,
        return;
     }
     if (cc != response->length) {
-       krb5_free_data(kdc_context, response);
        com_err(prog, 0, "short reply write %d vs %d\n",
                response->length, cc);
-       return;
     }
     krb5_free_data(kdc_context, response);
     return;
index 04248c08d1ed09167e8cd18b2c8353e32e0f859c..ba3cc3a6bcb59554a76a3fbe8f4325a72d6727a3 100644 (file)
@@ -176,8 +176,8 @@ krb5_mk_ncred(krb5_context context, krb5_auth_context auth_context, krb5_creds *
 
     if ((pcred->tickets 
       = (krb5_ticket **)malloc(sizeof(krb5_ticket *) * (ncred + 1))) == NULL) {
-       retval = ENOMEM;
        free(pcred);
+       return ENOMEM;
     }
     memset(pcred->tickets, 0, sizeof(krb5_ticket *) * (ncred +1));
 
index b2ea2c2b36790aeeb5352e9ad762ea9ce3b744e1..42bc8fbdab33814eacac45705d239bbacd713a24 100644 (file)
@@ -1,7 +1,7 @@
 /*
  * slave/kprop.c
  *
- * Copyright 1990,1991 by the Massachusetts Institute of Technology.
+ * Copyright 1990,1991,2008 by the Massachusetts Institute of Technology.
  * All Rights Reserved.
  *
  * Export of this software from the United States of America may
@@ -505,12 +505,12 @@ open_database(context, data_fn, size)
                free(data_ok_fn);
                exit(1);
        }
-       free(data_ok_fn);
        if (stbuf.st_mtime > stbuf_ok.st_mtime) {
                com_err(progname, 0, "'%s' more recent than '%s'.",
                        data_fn, data_ok_fn);
                exit(1);
        }
+       free(data_ok_fn);
        *size = stbuf.st_size;
        return(fd);
 }