krb5int_gic_opte_copy should copy elements individually
authorAlexandra Ellwood <lxs@mit.edu>
Mon, 7 Jul 2008 19:08:01 +0000 (19:08 +0000)
committerAlexandra Ellwood <lxs@mit.edu>
Mon, 7 Jul 2008 19:08:01 +0000 (19:08 +0000)
Since we are copying from one structure to another, copy elements.
Using memcpy is fragile.

ticket: new
status: open

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

src/lib/krb5/krb/gic_opt.c

index ab73d2c8e1ff074aded52eeab648f94c892ee688..1ba1877bf96c33ec47db510315c71fee445cf270 100644 (file)
@@ -216,8 +216,19 @@ krb5int_gic_opte_copy(krb5_context context,
     if (NULL == oe)
        return ENOMEM;
 
-    if (opt)
-        memcpy(oe, opt, sizeof(*opt));
+    if (opt) {
+       oe->flags               = opt->flags;
+       oe->tkt_life            = opt->tkt_life;
+       oe->renew_life          = opt->renew_life;
+       oe->forwardable         = opt->forwardable;
+       oe->proxiable           = opt->proxiable;
+       oe->etype_list          = opt->etype_list;
+       oe->etype_list_length   = opt->etype_list_length;
+       oe->address_list        = opt->address_list;
+       oe->preauth_list        = opt->preauth_list;
+       oe->preauth_list_length = opt->preauth_list_length;
+       oe->salt                = opt->salt;
+    }
 
     /*
      * Fix the flags -- the EXTENDED flag would have been