* ser_ctx.c (krb5_context_internalize): Copy read-in OS context data into
authorKen Raeburn <raeburn@mit.edu>
Sat, 17 May 2003 01:51:53 +0000 (01:51 +0000)
committerKen Raeburn <raeburn@mit.edu>
Sat, 17 May 2003 01:51:53 +0000 (01:51 +0000)
krb5_context and free up the newly allocated OS context.

ticket: 1497
status: open

git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@15453 dc483132-0cff-0310-8789-dd5450dbe970

src/lib/krb5/krb/ChangeLog
src/lib/krb5/krb/ser_ctx.c

index 14026dc28101cb490744576c350073ab064534e5..6222799ed86e55fbd9158bd5aa1d637b67bf8b00 100644 (file)
@@ -1,3 +1,9 @@
+2003-05-16  Ken Raeburn  <raeburn@mit.edu>
+
+       * ser_ctx.c (krb5_context_internalize): Copy read-in OS context
+       data into krb5_context and free up the newly allocated OS
+       context.
+
 2003-05-13  Sam Hartman  <hartmans@mit.edu>
 
        * fwd_tgt.c (krb5_fwd_tgt_creds): Try with no specified enctype if
index 014d232e76043ca221521541014fd6589df2aa3c..d48f61e83535bffcfe31036cf41932e41ea0a317 100644 (file)
@@ -461,12 +461,22 @@ krb5_context_internalize(krb5_context kcontext, krb5_pointer *argp, krb5_octet *
        goto cleanup;
     context->scc_default_format = (int) ibuf;
     
-    /* Attempt to read in the os_context */
-    kret = krb5_internalize_opaque(kcontext, KV5M_OS_CONTEXT,
-                                  (krb5_pointer *) &context->os_context,
-                                  &bp, &remain);
-    if (kret && (kret != EINVAL) && (kret != ENOENT))
-       goto cleanup;
+    /* Attempt to read in the os_context.  It's an array now, but
+       we still treat it in most places as a separate object with
+       a pointer.  */
+    {
+       krb5_os_context osp = 0;
+       kret = krb5_internalize_opaque(kcontext, KV5M_OS_CONTEXT,
+                                      (krb5_pointer *) &osp,
+                                      &bp, &remain);
+       if (kret && (kret != EINVAL) && (kret != ENOENT))
+           goto cleanup;
+       /* Put the newly allocated data into the krb5_context
+          structure where we're really keeping it these days.  */
+       if (osp)
+           *context->os_context = *osp;
+       free(osp);
+    }
 
     /* Attempt to read in the db_context */
     kret = krb5_internalize_opaque(kcontext, KV5M_DB_CONTEXT,