if (line[0] == '.') {
if ((linelen + 2) > 1000) {
syslog(LOG_CRIT, "Cannot escape leading dot. Buffer overflow");
- exit(1);
+ exit(EX_DATAERR);
}
memmove((line + 1), line, (linelen + 1));
line[0] = '.';
a = fopen(path, "r");
if (a == NULL) {
- errlog(1, "can not open auth file `%s'", path);
+ errlog(EX_NOINPUT, "can not open auth file `%s'", path);
/* NOTREACHED */
}
au = calloc(1, sizeof(*au));
if (au == NULL)
- errlog(1, NULL);
+ errlog(EX_OSERR, NULL);
data = strdup(line);
au->login = strsep(&data, "|");
if (au->login == NULL ||
au->host == NULL ||
au->password == NULL) {
- errlogx(1, "syntax error in authfile %s:%d",
- path, lineno);
+ errlogx(EX_CONFIG, "syntax error in authfile %s:%d", path, lineno);
/* NOTREACHED */
}
/* Don't treat a non-existing config file as error */
if (errno == ENOENT)
return;
- errlog(1, "can not open config `%s'", config_path);
+ errlog(EX_NOINPUT, "can not open config `%s'", config_path);
/* NOTREACHED */
}
} else {
host = data;
}
- if (host && *host == 0)
+ if (host && *host == 0)
host = NULL;
if (user && *user == 0)
user = NULL;
config.features |= INSECURE;
else if (strcmp(word, "FULLBOUNCE") == 0 && data == NULL)
config.features |= FULLBOUNCE;
+ else if (strcmp(word, "NULLCLIENT") == 0 && data == NULL)
+ config.features |= NULLCLIENT;
else {
- errlogx(1, "syntax error in %s:%d", config_path, lineno);
+ errlogx(EX_CONFIG, "syntax error in %s:%d", config_path, lineno);
/* NOTREACHED */
}
}
+ if ((config.features & NULLCLIENT) && config.smarthost == NULL) {
+ errlogx(EX_CONFIG, "%s: NULLCLIENT requires SMARTHOST", config_path);
+ /* NOTREACHED */
+ }
+
fclose(conf);
}