1178825Sdfr/* 2178825Sdfr * Copyright (c) 2003 Kungliga Tekniska H�gskolan 3178825Sdfr * (Royal Institute of Technology, Stockholm, Sweden). 4178825Sdfr * All rights reserved. 5178825Sdfr * 6178825Sdfr * Redistribution and use in source and binary forms, with or without 7178825Sdfr * modification, are permitted provided that the following conditions 8178825Sdfr * are met: 9178825Sdfr * 10178825Sdfr * 1. Redistributions of source code must retain the above copyright 11178825Sdfr * notice, this list of conditions and the following disclaimer. 12178825Sdfr * 13178825Sdfr * 2. Redistributions in binary form must reproduce the above copyright 14178825Sdfr * notice, this list of conditions and the following disclaimer in the 15178825Sdfr * documentation and/or other materials provided with the distribution. 16178825Sdfr * 17178825Sdfr * 3. Neither the name of KTH nor the names of its contributors may be 18178825Sdfr * used to endorse or promote products derived from this software without 19178825Sdfr * specific prior written permission. 20178825Sdfr * 21178825Sdfr * THIS SOFTWARE IS PROVIDED BY KTH AND ITS CONTRIBUTORS ``AS IS'' AND ANY 22178825Sdfr * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 23178825Sdfr * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 24178825Sdfr * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL KTH OR ITS CONTRIBUTORS BE 25178825Sdfr * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 26178825Sdfr * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 27178825Sdfr * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR 28178825Sdfr * BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, 29178825Sdfr * WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR 30178825Sdfr * OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF 31178825Sdfr * ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 32178825Sdfr */ 33178825Sdfr 34178825Sdfr#include "krb5_locl.h" 35178825Sdfr#include <err.h> 36178825Sdfr 37178825SdfrRCSID("$Id: test_config.c 15036 2005-04-30 15:19:58Z lha $"); 38178825Sdfr 39178825Sdfrstatic int 40178825Sdfrcheck_config_file(krb5_context context, char *filelist, char **res, int def) 41178825Sdfr{ 42178825Sdfr krb5_error_code ret; 43178825Sdfr char **pp; 44178825Sdfr int i; 45178825Sdfr 46178825Sdfr pp = NULL; 47178825Sdfr 48178825Sdfr if (def) 49178825Sdfr ret = krb5_prepend_config_files_default(filelist, &pp); 50178825Sdfr else 51178825Sdfr ret = krb5_prepend_config_files(filelist, NULL, &pp); 52178825Sdfr 53178825Sdfr if (ret) 54178825Sdfr krb5_err(context, 1, ret, "prepend_config_files"); 55178825Sdfr 56178825Sdfr for (i = 0; res[i] && pp[i]; i++) 57178825Sdfr if (strcmp(pp[i], res[i]) != 0) 58178825Sdfr krb5_errx(context, 1, "'%s' != '%s'", pp[i], res[i]); 59178825Sdfr 60178825Sdfr if (res[i] != NULL) 61178825Sdfr krb5_errx(context, 1, "pp ended before res list"); 62178825Sdfr 63178825Sdfr if (def) { 64178825Sdfr char **deflist; 65178825Sdfr int j; 66178825Sdfr 67178825Sdfr ret = krb5_get_default_config_files(&deflist); 68178825Sdfr if (ret) 69178825Sdfr krb5_err(context, 1, ret, "get_default_config_files"); 70178825Sdfr 71178825Sdfr for (j = 0 ; pp[i] && deflist[j]; i++, j++) 72178825Sdfr if (strcmp(pp[i], deflist[j]) != 0) 73178825Sdfr krb5_errx(context, 1, "'%s' != '%s'", pp[i], deflist[j]); 74178825Sdfr 75178825Sdfr if (deflist[j] != NULL) 76178825Sdfr krb5_errx(context, 1, "pp ended before def list"); 77178825Sdfr krb5_free_config_files(deflist); 78178825Sdfr } 79178825Sdfr 80178825Sdfr if (pp[i] != NULL) 81178825Sdfr krb5_errx(context, 1, "pp ended after res (and def) list"); 82178825Sdfr 83178825Sdfr krb5_free_config_files(pp); 84178825Sdfr 85178825Sdfr return 0; 86178825Sdfr} 87178825Sdfr 88178825Sdfrchar *list0[] = { "/tmp/foo", NULL }; 89178825Sdfrchar *list1[] = { "/tmp/foo", "/tmp/foo/bar", NULL }; 90178825Sdfrchar *list2[] = { "", NULL }; 91178825Sdfr 92178825Sdfrstruct { 93178825Sdfr char *fl; 94178825Sdfr char **res; 95178825Sdfr} test[] = { 96178825Sdfr { "/tmp/foo", NULL }, 97178825Sdfr { "/tmp/foo:/tmp/foo/bar", NULL }, 98178825Sdfr { "", NULL } 99178825Sdfr}; 100178825Sdfr 101178825Sdfrint 102178825Sdfrmain(int argc, char **argv) 103178825Sdfr{ 104178825Sdfr krb5_context context; 105178825Sdfr krb5_error_code ret; 106178825Sdfr int i; 107178825Sdfr 108178825Sdfr ret = krb5_init_context(&context); 109178825Sdfr if (ret) 110178825Sdfr errx(1, "krb5_init_context %d", ret); 111178825Sdfr 112178825Sdfr test[0].res = list0; 113178825Sdfr test[1].res = list1; 114178825Sdfr test[2].res = list2; 115178825Sdfr 116178825Sdfr for (i = 0; i < sizeof(test)/sizeof(*test); i++) { 117178825Sdfr check_config_file(context, test[i].fl, test[i].res, 0); 118178825Sdfr check_config_file(context, test[i].fl, test[i].res, 1); 119178825Sdfr } 120178825Sdfr 121178825Sdfr krb5_free_context(context); 122178825Sdfr 123178825Sdfr return 0; 124178825Sdfr} 125