${TOP_LIBDIR}/liblwp.a \
${TOP_LIBDIR}/util.a
-INCLS=cellconfig.h auth.h keys.h internal.h token.h
+INCLS=cellconfig.h auth.h authcon.h keys.h internal.h token.h
all: liboafs_auth.la libauth_pic.la libpam_auth.la \
${TOP_LIBDIR}/libauth.a ${TOP_LIBDIR}/libauth.krb.a \
depinstall: ${TOP_INCDIR}/afs/keys.h \
${TOP_INCDIR}/afs/cellconfig.h \
${TOP_INCDIR}/afs/auth.h \
+ ${TOP_INCDIR}/afs/authcon.h \
${TOP_INCDIR}/afs/ktc.h \
${TOP_INCDIR}/afs/token.h \
token.h \
${TOP_INCDIR}/afs/auth.h: auth.h
${INSTALL_DATA} $? $@
+${TOP_INCDIR}/afs/authcon.h: authcon.h
+ ${INSTALL_DATA} $? $@
+
${TOP_INCDIR}/afs/ktc.h: ktc.h
${INSTALL_DATA} $? $@
INCFILES =\
$(INCFILEDIR)\auth.h \
+ $(INCFILEDIR)\authcon.h \
$(INCFILEDIR)\cellconfig.h \
$(INCFILEDIR)\keys.h \
$(INCFILEDIR)\token.h
#include "keys.h"
#include "ktc.h"
#include "auth.h"
+#include "authcon.h"
#ifdef AFS_RXGK_ENV
# include <rx/rxgk.h>
dir->securityFlags = flags;
}
+static void
+LogDesWarning(struct afsconf_bsso_info *info)
+{
+ if (info->logger == NULL) {
+ return;
+ }
+ /* The blank newlines help this stand out a bit more in the log. */
+ (*info->logger)("\n");
+ (*info->logger)("WARNING: You are using single-DES keys in a KeyFile. Using "
+ "single-DES\n");
+ (*info->logger)("WARNING: long-term keys is considered insecure, and it is "
+ "strongly\n");
+ (*info->logger)("WARNING: recommended that you migrate to stronger "
+ "encryption. See\n");
+ (*info->logger)("WARNING: OPENAFS-SA-2013-003 on "
+ "http://www.openafs.org/security/\n");
+ (*info->logger)("WARNING: for details.\n");
+ (*info->logger)("\n");
+}
+
+static void
+LogNoKeysWarning(struct afsconf_bsso_info *info)
+{
+ if (info->logger == NULL) {
+ return;
+ }
+ (*info->logger)("WARNING: No encryption keys found! "
+ "All authenticated accesses will fail. "
+ "Run akeyconvert or asetkey to import encryption keys.\n");
+}
+
+/* Older version of afsconf_BuildServerSecurityObjects_int. In-tree callers
+ * should use afsconf_BuildServerSecurityObjects_int where possible. */
+void
+afsconf_BuildServerSecurityObjects(void *rock,
+ struct rx_securityClass ***classes,
+ afs_int32 *numClasses)
+{
+ struct afsconf_bsso_info info;
+ memset(&info, 0, sizeof(info));
+ info.dir = rock;
+ afsconf_BuildServerSecurityObjects_int(&info, classes, numClasses);
+}
+
/*!
* Build a set of security classes suitable for a server accepting
* incoming connections
*/
void
-afsconf_BuildServerSecurityObjects(void *rock,
- struct rx_securityClass ***classes,
- afs_int32 *numClasses)
+afsconf_BuildServerSecurityObjects_int(struct afsconf_bsso_info *info,
+ struct rx_securityClass ***classes,
+ afs_int32 *numClasses)
{
- struct afsconf_dir *dir = rock;
+ struct afsconf_dir *dir = info->dir;
+
+ if (afsconf_GetLatestKey(dir, NULL, NULL) == 0) {
+ LogDesWarning(info);
+ }
+ if (afsconf_CountKeys(dir) == 0) {
+ LogNoKeysWarning(info);
+ }
*numClasses = RX_SECIDX_GK+1;
--- /dev/null
+/*
+ * Copyright (c) 2020 Sine Nomine Associates. All rights reserved.
+ *
+ * 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.
+ *
+ * 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.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE AUTHOR `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 AUTHOR 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.
+ */
+
+#ifndef OPENAFS_AUTH_AUTHCON_H
+#define OPENAFS_AUTH_AUTHCON_H
+
+/*
+ * authcon.h - Header for authcon.c-related items that are not public
+ * interfaces exported to outside the OpenAFS tree.
+ */
+
+#include <afs/cellconfig.h>
+
+struct afsconf_bsso_info {
+ struct afsconf_dir *dir;
+ void (*logger)(const char *format, ...);
+};
+
+void afsconf_BuildServerSecurityObjects_int(struct afsconf_bsso_info *info,
+ struct rx_securityClass ***classes,
+ afs_int32 *numClasses);
+
+#endif /* OPENAFS_AUTH_AUTHCON_H */
afsconf_AddTypedKey
afsconf_BuildServerSecurityObjects
+afsconf_BuildServerSecurityObjects_int
afsconf_CellAliasApply
afsconf_CellApply
afsconf_CheckAuth
#include <afs/afsutil.h>
#include <afs/fileutil.h>
#include <afs/audit.h>
+#include <afs/authcon.h>
#include <afs/cellconfig.h>
#include <afs/cmd.h>
int DoPeerRPCStats = 0;
int DoProcessRPCStats = 0;
struct stat sb;
+ struct afsconf_bsso_info bsso;
#ifndef AFS_NT40_ENV
int nofork = 0;
#endif
osi_audit_init();
signal(SIGFPE, bozo_insecureme);
+ memset(&bsso, 0, sizeof(bsso));
+
#ifdef AFS_NT40_ENV
/* Initialize winsock */
if (afs_winsockInit() < 0) {
/* opened the cell databse */
bozo_confdir = tdir;
- if (afsconf_CountKeys(bozo_confdir) == 0) {
- bozo_Log("WARNING: No encryption keys found! "
- "All authenticated accesses will fail. "
- "Run akeyconvert or asetkey to import encryption keys.\n");
- }
-
code = bnode_Init();
if (code) {
printf("bosserver: could not init bnode package, code %d\n", code);
rx_SetRxStatUserOk(bozo_rxstat_userok);
afsconf_SetNoAuthFlag(tdir, noAuth);
- afsconf_BuildServerSecurityObjects(tdir, &securityClasses, &numClasses);
+
+ bsso.dir = tdir;
+ bsso.logger = bozo_Log;
+ afsconf_BuildServerSecurityObjects_int(&bsso, &securityClasses, &numClasses);
if (DoPidFiles) {
bozo_CreatePidFile("bosserver", NULL, getpid());
#include <rx/rxkad.h>
#include <rx/rx_globals.h>
#include <afs/cellconfig.h>
+#include <afs/authcon.h>
#include <afs/bubasics.h>
#include <afs/afsutil.h>
#include <afs/com_err.h>
struct rx_service *tservice;
struct rx_securityClass **securityClasses;
afs_int32 numClasses;
+ struct afsconf_bsso_info bsso;
extern int rx_stackSize;
memset(&cellinfo_s, 0, sizeof(cellinfo_s));
memset(clones, 0, sizeof(clones));
+ memset(&bsso, 0, sizeof(bsso));
memset(&logopts, 0, sizeof(logopts));
logopts.lopt_dest = logDest_file;
ERROR(BUDB_NOCELLS);
}
- if (afsconf_CountKeys(BU_conf) == 0) {
- LogError(0, "WARNING: No encryption keys found! "
- "All authenticated accesses will fail. "
- "Run akeyconvert or asetkey to import encryption keys.\n");
- }
-
code = afsconf_GetLocalCell(BU_conf, lcell, sizeof(lcell));
if (code) {
LogError(0, "** Can't determine local cell name!\n");
ERROR(code);
}
- afsconf_BuildServerSecurityObjects(BU_conf, &securityClasses, &numClasses);
+ bsso.dir = BU_conf;
+ bsso.logger = FSLog;
+ afsconf_BuildServerSecurityObjects_int(&bsso, &securityClasses,
+ &numClasses);
tservice =
rx_NewServiceHost(host, 0, BUDB_SERVICE, "BackupDatabase",
#include <lwp.h>
#include <lock.h>
#include <afs/afsutil.h>
+#include <afs/authcon.h>
#include <afs/cellconfig.h>
#include <afs/keys.h>
#include <afs/volser.h>
exit(1);
}
- if (afsconf_CountKeys(butc_confdir) == 0) {
- TLog(0, "WARNING: No encryption keys found! "
- "All authenticated accesses will fail. "
- "Run akeyconvert or asetkey to import encryption keys.\n");
- }
-
/* Start auditing */
osi_audit_init();
/* Process -audit-interface and -auditlog */
secObjs = nullObjects;
} else {
/* Must be -localauth, so the cell keys are available. */
- afsconf_BuildServerSecurityObjects(butc_confdir, &allObjs, &numClasses);
+ struct afsconf_bsso_info bsso;
+ memset(&bsso, 0, sizeof(bsso));
+ bsso.dir = butc_confdir;
+ afsconf_BuildServerSecurityObjects_int(&bsso, &allObjs, &numClasses);
secObjs = allObjs;
}
$(C2OBJ) -I$(FSINT) $**
EXELIBS = \
+ $(DESTDIR)\lib\afs\afsauth.lib \
$(DESTDIR)\lib\afsauthent.lib \
$(DESTDIR)\lib\afsrpc.lib \
$(DESTDIR)\lib\afs\afscmd.lib \
$(DESTDIR)\lib\afs\daafsvol.lib \
$(DESTDIR)\lib\afs\mtafsvldb.lib \
$(DESTDIR)\lib\afspthread.lib \
+ $(DESTDIR)\lib\afshcrypto.lib \
+ $(DESTDIR)\lib\libafsconf.lib \
$(DESTDIR)\lib\opr.lib \
$(DESTDIR)\lib\afsroken.lib
$(EXEFILE): $(EXEOBJS) $(EXELIBS)
- $(EXECONLINK)
+ $(EXECONLINK) shell32.lib
$(_VC_MANIFEST_EMBED_EXE)
$(EXEPREP)
$(CODESIGN_USERLAND)
$(OUT)\davolserver.res
VOLSERVER_EXELIBS = \
+ $(DESTDIR)\lib\afs\afsauth.lib \
$(DESTDIR)\lib\afsauthent.lib \
$(DESTDIR)\lib\afsrpc.lib \
$(LIBFILE) \
$(DESTDIR)\lib\afs\afsprocmgmt.lib \
$(DESTDIR)\lib\afs\afseventlog.lib \
$(DESTDIR)\lib\afs\mtafsutil.lib \
+ $(DESTDIR)\lib\afshcrypto.lib \
+ $(DESTDIR)\lib\libafsconf.lib \
$(DESTDIR)\lib\opr.lib \
$(DESTDIR)\lib\afspthread.lib \
$(DESTDIR)\lib\afsroken.lib
#include <rx/rxstat.h>
#include <lock.h>
#include <ubik.h>
+#include <afs/authcon.h>
#include <afs/cmd.h>
#include <afs/cellconfig.h>
#include <afs/auth.h>
char *auditIface = NULL;
struct cmd_item *auditLogList = NULL;
char *s2s_crypt_behavior = NULL;
+ struct afsconf_bsso_info bsso;
#ifdef AFS_AIX32_ENV
/*
#endif
osi_audit_init();
+ memset(&bsso, 0, sizeof(bsso));
+
/* Initialize dirpaths */
if (!(initAFSDirPath() & AFSDIR_SERVER_PATHS_OK)) {
#ifdef AFS_NT40_ENV
pt_hook_write();
#endif
- afsconf_BuildServerSecurityObjects(prdir, &securityClasses, &numClasses);
+ bsso.dir = prdir;
+ bsso.logger = FSLog;
+ afsconf_BuildServerSecurityObjects_int(&bsso, &securityClasses,
+ &numClasses);
tservice =
rx_NewServiceHost(host, 0, PRSRV, "Protection Server", securityClasses,
"1.0",
#endif
"Starting AFS", FSLog);
- if (afsconf_CountKeys(prdir) == 0) {
- ViceLog(0, ("WARNING: No encryption keys found! "
- "All authenticated accesses will fail. "
- "Run akeyconvert or asetkey to import encryption keys.\n"));
- } else if (afsconf_GetLatestKey(prdir, NULL, NULL) == 0) {
- LogDesWarning();
- }
rx_StartServer(1);
osi_audit(PTS_FinishEvent, -1, AUD_END);
$(OUT)\volserver.res
VOLSERVER_EXELIBS = \
+ $(DESTDIR)\lib\afs\afsauth.lib \
$(DESTDIR)\lib\afsauthent.lib \
$(DESTDIR)\lib\afsrpc.lib \
$(DESTDIR)\lib\afs\afstvolser.lib \
$(DESTDIR)\lib\afs\afsprocmgmt.lib \
$(DESTDIR)\lib\afs\afseventlog.lib \
$(DESTDIR)\lib\afs\mtafsutil.lib \
+ $(DESTDIR)\lib\libafsconf.lib \
$(DESTDIR)\lib\opr.lib \
$(DESTDIR)\lib\afspthread.lib \
$(DESTDIR)\lib\afshcrypto.lib \
#include <rx/xdr.h>
#include <rx/rx.h>
#include <rx/rxkad.h>
+#include <afs/authcon.h>
#include <afs/cellconfig.h>
#include <afs/afsutil.h>
#include <afs/fileutil.h>
int a = 0;
rxkad_level level;
rxkad_level newLevel;
+ struct afsconf_bsso_info bsso;
#ifdef AFS_AIX32_ENV
/*
sigaction(SIGSEGV, &nsa, NULL);
#endif
+ memset(&bsso, 0, sizeof(bsso));
+
whoami = argv[0];
#ifdef AFS_NT40_ENV
exit(1);
}
- if (afsconf_CountKeys(cdir) == 0) {
- fprintf(stderr, "WARNING: No encryption keys found! "
- "All authenticated accesses will fail."
- "Run akeyconvert or asetkey to import encryption keys.\n");
- }
-
if (rxBind) {
afs_int32 ccode;
if (AFSDIR_SERVER_NETRESTRICT_FILEPATH ||
if (rx_InitHost(host, htons(AFSCONF_UPDATEPORT)) < 0)
Quit("rx_init");
- afsconf_BuildServerSecurityObjects(cdir, &securityClasses, &numClasses);
+ bsso.dir = cdir;
+ afsconf_BuildServerSecurityObjects_int(&bsso, &securityClasses, &numClasses);
if (securityClasses[2] == NULL)
Quit("rxkad_NewServerSecurityObject");
extern void LogCommandLine(int argc, char **argv, const char *progname,
const char *version, const char *logstring,
void (*log) (const char *format, ...));
-extern void LogDesWarning(void);
extern int GetLogLevel(void);
extern enum logDest GetLogDest(void);
extern const char *GetLogFilename(void);
FSLog
Int32To_ktimeRelDate
LogCommandLine
-LogDesWarning
LogLevel
LogThreadNum
OpenLog
}
/*!
- * Write the single-DES deprecation warning to the log.
- */
-void
-LogDesWarning(void)
-{
- /* The blank newlines help this stand out a bit more in the log. */
- ViceLog(0, ("\n"));
- ViceLog(0, ("WARNING: You are using single-DES keys in a KeyFile. Using single-DES\n"));
- ViceLog(0, ("WARNING: long-term keys is considered insecure, and it is strongly\n"));
- ViceLog(0, ("WARNING: recommended that you migrate to stronger encryption. See\n"));
- ViceLog(0, ("WARNING: OPENAFS-SA-2013-003 on http://www.openafs.org/security/\n"));
- ViceLog(0, ("WARNING: for details.\n"));
- ViceLog(0, ("\n"));
-}
-
-/*!
* Move the current log file out of the way so a new one can be started.
*
* The format of the new name depends on the logging style. The traditional
$(C2OBJ) -I$(FSINT) $**
EXELIBS = \
+ $(DESTDIR)\lib\afs\afsauth.lib \
$(DESTDIR)\lib\afsauthent.lib \
$(DESTDIR)\lib\afsrpc.lib \
$(DESTDIR)\lib\afs\afscmd.lib \
$(DESTDIR)\lib\afs\mtafsvol.lib \
$(DESTDIR)\lib\afs\mtafsvldb.lib \
$(DESTDIR)\lib\afs\mtafsdir.lib \
+ $(DESTDIR)\lib\libafsconf.lib \
$(DESTDIR)\lib\opr.lib \
$(DESTDIR)\lib\afspthread.lib \
+ $(DESTDIR)\lib\afshcrypto.lib \
$(DESTDIR)\lib\afsroken.lib \
$(DESTDIR)\lib\afsrfc3961.lib
$(EXEFILE): $(EXEOBJS) $(EXELIBS)
- $(EXECONLINK)
+ $(EXECONLINK) shell32.lib
$(_VC_MANIFEST_EMBED_EXE)
$(EXEPREP)
$(CODESIGN_USERLAND)
#include <afs/vnode.h>
#include <afs/volume.h>
#include <afs/auth.h>
+#include <afs/authcon.h>
#include <afs/cellconfig.h>
#include <afs/acl.h>
#include <afs/prs_fs.h>
char hoststr[16];
afs_uint32 rx_bindhost;
VolumePackageOptions opts;
+ struct afsconf_bsso_info bsso;
#ifdef AFS_AIX32_ENV
struct sigaction nsa;
#endif
osi_audit_init();
+ memset(&bsso, 0, sizeof(bsso));
+
/* Initialize dirpaths */
if (!(initAFSDirPath() & AFSDIR_SERVER_PATHS_OK)) {
#ifdef AFS_NT40_ENV
LogCommandLine(argc, argv, "starting", "", "File server", FSLog);
- if (afsconf_CountKeys(confDir) == 0) {
- ViceLog(0, ("WARNING: No encryption keys found! "
- "All authenticated accesses will fail. "
- "Run akeyconvert or asetkey to import encryption keys.\n"));
- } else if (afsconf_GetLatestKey(confDir, NULL, NULL) == 0) {
- LogDesWarning();
- }
-
/* initialize the pthread soft signal handler thread */
opr_softsig_Init();
SetupLogSoftSignals();
rx_GetIFInfo();
rx_SetRxDeadTime(30);
afsconf_SetSecurityFlags(confDir, AFSCONF_SECOPTS_ALWAYSENCRYPT);
- afsconf_BuildServerSecurityObjects(confDir, &securityClasses, &numClasses);
+
+ bsso.dir = confDir;
+ bsso.logger = FSLog;
+ afsconf_BuildServerSecurityObjects_int(&bsso, &securityClasses,
+ &numClasses);
tservice = rx_NewServiceHost(rx_bindhost, /* port */ 0, /* service id */
1, /*service name */
#include <rx/rx.h>
#include <rx/rx_globals.h>
#include <rx/rxstat.h>
+#include <afs/authcon.h>
#include <afs/cmd.h>
#include <afs/cellconfig.h>
#include <afs/keys.h>
struct cmd_syndesc *opts;
struct logOptions logopts;
int s2s_rxgk = 0;
+ struct afsconf_bsso_info bsso;
char *vl_dbaseName;
char *configDir;
osi_audit_init();
memset(&logopts, 0, sizeof(logopts));
+ memset(&bsso, 0, sizeof(bsso));
/* Initialize dirpaths */
if (!(initAFSDirPath() & AFSDIR_SERVER_PATHS_OK)) {
memset(wr_HostAddress, 0, sizeof(wr_HostAddress));
initialize_dstats();
- afsconf_BuildServerSecurityObjects(tdir, &securityClasses, &numClasses);
+ bsso.dir = tdir;
+ bsso.logger = FSLog;
+ afsconf_BuildServerSecurityObjects_int(&bsso, &securityClasses,
+ &numClasses);
tservice =
rx_NewServiceHost(host, 0, USER_SERVICE_ID, "Vldb server",
rx_SetMaxProcs(tservice, 4);
LogCommandLine(argc, argv, "vlserver", VldbVersion, "Starting AFS", FSLog);
- if (afsconf_CountKeys(tdir) == 0) {
- VLog(0, ("WARNING: No encryption keys found! "
- "All authenticated accesses will fail."
- "Run akeyconvert or asetkey to import encryption keys.\n"));
- } else if (afsconf_GetLatestKey(tdir, NULL, NULL) == 0) {
- LogDesWarning();
- }
VLog(0, ("%s\n", cml_version_number));
/* allow super users to manage RX statistics */
#include <rx/rxstat.h>
#include <rx/rx_globals.h>
#include <afs/auth.h>
+#include <afs/authcon.h>
#include <afs/cellconfig.h>
#include <afs/keys.h>
#include <afs/dir.h>
char hoststr[16];
afs_uint32 host = ntohl(INADDR_ANY);
VolumePackageOptions opts;
+ struct afsconf_bsso_info bsso;
#ifdef AFS_AIX32_ENV
/*
#endif
osi_audit_init();
+ memset(&bsso, 0, sizeof(bsso));
+
/* Initialize dirpaths */
if (!(initAFSDirPath() & AFSDIR_SERVER_PATHS_OK)) {
#ifdef AFS_NT40_ENV
/* initialize audit user check */
osi_audit_set_user_check(tdir, vol_IsLocalRealmMatch);
- afsconf_BuildServerSecurityObjects(tdir, &securityClasses, &numClasses);
+ bsso.dir = tdir;
+ bsso.logger = FSLog;
+ afsconf_BuildServerSecurityObjects_int(&bsso, &securityClasses, &numClasses);
if (securityClasses[0] == NULL)
Abort("rxnull_NewServerSecurityObject");
service =
LogCommandLine(argc, argv, "Volserver", VolserVersion, "Starting AFS",
Log);
- if (afsconf_CountKeys(tdir) == 0) {
- Log("WARNING: No encryption keys found! "
- "All authenticated accesses will fail. "
- "Run akeyconvert or asetkey to import encryption keys.\n");
- } else if (afsconf_GetLatestKey(tdir, NULL, NULL) == 0) {
- LogDesWarning();
- }
/* allow super users to manage RX statistics */
rx_SetRxStatUserOk(vol_rxstat_userok);
#include <rx/rx.h>
#include <rx/rxkad.h>
+#include <afs/authcon.h>
#include <afs/cellconfig.h>
#include <tests/tap/basic.h>
int numClasses;
struct afsconf_typedKey *key;
int code = 0;
+ struct afsconf_bsso_info bsso;
+
+ memset(&bsso, 0, sizeof(bsso));
afstest_SkipTestsIfBadHostname();
/* Server Security objects */
- afsconf_BuildServerSecurityObjects(dir, &classes, &numClasses);
+ bsso.dir = dir;
+ afsconf_BuildServerSecurityObjects_int(&bsso, &classes, &numClasses);
is_int(5, numClasses, "5 security classes are returned, as expected");
ok(classes[1] == NULL, "The rxvab class is undefined, as requested");
free(classes);
#include <rx/rx.h>
+#include <afs/authcon.h>
#include <afs/cellconfig.h>
#include <tests/tap/basic.h>
afs_int32 numClasses;
int code;
struct rx_service *service;
+ struct afsconf_bsso_info bsso;
+
+ memset(&bsso, 0, sizeof(bsso));
dir = afsconf_Open(configPath);
if (dir == NULL) {
kill(signal_pid, SIGUSR1);
}
- afsconf_BuildServerSecurityObjects(dir, &classes, &numClasses);
+ bsso.dir = dir;
+ afsconf_BuildServerSecurityObjects_int(&bsso, &classes, &numClasses);
service = rx_NewService(0, serviceId, "test", classes, numClasses,
proc);
if (service == NULL) {