summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorSam Hartman <hartmans@mit.edu>1996-07-27 02:23:23 +0000
committerSam Hartman <hartmans@mit.edu>1996-07-27 02:23:23 +0000
commit26415263231eaafd37f5c361a63e5ab75feb8703 (patch)
treec920d5566e6f0425cc0e857a539a202b9a27c263 /src
parentfea030df3d04c20bebd81ff874a2d54eae9133e6 (diff)
downloadkrb5-26415263231eaafd37f5c361a63e5ab75feb8703.tar.gz
krb5-26415263231eaafd37f5c361a63e5ab75feb8703.tar.xz
krb5-26415263231eaafd37f5c361a63e5ab75feb8703.zip
It's not an out-of-space error if malloc(0) returns 0.
So, when copying key_data, only call malloc if the length is non-zero. git-svn-id: svn://anonsvn.mit.edu/krb5/trunk@8850 dc483132-0cff-0310-8789-dd5450dbe970
Diffstat (limited to 'src')
-rw-r--r--src/lib/kadm5/srv/ChangeLog6
-rw-r--r--src/lib/kadm5/srv/svr_principal.c28
2 files changed, 21 insertions, 13 deletions
diff --git a/src/lib/kadm5/srv/ChangeLog b/src/lib/kadm5/srv/ChangeLog
index 0011ab863..d771d96a6 100644
--- a/src/lib/kadm5/srv/ChangeLog
+++ b/src/lib/kadm5/srv/ChangeLog
@@ -1,3 +1,9 @@
+Fri Jul 26 17:48:14 1996 Sam Hartman <hartmans@mit.edu>
+
+ * svr_principal.c (krb5_copy_key_data_contents): If
+ key_data_length[i] == 0, don't complain if malloc(0) returns 0;
+ this is allowed by ANSI.
+
Thu Jul 25 18:42:47 1996 Sam Hartman <hartmans@mit.edu>
* configure.in (LIBS): Link against -ldb under AIX for shared
diff --git a/src/lib/kadm5/srv/svr_principal.c b/src/lib/kadm5/srv/svr_principal.c
index 6f9671fcf..c8dcdd66d 100644
--- a/src/lib/kadm5/srv/svr_principal.c
+++ b/src/lib/kadm5/srv/svr_principal.c
@@ -57,19 +57,21 @@ kadm5_ret_t krb5_copy_key_data_contents(context, from, to)
idx = (from->key_data_ver == 1 ? 1 : 2);
for (i = 0; i < idx; i++) {
- to->key_data_contents[i] = malloc(from->key_data_length[i]);
- if (to->key_data_contents[i] == NULL) {
- for (i = 0; i < idx; i++) {
- if (to->key_data_contents[i]) {
- memset(to->key_data_contents[i], 0,
- to->key_data_length[i]);
- free(to->key_data_contents[i]);
- }
- }
- return ENOMEM;
- }
- memcpy(to->key_data_contents[i], from->key_data_contents[i],
- from->key_data_length[i]);
+ if ( from->key_data_length[i] ) {
+ to->key_data_contents[i] = malloc(from->key_data_length[i]);
+ if (to->key_data_contents[i] == NULL) {
+ for (i = 0; i < idx; i++) {
+ if (to->key_data_contents[i]) {
+ memset(to->key_data_contents[i], 0,
+ to->key_data_length[i]);
+ free(to->key_data_contents[i]);
+ }
+ }
+ return ENOMEM;
+ }
+ memcpy(to->key_data_contents[i], from->key_data_contents[i],
+ from->key_data_length[i]);
+ }
}
return 0;
}