aboutsummaryrefslogtreecommitdiff
path: root/kadmin/mod.c
diff options
context:
space:
mode:
Diffstat (limited to 'kadmin/mod.c')
-rw-r--r--kadmin/mod.c126
1 files changed, 64 insertions, 62 deletions
diff --git a/kadmin/mod.c b/kadmin/mod.c
index f5f9e0467a5b..940425f2a54b 100644
--- a/kadmin/mod.c
+++ b/kadmin/mod.c
@@ -1,41 +1,39 @@
/*
- * Copyright (c) 1997 - 2006 Kungliga Tekniska Högskolan
- * (Royal Institute of Technology, Stockholm, Sweden).
- * All rights reserved.
+ * Copyright (c) 1997 - 2006 Kungliga Tekniska Högskolan
+ * (Royal Institute of Technology, Stockholm, Sweden).
+ * All rights reserved.
*
- * Redistribution and use in source and binary forms, with or without
- * modification, are permitted provided that the following conditions
- * are met:
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions
+ * are met:
*
- * 1. Redistributions of source code must retain the above copyright
- * notice, this list of conditions and the following disclaimer.
+ * 1. Redistributions of source code must retain the above copyright
+ * notice, this list of conditions and the following disclaimer.
*
- * 2. Redistributions in binary form must reproduce the above copyright
- * notice, this list of conditions and the following disclaimer in the
- * documentation and/or other materials provided with the distribution.
+ * 2. Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
*
- * 3. Neither the name of the Institute nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
+ * 3. Neither the name of the Institute nor the names of its contributors
+ * may be used to endorse or promote products derived from this software
+ * without specific prior written permission.
*
- * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND
- * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
- * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE
- * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
- * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
- * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
- * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
- * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
- * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
- * SUCH DAMAGE.
+ * THIS SOFTWARE IS PROVIDED BY THE INSTITUTE AND CONTRIBUTORS ``AS IS'' AND
+ * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
+ * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
+ * ARE DISCLAIMED. IN NO EVENT SHALL THE INSTITUTE OR CONTRIBUTORS BE LIABLE
+ * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+ * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
+ * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
+ * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
+ * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
+ * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
+ * SUCH DAMAGE.
*/
#include "kadmin_locl.h"
#include "kadmin-commands.h"
-RCSID("$Id: mod.c 21968 2007-10-18 18:50:33Z lha $");
-
static void
add_tl(kadm5_principal_ent_rec *princ, int type, krb5_data *data)
{
@@ -46,7 +44,7 @@ add_tl(kadm5_principal_ent_rec *princ, int type, krb5_data *data)
tl->tl_data_type = KRB5_TL_EXTENSION;
tl->tl_data_length = data->length;
tl->tl_data_contents = data->data;
-
+
princ->n_tl_data++;
ptl = &princ->tl_data;
while (*ptl != NULL)
@@ -57,15 +55,15 @@ add_tl(kadm5_principal_ent_rec *princ, int type, krb5_data *data)
}
static void
-add_constrained_delegation(krb5_context context,
+add_constrained_delegation(krb5_context contextp,
kadm5_principal_ent_rec *princ,
struct getarg_strings *strings)
{
krb5_error_code ret;
HDB_extension ext;
krb5_data buf;
- size_t size;
-
+ size_t size = 0;
+
memset(&ext, 0, sizeof(ext));
ext.mandatory = FALSE;
ext.data.element = choice_HDB_extension_data_allowed_to_delegate_to;
@@ -77,15 +75,19 @@ add_constrained_delegation(krb5_context context,
krb5_principal p;
int i;
- ext.data.u.allowed_to_delegate_to.val =
- calloc(strings->num_strings,
+ ext.data.u.allowed_to_delegate_to.val =
+ calloc(strings->num_strings,
sizeof(ext.data.u.allowed_to_delegate_to.val[0]));
ext.data.u.allowed_to_delegate_to.len = strings->num_strings;
-
+
for (i = 0; i < strings->num_strings; i++) {
- ret = krb5_parse_name(context, strings->strings[i], &p);
+ ret = krb5_parse_name(contextp, strings->strings[i], &p);
+ if (ret)
+ abort();
ret = copy_Principal(p, &ext.data.u.allowed_to_delegate_to.val[i]);
- krb5_free_principal(context, p);
+ if (ret)
+ abort();
+ krb5_free_principal(contextp, p);
}
}
@@ -101,16 +103,16 @@ add_constrained_delegation(krb5_context context,
}
static void
-add_aliases(krb5_context context, kadm5_principal_ent_rec *princ,
+add_aliases(krb5_context contextp, kadm5_principal_ent_rec *princ,
struct getarg_strings *strings)
{
krb5_error_code ret;
HDB_extension ext;
krb5_data buf;
krb5_principal p;
- size_t size;
+ size_t size = 0;
int i;
-
+
memset(&ext, 0, sizeof(ext));
ext.mandatory = FALSE;
ext.data.element = choice_HDB_extension_data_aliases;
@@ -120,15 +122,15 @@ add_aliases(krb5_context context, kadm5_principal_ent_rec *princ,
ext.data.u.aliases.aliases.val = NULL;
ext.data.u.aliases.aliases.len = 0;
} else {
- ext.data.u.aliases.aliases.val =
- calloc(strings->num_strings,
+ ext.data.u.aliases.aliases.val =
+ calloc(strings->num_strings,
sizeof(ext.data.u.aliases.aliases.val[0]));
ext.data.u.aliases.aliases.len = strings->num_strings;
-
+
for (i = 0; i < strings->num_strings; i++) {
- ret = krb5_parse_name(context, strings->strings[i], &p);
+ ret = krb5_parse_name(contextp, strings->strings[i], &p);
ret = copy_Principal(p, &ext.data.u.aliases.aliases.val[i]);
- krb5_free_principal(context, p);
+ krb5_free_principal(contextp, p);
}
}
@@ -139,20 +141,20 @@ add_aliases(krb5_context context, kadm5_principal_ent_rec *princ,
abort();
if (buf.length != size)
abort();
-
+
add_tl(princ, KRB5_TL_EXTENSION, &buf);
}
static void
-add_pkinit_acl(krb5_context context, kadm5_principal_ent_rec *princ,
+add_pkinit_acl(krb5_context contextp, kadm5_principal_ent_rec *princ,
struct getarg_strings *strings)
{
krb5_error_code ret;
HDB_extension ext;
krb5_data buf;
- size_t size;
+ size_t size = 0;
int i;
-
+
memset(&ext, 0, sizeof(ext));
ext.mandatory = FALSE;
ext.data.element = choice_HDB_extension_data_pkinit_acl;
@@ -162,11 +164,11 @@ add_pkinit_acl(krb5_context context, kadm5_principal_ent_rec *princ,
ext.data.u.pkinit_acl.val = NULL;
ext.data.u.pkinit_acl.len = 0;
} else {
- ext.data.u.pkinit_acl.val =
- calloc(strings->num_strings,
+ ext.data.u.pkinit_acl.val =
+ calloc(strings->num_strings,
sizeof(ext.data.u.pkinit_acl.val[0]));
ext.data.u.pkinit_acl.len = strings->num_strings;
-
+
for (i = 0; i < strings->num_strings; i++) {
ext.data.u.pkinit_acl.val[i].subject = estrdup(strings->strings[i]);
}
@@ -179,7 +181,7 @@ add_pkinit_acl(krb5_context context, kadm5_principal_ent_rec *princ,
abort();
if (buf.length != size)
abort();
-
+
add_tl(princ, KRB5_TL_EXTENSION, &buf);
}
@@ -190,17 +192,17 @@ do_mod_entry(krb5_principal principal, void *data)
kadm5_principal_ent_rec princ;
int mask = 0;
struct modify_options *e = data;
-
+
memset (&princ, 0, sizeof(princ));
ret = kadm5_get_principal(kadm_handle, principal, &princ,
- KADM5_PRINCIPAL | KADM5_ATTRIBUTES |
+ KADM5_PRINCIPAL | KADM5_ATTRIBUTES |
KADM5_MAX_LIFE | KADM5_MAX_RLIFE |
KADM5_PRINC_EXPIRE_TIME |
KADM5_PW_EXPIRATION);
- if(ret)
+ if(ret)
return ret;
- if(e->max_ticket_life_string ||
+ if(e->max_ticket_life_string ||
e->max_renewable_life_string ||
e->expiration_time_string ||
e->pw_expiration_time_string ||
@@ -209,11 +211,11 @@ do_mod_entry(krb5_principal principal, void *data)
e->constrained_delegation_strings.num_strings ||
e->alias_strings.num_strings ||
e->pkinit_acl_strings.num_strings) {
- ret = set_entry(context, &princ, &mask,
- e->max_ticket_life_string,
- e->max_renewable_life_string,
- e->expiration_time_string,
- e->pw_expiration_time_string,
+ ret = set_entry(context, &princ, &mask,
+ e->max_ticket_life_string,
+ e->max_renewable_life_string,
+ e->expiration_time_string,
+ e->pw_expiration_time_string,
e->attributes_string);
if(e->kvno_integer != -1) {
princ.kvno = e->kvno_integer;
@@ -240,7 +242,7 @@ do_mod_entry(krb5_principal principal, void *data)
if(ret)
krb5_warn(context, ret, "kadm5_modify_principal");
}
-
+
kadm5_free_principal_ent(kadm_handle, &princ);
return ret;
}