summaryrefslogtreecommitdiffstats
path: root/src/lib
diff options
context:
space:
mode:
authorTheodore Tso <tytso@mit.edu>1995-04-21 03:10:41 +0000
committerTheodore Tso <tytso@mit.edu>1995-04-21 03:10:41 +0000
commit69e5511fe7fe37d20da05c3ea64138d5ad4fa807 (patch)
tree7e090660e47224645054cafa9776e133a8c73e69 /src/lib
parent6cfda9ba4533630d273331b6017f2a5f5e5dbad4 (diff)
downloadkrb5-69e5511fe7fe37d20da05c3ea64138d5ad4fa807.tar.gz
krb5-69e5511fe7fe37d20da05c3ea64138d5ad4fa807.tar.xz
krb5-69e5511fe7fe37d20da05c3ea64138d5ad4fa807.zip
Unless HAVE_C_STRUCTURE_ASSIGNMENT is defined, use memcpy to copy
structures around, instead of using structure assignments. (Which aren't guaranteed to work on some broken compilers.) git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@5423 dc483132-0cff-0310-8789-dd5450dbe970
Diffstat (limited to 'src/lib')
-rw-r--r--src/lib/krb5/krb/ChangeLog8
-rw-r--r--src/lib/krb5/krb/copy_addrs.c4
-rw-r--r--src/lib/krb5/krb/copy_athctr.c4
-rw-r--r--src/lib/krb5/krb/copy_auth.c4
-rw-r--r--src/lib/krb5/krb/copy_cksum.c4
-rw-r--r--src/lib/krb5/krb/copy_creds.c4
-rw-r--r--src/lib/krb5/krb/copy_key.c4
-rw-r--r--src/lib/krb5/krb/copy_princ.c4
-rw-r--r--src/lib/krb5/krb/copy_tick.c8
-rw-r--r--src/lib/krb5/krb/gc_2tgt.c6
-rw-r--r--src/lib/krb5/krb/gc_frm_kdc.c5
-rw-r--r--src/lib/krb5/krb/gc_via_tgt.c5
-rw-r--r--src/lib/krb5/krb/get_creds.c4
-rw-r--r--src/lib/krb5/krb/mk_req_ext.c5
14 files changed, 69 insertions, 0 deletions
diff --git a/src/lib/krb5/krb/ChangeLog b/src/lib/krb5/krb/ChangeLog
index cbe035a77..55e9f2974 100644
--- a/src/lib/krb5/krb/ChangeLog
+++ b/src/lib/krb5/krb/ChangeLog
@@ -1,5 +1,13 @@
Thu Apr 20 16:23:23 1995 Theodore Y. Ts'o (tytso@dcl)
+ * copy_addrs.c, copy_athctr.c, copy_auth.c, copy_cksum.c,
+ copy_creds.c, copy_key.c, copy_princ.c, copy_tick.c,
+ gc_2tgt.c, gc_frm_kdc.c, gc_via_tgt.c, get_creds.c,
+ mk_req_ext.c: Unless HAVE_C_STRUCTURE_ASSIGNMENT is defined, use
+ memcpy to copy structures around, instead of using
+ structure assignments. (Which aren't guaranteed to work
+ on some broken compilers.)
+
* mk_req.c (krb5_mk_req): Use krb5_sname_to_principal() in order
to create the service principal from the service and
hostname pair. This allows for the host cannoncialization
diff --git a/src/lib/krb5/krb/copy_addrs.c b/src/lib/krb5/krb/copy_addrs.c
index fa3773103..5d17ed3e7 100644
--- a/src/lib/krb5/krb/copy_addrs.c
+++ b/src/lib/krb5/krb/copy_addrs.c
@@ -36,7 +36,11 @@ krb5_address **outad;
if (!(tmpad = (krb5_address *)malloc(sizeof(*tmpad))))
return ENOMEM;
+#ifdef HAVE_C_STRUCTURE_ASSIGNMENT
*tmpad = *inad;
+#else
+ memcpy(tmpad, inad, sizeof(krb5_address));
+#endif
if (!(tmpad->contents = (krb5_octet *)malloc(inad->length))) {
krb5_xfree(tmpad);
return ENOMEM;
diff --git a/src/lib/krb5/krb/copy_athctr.c b/src/lib/krb5/krb/copy_athctr.c
index 5523f3134..d162fb215 100644
--- a/src/lib/krb5/krb/copy_athctr.c
+++ b/src/lib/krb5/krb/copy_athctr.c
@@ -37,7 +37,11 @@ krb5_authenticator **authto;
if (!(tempto = (krb5_authenticator *)malloc(sizeof(*tempto))))
return ENOMEM;
+#ifdef HAVE_C_STRUCTURE_ASSIGNMENT
*tempto = *authfrom;
+#else
+ memcpy(tempto, authfrom, sizeof(krb5_authenticator));
+#endif
retval = krb5_copy_principal(context, authfrom->client, &tempto->client);
if (retval) {
diff --git a/src/lib/krb5/krb/copy_auth.c b/src/lib/krb5/krb/copy_auth.c
index 23c91dc28..759608ca5 100644
--- a/src/lib/krb5/krb/copy_auth.c
+++ b/src/lib/krb5/krb/copy_auth.c
@@ -36,7 +36,11 @@ krb5_authdata **outad;
if (!(tmpad = (krb5_authdata *)malloc(sizeof(*tmpad))))
return ENOMEM;
+#ifdef HAVE_C_STRUCTURE_ASSIGNMENT
*tmpad = *inad;
+#else
+ memcpy(tmpad, inad, sizeof(krb5_authdata));
+#endif
if (!(tmpad->contents = (krb5_octet *)malloc(inad->length))) {
krb5_xfree(tmpad);
return ENOMEM;
diff --git a/src/lib/krb5/krb/copy_cksum.c b/src/lib/krb5/krb/copy_cksum.c
index 4d8d3efc6..5a9a893d4 100644
--- a/src/lib/krb5/krb/copy_cksum.c
+++ b/src/lib/krb5/krb/copy_cksum.c
@@ -36,7 +36,11 @@ krb5_copy_checksum(context, ckfrom, ckto)
if (!(tempto = (krb5_checksum *)malloc(sizeof(*tempto))))
return ENOMEM;
+#ifdef HAVE_C_STRUCTURE_ASSIGNMENT
*tempto = *ckfrom;
+#else
+ memcpy(tempto, ckfrom, sizeof(krb5_checksum));
+#endif
if (!(tempto->contents =
(krb5_octet *)malloc(tempto->length))) {
diff --git a/src/lib/krb5/krb/copy_creds.c b/src/lib/krb5/krb/copy_creds.c
index 1b58af914..712ca3833 100644
--- a/src/lib/krb5/krb/copy_creds.c
+++ b/src/lib/krb5/krb/copy_creds.c
@@ -43,7 +43,11 @@ krb5_copy_creds(context, incred, outcred)
if (!(tempcred = (krb5_creds *)malloc(sizeof(*tempcred))))
return ENOMEM;
+#ifdef HAVE_C_STRUCTURE_ASSIGNMENT
*tempcred = *incred; /* copy everything quickly */
+#else
+ memcpy(tempcred, incred, sizeof(krb5_creds));
+#endif
retval = krb5_copy_principal(context, incred->client, &tempcred->client);
if (retval)
goto cleanlast;
diff --git a/src/lib/krb5/krb/copy_key.c b/src/lib/krb5/krb/copy_key.c
index 065b66ef8..e71f39961 100644
--- a/src/lib/krb5/krb/copy_key.c
+++ b/src/lib/krb5/krb/copy_key.c
@@ -39,7 +39,11 @@ krb5_copy_keyblock(context, from, to)
if (!(new_key = (krb5_keyblock *) malloc(sizeof(krb5_keyblock))))
return ENOMEM;
+#ifdef HAVE_C_STRUCTURE_ASSIGNMENT
*new_key = *from;
+#else
+ memcpy(new_key, from, sizeof(krb5_keyblock));
+#endif
if (!(new_key->contents = (krb5_octet *)malloc(new_key->length))) {
krb5_xfree(new_key);
return(ENOMEM);
diff --git a/src/lib/krb5/krb/copy_princ.c b/src/lib/krb5/krb/copy_princ.c
index 43836eb06..4dbf44e7e 100644
--- a/src/lib/krb5/krb/copy_princ.c
+++ b/src/lib/krb5/krb/copy_princ.c
@@ -43,7 +43,11 @@ krb5_copy_principal(context, inprinc, outprinc)
if (tempprinc == 0)
return ENOMEM;
+#ifdef HAVE_C_STRUCTURE_ASSIGNMENT
*tempprinc = *inprinc; /* Copy all of the non-allocated pieces */
+#else
+ memcpy(tempprinc, inprinc, sizeof(krb5_principal_data));
+#endif
nelems = (int) krb5_princ_size(context, inprinc);
tempprinc->data = malloc(nelems * sizeof(krb5_data));
diff --git a/src/lib/krb5/krb/copy_tick.c b/src/lib/krb5/krb/copy_tick.c
index 3d9b99a99..a4dbed4df 100644
--- a/src/lib/krb5/krb/copy_tick.c
+++ b/src/lib/krb5/krb/copy_tick.c
@@ -37,7 +37,11 @@ krb5_copy_enc_tkt_part(context, partfrom, partto)
if (!(tempto = (krb5_enc_tkt_part *)malloc(sizeof(*tempto))))
return ENOMEM;
+#ifdef HAVE_C_STRUCTURE_ASSIGNMENT
*tempto = *partfrom;
+#else
+ memcpy(tempto, partfrom, sizeof(krb5_enc_tkt_part));
+#endif
retval = krb5_copy_keyblock(context, partfrom->session,
&tempto->session);
if (retval) {
@@ -103,7 +107,11 @@ krb5_copy_ticket(context, from, pto)
if (!(tempto = (krb5_ticket *)malloc(sizeof(*tempto))))
return ENOMEM;
+#ifdef HAVE_C_STRUCTURE_ASSIGNMENT
*tempto = *from;
+#else
+ memcpy(tempto, from, sizeof(krb5_ticket));
+#endif
retval = krb5_copy_principal(context, from->server, &tempto->server);
if (retval) {
krb5_xfree(tempto);
diff --git a/src/lib/krb5/krb/gc_2tgt.c b/src/lib/krb5/krb/gc_2tgt.c
index 9f9106fc0..c5ddcf7c4 100644
--- a/src/lib/krb5/krb/gc_2tgt.c
+++ b/src/lib/krb5/krb/gc_2tgt.c
@@ -139,7 +139,13 @@ krb5_get_cred_via_2tgt (context, tgt, kdcoptions, sumtype, in_cred, out_cred)
goto errout;
/* Should verify that the ticket is what we asked for. */
+#ifdef HAVE_C_STRUCTURE_ASSIGNMENT
(*out_cred)->times = dec_rep->enc_part2->times;
+#else
+ memcpy(&(*out_cred)->times, &dec_rep->enc_part2->times,
+ sizeof(krb5_ticket_times));
+#endif
+
(*out_cred)->ticket_flags = dec_rep->enc_part2->flags;
(*out_cred)->is_skey = TRUE;
if (dec_rep->enc_part2->caddrs)
diff --git a/src/lib/krb5/krb/gc_frm_kdc.c b/src/lib/krb5/krb/gc_frm_kdc.c
index 30e278d38..b82d023a1 100644
--- a/src/lib/krb5/krb/gc_frm_kdc.c
+++ b/src/lib/krb5/krb/gc_frm_kdc.c
@@ -241,7 +241,12 @@ krb5_get_cred_from_kdc(context, ccache, in_cred, out_cred, tgts)
krb5_free_cred_contents(context, &tgtq);
memset(&tgtq, 0, sizeof(tgtq));
+#ifdef HAVE_C_STRUCTURE_ASSIGNMENT
tgtq.times = tgt.times;
+#else
+ memcpy(&tgtq.times, &tgt.times, sizeof(krb5_ticket_times));
+#endif
+
if (retval = krb5_copy_principal(context, tgt.client, &tgtq.client))
goto cleanup;
if(retval = krb5_copy_principal(context, int_server, &tgtq.server))
diff --git a/src/lib/krb5/krb/gc_via_tgt.c b/src/lib/krb5/krb/gc_via_tgt.c
index c0d31c25d..5c15a0138 100644
--- a/src/lib/krb5/krb/gc_via_tgt.c
+++ b/src/lib/krb5/krb/gc_via_tgt.c
@@ -137,7 +137,12 @@ krb5_get_cred_via_tgt (context, tgt, kdcoptions, sumtype, in_cred, out_cred)
}
(*out_cred)->keyblock.etype = dec_rep->ticket->enc_part.etype;
+#ifdef HAVE_C_STRUCTURE_ASSIGNMENT
(*out_cred)->times = dec_rep->enc_part2->times;
+#else
+ memcpy(&(*out_cred)->times, &dec_rep->enc_part2->times,
+ sizeof(krb5_ticket_times));
+#endif
#if 0
/* XXX probably need access to the request */
diff --git a/src/lib/krb5/krb/get_creds.c b/src/lib/krb5/krb/get_creds.c
index bc9360a93..58ecd0035 100644
--- a/src/lib/krb5/krb/get_creds.c
+++ b/src/lib/krb5/krb/get_creds.c
@@ -61,7 +61,11 @@ krb5_get_credentials(context, options, ccache, in_creds, out_creds)
memset((char *)&mcreds, 0, sizeof(krb5_creds));
mcreds.times.endtime = in_creds->times.endtime;
+#ifdef HAVE_C_STRUCTURE_ASSIGNMENT
mcreds.keyblock = in_creds->keyblock;
+#else
+ memcpy(&mcreds.keyblock, &in_creds->keyblock, sizeof(krb5_keyblock));
+#endif
mcreds.authdata = in_creds->authdata;
mcreds.server = in_creds->server;
mcreds.client = in_creds->client;
diff --git a/src/lib/krb5/krb/mk_req_ext.c b/src/lib/krb5/krb/mk_req_ext.c
index f146d1483..6cfaf11b3 100644
--- a/src/lib/krb5/krb/mk_req_ext.c
+++ b/src/lib/krb5/krb/mk_req_ext.c
@@ -221,7 +221,12 @@ krb5_mk_req_extended(context, auth_context, ap_req_options, in_data, in_creds,
if (retval = encode_krb5_ap_req(&request, &toutbuf))
goto cleanup_cksum;
+#ifdef HAVE_C_STRUCTURE_ASSIGNMENT
*outbuf = *toutbuf;
+#else
+ memcpy(outbuf, toutbuf, sizeof(krb5_data));
+#endif
+
krb5_xfree(toutbuf);
cleanup_cksum: