/*
- * $Id: uam.c,v 1.7 2002-01-04 04:45:48 sibaz Exp $
+ * $Id: uam.c,v 1.11 2009-10-15 11:39:48 didg Exp $
*
* Copyright (c) 1999 Adrian Sun (asun@zoology.washington.edu)
* All Rights Reserved. See COPYRIGHT.
#include <stdio.h>
#include <stdlib.h>
+#include <string.h>
/* STDC check */
#if STDC_HEADERS
void *module;
if ((module = mod_open(path)) == NULL) {
- LOG(log_error, logtype_default, "uam_load(%s): failed to load.", name);
- LOG(log_error, logtype_default, dlerror());
+ LOG(log_error, logtype_papd, "uam_load(%s): failed to load: %s", name, mod_error());
return NULL;
}
if ((mod = (struct uam_mod *) malloc(sizeof(struct uam_mod))) == NULL) {
- LOG(log_error, logtype_default, "uam_load(%s): malloc failed", name);
+ LOG(log_error, logtype_papd, "uam_load(%s): malloc failed", name);
goto uam_load_fail;
}
- strncpy(buf, name, sizeof(buf));
+ strlcpy(buf, name, sizeof(buf));
if ((p = strchr(buf, '.')))
*p = '\0';
if ((mod->uam_fcn = mod_symbol(module, buf)) == NULL) {
}
if (mod->uam_fcn->uam_type != UAM_MODULE_SERVER) {
- LOG(log_error, logtype_default, "uam_load(%s): attempted to load a non-server module",
+ LOG(log_error, logtype_papd, "uam_load(%s): attempted to load a non-server module",
name);
goto uam_load_err;
}
if (!mod->uam_fcn->uam_setup ||
((*mod->uam_fcn->uam_setup)(name) < 0)) {
- LOG(log_error, logtype_default, "uam_load(%s): uam_setup failed", name);
+ LOG(log_error, logtype_papd, "uam_load(%s): uam_setup failed", name);
goto uam_load_err;
}
{
va_list ap;
struct uam_obj *uam;
+ int ret;
if (!name)
return -1;
if ((uam = auth_uamfind(type, name, strlen(name)))) {
if (strcmp(uam->uam_path, path)) {
/* it exists, but it's not the same module. */
- LOG(log_error, logtype_default, "uam_register: \"%s\" already loaded by %s",
+ LOG(log_error, logtype_papd, "uam_register: \"%s\" already loaded by %s",
name, path);
return -1;
}
va_end(ap);
/* attach to other uams */
- if (auth_register(type, uam) < 0) {
+ ret = auth_register(type, uam);
+ if (ret) {
free(uam->uam_path);
free(uam);
- return -1;
}
- return 0;
+ return ret;
}
void uam_unregister(const int type, const char *name)
}
/* Crap to support uams which call this afpd function */
-int uam_afpserver_option(void *private, const int what, void *option,
- int *len)
+int uam_afpserver_option(void *private _U_, const int what _U_, void *option _U_,
+ size_t *len _U_)
{
return(0);
}
/* --- helper functions for plugin uams --- */
-struct passwd *uam_getname(char *name, const int len)
+struct passwd *uam_getname(void *dummy _U_, char *name, const int len)
{
struct passwd *pwent;
char *user;
#ifndef DISABLE_SHELLCHECK
if (!p) {
- LOG(log_info, logtype_default, "illegal shell %s for %s",pwd->pw_shell,pwd->pw_name);
+ LOG(log_info, logtype_papd, "illegal shell %s for %s",pwd->pw_shell,pwd->pw_name);
return -1;
}
#endif /* DISABLE_SHELLCHECK */