/*
- * $Id: cnid.c,v 1.4 2008-12-03 18:35:44 didg Exp $
+ * $Id: cnid.c,v 1.8 2009-11-24 11:40:11 didg Exp $
*
* Copyright (c) 2003 the Netatalk Team
* Copyright (c) 2003 Rafal Lewczuk <rlewczuk@pronet.pl>
static sigset_t sigblockset;
static const struct itimerval none = {{0, 0}, {0, 0}};
-static struct itimerval savetimer;
/* Registers new CNID backend module. */
return NULL;
}
/* FIXME should module know about it ? */
- if (flags) {
+ if ((flags & CNID_FLAG_NODEV)) {
db->flags |= CNID_FLAG_NODEV;
}
db->flags |= mod->flags;
sigaddset(&sigblockset, SIGTERM);
sigaddset(&sigblockset, SIGHUP);
sigaddset(&sigblockset, SIGUSR1);
+ sigaddset(&sigblockset, SIGUSR2);
sigaddset(&sigblockset, SIGALRM);
}
{
if ((flags & CNID_FLAG_BLOCK)) {
sigprocmask(SIG_BLOCK, &sigblockset, NULL);
- setitimer(ITIMER_REAL, &none, &savetimer);
}
}
static void unblock_signal(u_int32_t flags)
{
if ((flags & CNID_FLAG_BLOCK)) {
- setitimer(ITIMER_REAL, &savetimer, NULL);
sigprocmask(SIG_UNBLOCK, &sigblockset, NULL);
}
}
block_signal(cdb->flags);
ret = cdb->cnid_resolve(cdb, id, buffer, len);
unblock_signal(cdb->flags);
+ if (ret && !strcmp(ret, "..")) {
+ LOG(log_error, logtype_afpd, "cnid_resolve: name is '..', corrupted db? ");
+ ret = NULL;
+ }
return ret;
}