ed19e88
Skip over duplicate entries in a profile's file list (closes #231147).  Files
ed19e88
are parsed in the order specified, so skipping a duplicate the second (or
ed19e88
subsequent) time it's seen shouldn't break any applications.
ed19e88
ed19e88
diff -up krb5-1.6.2/src/util/profile/prof_init.c krb5-1.6.2/src/util/profile/prof_init.c
ed19e88
--- krb5-1.6.2/src/util/profile/prof_init.c	2007-07-23 15:55:00.000000000 -0400
ed19e88
+++ krb5-1.6.2/src/util/profile/prof_init.c	2007-07-23 15:54:53.000000000 -0400
ed19e88
@@ -23,7 +23,7 @@ typedef int32_t prof_int32;
ed19e88
 errcode_t KRB5_CALLCONV
ed19e88
 profile_init(const_profile_filespec_t *files, profile_t *ret_profile)
ed19e88
 {
ed19e88
-	const_profile_filespec_t *fs;
ed19e88
+	const_profile_filespec_t *fs, *fs2;
ed19e88
 	profile_t profile;
ed19e88
 	prf_file_t  new_file, last = 0;
ed19e88
 	errcode_t retval = 0;
ed19e88
@@ -37,6 +37,11 @@ profile_init(const_profile_filespec_t *f
ed19e88
         /* if the filenames list is not specified return an empty profile */
ed19e88
         if ( files ) {
ed19e88
 	    for (fs = files; !PROFILE_LAST_FILESPEC(*fs); fs++) {
ed19e88
+	        for (fs2 = files; fs2 != fs; fs2++)
ed19e88
+		    if (strcmp(*fs2, *fs) == 0)
ed19e88
+			break;
ed19e88
+		if (fs2 != fs)
ed19e88
+		    continue;
ed19e88
 		retval = profile_open_file(*fs, &new_file);
ed19e88
 		/* if this file is missing, skip to the next */
ed19e88
 		if (retval == ENOENT || retval == EACCES) {