pull up r24469, r24530, r24533, r24534, r24535, r24537 from trunk
[krb5.git] / src / lib / krb5 / krb / auth_con.c
index 2283d1a93f62b44f0f7b05ca921c7f77dda5da43..65c87667d73921ac292f3087070112ae7108d7a2 100644 (file)
 
 static krb5_boolean chk_heimdal_seqnum(krb5_ui_4, krb5_ui_4);
 
-static krb5_error_code
-actx_copy_addr(krb5_context context, const krb5_address *inad, krb5_address **outad)
-{
-    krb5_address *tmpad;
-
-    if (!(tmpad = (krb5_address *)malloc(sizeof(*tmpad))))
-        return ENOMEM;
-    *tmpad = *inad;
-    if (!(tmpad->contents = (krb5_octet *)malloc(inad->length))) {
-        free(tmpad);
-        return ENOMEM;
-    }
-    memcpy(tmpad->contents, inad->contents, inad->length);
-    *outad = tmpad;
-    return 0;
-}
-
 krb5_error_code KRB5_CALLCONV
 krb5_auth_con_init(krb5_context context, krb5_auth_context *auth_context)
 {
@@ -115,14 +98,14 @@ krb5_auth_con_setaddrs(krb5_context context, krb5_auth_context auth_context, krb
 
     retval = 0;
     if (local_addr)
-        retval = actx_copy_addr(context,
+        retval = krb5_copy_addr(context,
                                 local_addr,
                                 &auth_context->local_addr);
     else
         auth_context->local_addr = NULL;
 
     if (!retval && remote_addr)
-        retval = actx_copy_addr(context,
+        retval = krb5_copy_addr(context,
                                 remote_addr,
                                 &auth_context->remote_addr);
     else
@@ -138,12 +121,12 @@ krb5_auth_con_getaddrs(krb5_context context, krb5_auth_context auth_context, krb
 
     retval = 0;
     if (local_addr && auth_context->local_addr) {
-        retval = actx_copy_addr(context,
+        retval = krb5_copy_addr(context,
                                 auth_context->local_addr,
                                 local_addr);
     }
     if (!retval && (remote_addr) && auth_context->remote_addr) {
-        retval = actx_copy_addr(context,
+        retval = krb5_copy_addr(context,
                                 auth_context->remote_addr,
                                 remote_addr);
     }
@@ -163,14 +146,14 @@ krb5_auth_con_setports(krb5_context context, krb5_auth_context auth_context, krb
 
     retval = 0;
     if (local_port)
-        retval = actx_copy_addr(context,
+        retval = krb5_copy_addr(context,
                                 local_port,
                                 &auth_context->local_port);
     else
         auth_context->local_port = NULL;
 
     if (!retval && remote_port)
-        retval = actx_copy_addr(context,
+        retval = krb5_copy_addr(context,
                                 remote_port,
                                 &auth_context->remote_port);
     else
@@ -237,6 +220,16 @@ krb5_auth_con_setsendsubkey(krb5_context ctx, krb5_auth_context ac, krb5_keybloc
         return 0;
 }
 
+krb5_error_code KRB5_CALLCONV
+krb5_auth_con_setsendsubkey_k(krb5_context ctx, krb5_auth_context ac,
+                              krb5_key key)
+{
+    krb5_k_free_key(ctx, ac->send_subkey);
+    ac->send_subkey = key;
+    krb5_k_reference_key(ctx, key);
+    return 0;
+}
+
 krb5_error_code KRB5_CALLCONV
 krb5_auth_con_setrecvsubkey(krb5_context ctx, krb5_auth_context ac, krb5_keyblock *keyblock)
 {
@@ -249,6 +242,16 @@ krb5_auth_con_setrecvsubkey(krb5_context ctx, krb5_auth_context ac, krb5_keybloc
         return 0;
 }
 
+krb5_error_code KRB5_CALLCONV
+krb5_auth_con_setrecvsubkey_k(krb5_context ctx, krb5_auth_context ac,
+                              krb5_key key)
+{
+    krb5_k_free_key(ctx, ac->recv_subkey);
+    ac->recv_subkey = key;
+    krb5_k_reference_key(ctx, key);
+    return 0;
+}
+
 krb5_error_code KRB5_CALLCONV
 krb5_auth_con_getsendsubkey(krb5_context ctx, krb5_auth_context ac, krb5_keyblock **keyblock)
 {
@@ -598,7 +601,7 @@ krb5_auth_con_get_subkey_enctype(krb5_context context,
     return 0;
 }
 
-krb5_error_code KRB5_CALLCONV
+krb5_error_code
 krb5_auth_con_get_authdata_context(krb5_context context,
                                    krb5_auth_context auth_context,
                                    krb5_authdata_context *ad_context)
@@ -607,7 +610,7 @@ krb5_auth_con_get_authdata_context(krb5_context context,
     return 0;
 }
 
-krb5_error_code KRB5_CALLCONV
+krb5_error_code
 krb5_auth_con_set_authdata_context(krb5_context context,
                                    krb5_auth_context auth_context,
                                    krb5_authdata_context ad_context)