svn commit: lorikeet r48 - in trunk/heimdal/lib/hdb: .
abartlet at samba.org
abartlet at samba.org
Mon Sep 6 02:56:49 GMT 2004
Author: abartlet
Date: 2004-09-06 02:56:49 +0000 (Mon, 06 Sep 2004)
New Revision: 48
WebSVN: http://websvn.samba.org/websvn/changeset.php?rep=lorikeet&path=/trunk/heimdal/lib/hdb&rev=48&nolog=1
Log:
Fix valgrind errors by simply allocating the enctypes[] array.
Andrew Bartlett
Modified:
trunk/heimdal/lib/hdb/keys.c
Changeset:
Modified: trunk/heimdal/lib/hdb/keys.c
===================================================================
--- trunk/heimdal/lib/hdb/keys.c 2004-09-06 02:55:59 UTC (rev 47)
+++ trunk/heimdal/lib/hdb/keys.c 2004-09-06 02:56:49 UTC (rev 48)
@@ -78,7 +78,6 @@
char buf[3][256];
int num_buf = 0;
int i;
- static krb5_enctype e; /* XXX */
krb5_error_code ret;
/* the 3 DES types must be first */
@@ -112,18 +111,21 @@
/* XXX there should be a string_to_etypes handling
special cases like `des' and `all' */
if(strcmp(buf[i], "des") == 0) {
- *enctypes = all_etypes;
+ *enctypes = malloc(sizeof(all_etypes[0])*3);
+ memcpy(*enctypes, all_etypes, sizeof(all_etypes[0])*3);
*num_enctypes = 3;
continue;
} else if(strcmp(buf[i], "des3") == 0) {
- e = ETYPE_DES3_CBC_SHA1;
- *enctypes = &e;
+ *enctypes = malloc(sizeof(**enctypes));
+ *enctypes[0] = ETYPE_DES3_CBC_SHA1;
*num_enctypes = 1;
continue;
} else {
+ krb5_enctype e;
ret = krb5_string_to_enctype(context, buf[i], &e);
if (ret == 0) {
- *enctypes = &e;
+ *enctypes = malloc(sizeof(**enctypes));
+ *enctypes[0] = e;
*num_enctypes = 1;
continue;
}
@@ -137,13 +139,15 @@
interface sucks */
if(strcmp(buf[i], "pw-salt") == 0) {
if(*enctypes == NULL) {
- *enctypes = all_etypes;
+ *enctypes = malloc(sizeof(all_etypes));
+ memcpy(*enctypes, all_etypes, sizeof(all_etypes));
*num_enctypes = sizeof(all_etypes)/sizeof(all_etypes[0]);
}
salt->salttype = KRB5_PW_SALT;
} else if(strcmp(buf[i], "afs3-salt") == 0) {
if(*enctypes == NULL) {
- *enctypes = all_etypes;
+ *enctypes = malloc(sizeof(all_etypes[0])*3);
+ memcpy(*enctypes, all_etypes, sizeof(all_etypes[0])*3);
*num_enctypes = 3;
}
salt->salttype = KRB5_AFS3_SALT;
@@ -172,6 +176,7 @@
if(salt->saltvalue.data == NULL) {
krb5_set_error_string(context, "out of memory while "
"parsing salt specifiers");
+ free(*enctypes);
return ENOMEM;
}
strlwr(salt->saltvalue.data);
@@ -313,10 +318,13 @@
if (j == *nkeyset) {
ret = add_enctype_to_key_set(&key_set, nkeyset, enctypes[i],
no_salt ? NULL : &salt);
- if (ret)
- goto out;
+ if (ret) {
+ free(enctypes);
+ goto out;
+ }
}
}
+ free(enctypes);
}
out:
More information about the samba-cvs
mailing list