krb5_pointer),
krb5_pointer);
-krb5_error_code krb5_string_to_keysalts(char *, const char *, const char *,
- krb5_boolean, krb5_key_salt_tuple **,
- krb5_int32 *);
+krb5_error_code krb5_string_to_keysalts(const char *, const char *,
+ const char *, krb5_boolean,
+ krb5_key_salt_tuple **, krb5_int32 *);
#endif /* KRB5_ADM_PROTO_H__ */
maybe shouldn't be named krb5_*, but they are. */
krb5_error_code
-krb5_string_to_keysalts(char *string, const char *tupleseps,
+krb5_string_to_keysalts(const char *string, const char *tupleseps,
const char *ksaltseps, krb5_boolean dups,
krb5_key_salt_tuple **ksaltp, krb5_int32 *nksaltp);
/* Validate allowed_keysalts. */
static kadm5_ret_t
-validate_allowed_keysalts(char *allowed_keysalts)
+validate_allowed_keysalts(const char *allowed_keysalts)
{
kadm5_ret_t ret;
krb5_key_salt_tuple *ks_tuple = NULL;
* of key/salt tuples.
*/
krb5_error_code
-krb5_string_to_keysalts(string, tupleseps, ksaltseps, dups, ksaltp, nksaltp)
- char *string;
- const char *tupleseps;
- const char *ksaltseps;
- krb5_boolean dups;
- krb5_key_salt_tuple **ksaltp;
- krb5_int32 *nksaltp;
+krb5_string_to_keysalts(const char *string, const char *tupleseps,
+ const char *ksaltseps, krb5_boolean dups,
+ krb5_key_salt_tuple **ksaltp, krb5_int32 *nksaltp)
{
krb5_error_code kret;
- char *kp, *sp, *ep;
+ char *dup_string, *kp, *sp, *ep;
char sepchar = 0, trailchar = 0;
krb5_enctype ktype;
krb5_int32 stype;
size_t len;
kret = 0;
- kp = string;
+ dup_string = strdup(string);
+ if (dup_string == NULL)
+ return ENOMEM;
+ kp = dup_string;
tseplist = (tupleseps) ? tupleseps : default_tupleseps;
ksseplist = (ksaltseps) ? ksaltseps : default_ksaltseps;
while (kp) {
break;
}
}
- if (kret)
+ if (kret) {
+ free(dup_string);
return kret;
+ }
if (sp)
sp[-1] = sepchar;
if (ep)
if (!*kp) kp = NULL;
}
} /* while kp */
+ free(dup_string);
return(kret);
}