diff options
author | Gilles Chehade <gilles@poolp.org> | 2012-11-15 20:30:22 +0100 |
---|---|---|
committer | Gilles Chehade <gilles@poolp.org> | 2012-11-15 20:30:22 +0100 |
commit | 9b31b68eac9b573428f11bd93fc3604e5ee97907 (patch) | |
tree | 57943bdcf4d0b3fdb8842d5d6c4aa6c6d87bb5b4 | |
parent | remove deprecated API (diff) | |
parent | finish KNF (diff) | |
download | OpenSMTPD-9b31b68eac9b573428f11bd93fc3604e5ee97907.tar.xz OpenSMTPD-9b31b68eac9b573428f11bd93fc3604e5ee97907.zip |
Merge branch 'cleanup'
Conflicts:
smtpd/lka.c
smtpd/smtpd.h
smtpd/table_db.c
smtpd/table_static.c
48 files changed, 963 insertions, 668 deletions
diff --git a/smtpd/aliases.c b/smtpd/aliases.c index 94da92f0..08045b87 100644 --- a/smtpd/aliases.c +++ b/smtpd/aliases.c @@ -59,7 +59,8 @@ aliases_get(objid_t id, struct expand *expand, const char *username) nbaliases = 0; RB_FOREACH(xn, expandtree, &table_alias->expand.tree) { if (xn->type == EXPAND_INCLUDE) - nbaliases += aliases_expand_include(expand, xn->u.buffer); + nbaliases += aliases_expand_include(expand, + xn->u.buffer); else { expand_insert(expand, xn); nbaliases++; @@ -104,7 +105,8 @@ aliases_virtual_get(objid_t id, struct expand *expand, nbaliases = 0; RB_FOREACH(xn, expandtree, &table_virtual->expand.tree) { if (xn->type == EXPAND_INCLUDE) - nbaliases += aliases_expand_include(expand, xn->u.buffer); + nbaliases += aliases_expand_include(expand, + xn->u.buffer); else { expand_insert(expand, xn); nbaliases++; @@ -113,7 +115,8 @@ aliases_virtual_get(objid_t id, struct expand *expand, expand_free(&table_virtual->expand); free(table_virtual); - log_debug("debug: aliases_virtual_get: '%s' resolved to %d nodes", pbuf, nbaliases); + log_debug("debug: aliases_virtual_get: '%s' resolved to %d nodes", + pbuf, nbaliases); return nbaliases; } @@ -156,9 +159,9 @@ aliases_expand_include(struct expand *expand, const char *filename) continue; } - if (! alias_parse(&xn, line)) { - log_warnx("warn: could not parse include entry \"%s\".", line); - } + if (! alias_parse(&xn, line)) + log_warnx("warn: could not parse include entry \"%s\".", + line); if (xn.type == EXPAND_INCLUDE) log_warnx("warn: nested inclusion is not supported."); @@ -252,7 +255,8 @@ alias_is_address(struct expandnode *alias, const char *line, size_t len) /* scan pre @ for disallowed chars */ *domain++ = '\0'; strlcpy(alias->u.mailaddr.user, line, sizeof(alias->u.mailaddr.user)); - strlcpy(alias->u.mailaddr.domain, domain, sizeof(alias->u.mailaddr.domain)); + strlcpy(alias->u.mailaddr.domain, domain, + sizeof(alias->u.mailaddr.domain)); while (*line) { char allowedset[] = "!#$%*/?|^{}`~&'+-=_."; diff --git a/smtpd/bounce.c b/smtpd/bounce.c index e2f09e61..7772f6fd 100644 --- a/smtpd/bounce.c +++ b/smtpd/bounce.c @@ -140,7 +140,7 @@ bounce_run(uint64_t id, int fd) { struct bounce *bounce; int msgfd; - + log_trace(TRACE_BOUNCE, "bounce: run %016" PRIx64 " fd %i", id, fd); bounce = tree_xpop(&bounces_by_uid, id); @@ -216,7 +216,8 @@ bounce_drain() tree_xset(&bounces_by_uid, bounce->id, bounce); - log_debug("debug: bounce: %p: requesting enqueue socket with id 0x%016" PRIx64, + log_debug("debug: bounce: %p: requesting enqueue socket " + "with id 0x%016" PRIx64, bounce, bounce->id); imsg_compose_event(env->sc_ievs[PROC_SMTP], IMSG_SMTP_ENQUEUE, @@ -242,7 +243,7 @@ bounce_send(struct bounce *bounce, const char *fmt, ...) iobuf_xfqueue(&bounce->iobuf, "bounce_send", "%s\n", p); - free(p); + free(p); } /* This can simplified once we support PIPELINING */ @@ -253,7 +254,7 @@ bounce_next(struct bounce *bounce) char *line; size_t len, s; - switch(bounce->state) { + switch (bounce->state) { case BOUNCE_EHLO: bounce_send(bounce, "EHLO %s", env->sc_hostname); bounce->state = BOUNCE_MAIL; @@ -303,7 +304,8 @@ bounce_next(struct bounce *bounce) line = evp->errorline; if (strlen(line) > 4 && (*line == '1' || *line == '6')) line += 4; - iobuf_xfqueue(&bounce->iobuf, "bounce_next: DATA_NOTICE", + iobuf_xfqueue(&bounce->iobuf, + "bounce_next: DATA_NOTICE", "Recipient: %s@%s\n" "Reason: %s\n", evp->dest.user, evp->dest.domain, line); @@ -389,12 +391,12 @@ bounce_status(struct bounce *bounce, const char *fmt, ...) evp->retry++; envelope_set_errormsg(evp, "%s", status); queue_envelope_update(evp); - imsg_compose_event(env->sc_ievs[PROC_SCHEDULER], msg, 0, 0, -1, - evp, sizeof *evp); + imsg_compose_event(env->sc_ievs[PROC_SCHEDULER], msg, 0, + 0, -1, evp, sizeof *evp); } else { queue_envelope_delete(evp); - imsg_compose_event(env->sc_ievs[PROC_SCHEDULER], msg, 0, 0, -1, - &evp->id, sizeof evp->id); + imsg_compose_event(env->sc_ievs[PROC_SCHEDULER], msg, 0, + 0, -1, &evp->id, sizeof evp->id); } TAILQ_REMOVE(&bounce->envelopes, evp, entry); free(evp); @@ -452,7 +454,7 @@ bounce_io(struct io *io, int evt) } iobuf_normalize(&bounce->iobuf); break; - } + } log_trace(TRACE_BOUNCE, "bounce: %p: <<< %s", bounce, line); diff --git a/smtpd/config.c b/smtpd/config.c index 7c1127e6..edb62a56 100644 --- a/smtpd/config.c +++ b/smtpd/config.c @@ -116,8 +116,8 @@ init_pipes(void) /* * find out how many instances of this peer there are. */ - if (i >= j || env->sc_instances[i] == 0|| - env->sc_instances[j] == 0) + if (i >= j || env->sc_instances[i] == 0 || + env->sc_instances[j] == 0) continue; if (env->sc_instances[i] > 1 && @@ -199,7 +199,7 @@ config_peers(struct peer *p, uint peercount) if (dst == smtpd_process) fatal("config_peers: cannot peer with oneself"); - + env->sc_ievs[dst] = xcalloc(env->sc_instances[dst], sizeof(struct imsgev), "config_peers"); diff --git a/smtpd/control.c b/smtpd/control.c index 2b0f9fb2..92e7c2f6 100644 --- a/smtpd/control.c +++ b/smtpd/control.c @@ -101,7 +101,7 @@ control_imsg(struct imsgev *iev, struct imsg *imsg) if (c == NULL) return; imsg_compose_event(&c->iev, IMSG_SCHEDULER_MESSAGES, 0, - 0, -1, imsg->data, imsg->hdr.len - sizeof imsg->hdr); + 0, -1, imsg->data, imsg->hdr.len-sizeof imsg->hdr); return; } } @@ -112,7 +112,7 @@ control_imsg(struct imsgev *iev, struct imsg *imsg) if (c == NULL) return; imsg_compose_event(&c->iev, IMSG_SCHEDULER_ENVELOPES, 0, - 0, -1, imsg->data, imsg->hdr.len - sizeof imsg->hdr); + 0, -1, imsg->data, imsg->hdr.len-sizeof imsg->hdr); return; } } @@ -214,7 +214,8 @@ control(void) } (void)umask(old_umask); - if (chmod(SMTPD_SOCKET, S_IRUSR|S_IWUSR|S_IRGRP|S_IWGRP|S_IROTH|S_IWOTH) == -1) { + if (chmod(SMTPD_SOCKET, + S_IRUSR|S_IWUSR|S_IRGRP|S_IWGRP|S_IROTH|S_IWOTH) == -1) { (void)unlink(SMTPD_SOCKET); fatal("control: chmod"); } @@ -410,7 +411,7 @@ control_dispatch_ext(int fd, short event, void *arg) uint64_t id; struct stat_kv *kvp; char *key; - struct stat_value val; + struct stat_value val; size_t len; if (getpeereid(fd, &euid, &egid) == -1) @@ -448,8 +449,8 @@ control_dispatch_ext(int fd, short event, void *arg) case IMSG_SMTP_ENQUEUE: if (env->sc_flags & (SMTPD_SMTP_PAUSED | SMTPD_CONFIGURING | SMTPD_EXITING)) { - imsg_compose_event(&c->iev, IMSG_CTL_FAIL, 0, 0, -1, - NULL, 0); + imsg_compose_event(&c->iev, IMSG_CTL_FAIL, 0, 0, + -1, NULL, 0); break; } imsg_compose_event(env->sc_ievs[PROC_SMTP], @@ -459,7 +460,8 @@ control_dispatch_ext(int fd, short event, void *arg) case IMSG_STATS: if (euid) goto badcred; - imsg_compose_event(&c->iev, IMSG_STATS, 0, 0, -1, NULL, 0); + imsg_compose_event(&c->iev, IMSG_STATS, 0, 0, -1, + NULL, 0); break; case IMSG_DIGEST: @@ -512,9 +514,11 @@ control_dispatch_ext(int fd, short event, void *arg) memcpy(&verbose, imsg.data, sizeof(verbose)); log_verbose(verbose); - imsg_compose_event(env->sc_ievs[PROC_PARENT], IMSG_CTL_VERBOSE, - 0, 0, -1, &verbose, sizeof(verbose)); - imsg_compose_event(&c->iev, IMSG_CTL_OK, 0, 0, -1, NULL, 0); + imsg_compose_event(env->sc_ievs[PROC_PARENT], + IMSG_CTL_VERBOSE, 0, 0, -1, &verbose, + sizeof(verbose)); + imsg_compose_event(&c->iev, IMSG_CTL_OK, 0, 0, -1, + NULL, 0); break; case IMSG_QUEUE_PAUSE_MDA: @@ -522,15 +526,16 @@ control_dispatch_ext(int fd, short event, void *arg) goto badcred; if (env->sc_flags & SMTPD_MDA_PAUSED) { - imsg_compose_event(&c->iev, IMSG_CTL_FAIL, 0, 0, -1, - NULL, 0); + imsg_compose_event(&c->iev, IMSG_CTL_FAIL, 0, 0, + -1, NULL, 0); break; } log_info("info: mda paused"); env->sc_flags |= SMTPD_MDA_PAUSED; imsg_compose_event(env->sc_ievs[PROC_QUEUE], IMSG_QUEUE_PAUSE_MDA, 0, 0, -1, NULL, 0); - imsg_compose_event(&c->iev, IMSG_CTL_OK, 0, 0, -1, NULL, 0); + imsg_compose_event(&c->iev, IMSG_CTL_OK, 0, 0, -1, + NULL, 0); break; case IMSG_QUEUE_PAUSE_MTA: @@ -538,15 +543,16 @@ control_dispatch_ext(int fd, short event, void *arg) goto badcred; if (env->sc_flags & SMTPD_MTA_PAUSED) { - imsg_compose_event(&c->iev, IMSG_CTL_FAIL, 0, 0, -1, - NULL, 0); + imsg_compose_event(&c->iev, IMSG_CTL_FAIL, 0, 0, + -1, NULL, 0); break; } log_info("info: mta paused"); env->sc_flags |= SMTPD_MTA_PAUSED; imsg_compose_event(env->sc_ievs[PROC_QUEUE], IMSG_QUEUE_PAUSE_MTA, 0, 0, -1, NULL, 0); - imsg_compose_event(&c->iev, IMSG_CTL_OK, 0, 0, -1, NULL, 0); + imsg_compose_event(&c->iev, IMSG_CTL_OK, 0, 0, -1, + NULL, 0); break; case IMSG_SMTP_PAUSE: @@ -554,15 +560,16 @@ control_dispatch_ext(int fd, short event, void *arg) goto badcred; if (env->sc_flags & SMTPD_SMTP_PAUSED) { - imsg_compose_event(&c->iev, IMSG_CTL_FAIL, 0, 0, -1, - NULL, 0); + imsg_compose_event(&c->iev, IMSG_CTL_FAIL, 0, 0, + -1, NULL, 0); break; } log_info("info: smtp paused"); env->sc_flags |= SMTPD_SMTP_PAUSED; - imsg_compose_event(env->sc_ievs[PROC_SMTP], IMSG_SMTP_PAUSE, - 0, 0, -1, NULL, 0); - imsg_compose_event(&c->iev, IMSG_CTL_OK, 0, 0, -1, NULL, 0); + imsg_compose_event(env->sc_ievs[PROC_SMTP], + IMSG_SMTP_PAUSE, 0, 0, -1, NULL, 0); + imsg_compose_event(&c->iev, IMSG_CTL_OK, 0, 0, -1, + NULL, 0); break; case IMSG_QUEUE_RESUME_MDA: @@ -570,15 +577,16 @@ control_dispatch_ext(int fd, short event, void *arg) goto badcred; if (! (env->sc_flags & SMTPD_MDA_PAUSED)) { - imsg_compose_event(&c->iev, IMSG_CTL_FAIL, 0, 0, -1, - NULL, 0); + imsg_compose_event(&c->iev, IMSG_CTL_FAIL, 0, 0, + -1, NULL, 0); break; } log_info("info: mda resumed"); env->sc_flags &= ~SMTPD_MDA_PAUSED; imsg_compose_event(env->sc_ievs[PROC_QUEUE], IMSG_QUEUE_RESUME_MDA, 0, 0, -1, NULL, 0); - imsg_compose_event(&c->iev, IMSG_CTL_OK, 0, 0, -1, NULL, 0); + imsg_compose_event(&c->iev, IMSG_CTL_OK, 0, 0, -1, + NULL, 0); break; case IMSG_QUEUE_RESUME_MTA: @@ -586,15 +594,16 @@ control_dispatch_ext(int fd, short event, void *arg) goto badcred; if (!(env->sc_flags & SMTPD_MTA_PAUSED)) { - imsg_compose_event(&c->iev, IMSG_CTL_FAIL, 0, 0, -1, - NULL, 0); + imsg_compose_event(&c->iev, IMSG_CTL_FAIL, 0, 0, + -1, NULL, 0); break; } log_info("info: mta resumed"); env->sc_flags &= ~SMTPD_MTA_PAUSED; imsg_compose_event(env->sc_ievs[PROC_QUEUE], IMSG_QUEUE_RESUME_MTA, 0, 0, -1, NULL, 0); - imsg_compose_event(&c->iev, IMSG_CTL_OK, 0, 0, -1, NULL, 0); + imsg_compose_event(&c->iev, IMSG_CTL_OK, 0, 0, -1, + NULL, 0); break; case IMSG_SMTP_RESUME: @@ -602,15 +611,16 @@ control_dispatch_ext(int fd, short event, void *arg) goto badcred; if (!(env->sc_flags & SMTPD_SMTP_PAUSED)) { - imsg_compose_event(&c->iev, IMSG_CTL_FAIL, 0, 0, -1, - NULL, 0); + imsg_compose_event(&c->iev, IMSG_CTL_FAIL, 0, 0, + -1, NULL, 0); break; } log_info("info: smtp resumed"); env->sc_flags &= ~SMTPD_SMTP_PAUSED; - imsg_compose_event(env->sc_ievs[PROC_SMTP], IMSG_SMTP_RESUME, - 0, 0, -1, NULL, 0); - imsg_compose_event(&c->iev, IMSG_CTL_OK, 0, 0, -1, NULL, 0); + imsg_compose_event(env->sc_ievs[PROC_SMTP], + IMSG_SMTP_RESUME, 0, 0, -1, NULL, 0); + imsg_compose_event(&c->iev, IMSG_CTL_OK, 0, 0, -1, + NULL, 0); break; case IMSG_SCHEDULER_MESSAGES: @@ -660,8 +670,8 @@ control_dispatch_ext(int fd, short event, void *arg) if (len >= MAX_LINE_SIZE) goto invalid; - imsg_compose_event(env->sc_ievs[PROC_LKA], IMSG_LKA_UPDATE_TABLE, - 0, 0, -1, imsg.data, len + 1); + imsg_compose_event(env->sc_ievs[PROC_LKA], + IMSG_LKA_UPDATE_TABLE, 0, 0, -1, imsg.data, len+1); imsg_compose_event(&c->iev, IMSG_CTL_OK, 0, 0, -1, NULL, 0); break; diff --git a/smtpd/delivery_filename.c b/smtpd/delivery_filename.c index d0aa28bf..f4bc4880 100644 --- a/smtpd/delivery_filename.c +++ b/smtpd/delivery_filename.c @@ -52,7 +52,7 @@ struct delivery_backend delivery_backend_filename = { static void delivery_filename_open(struct deliver *deliver) { - struct stat sb; + struct stat sb; time_t now; size_t len; int fd; @@ -61,7 +61,7 @@ delivery_filename_open(struct deliver *deliver) char *msg; int n; -#define error(m) { msg = m; goto err; } +#define error(m) { msg = m; goto err; } #define error2(m) { msg = m; goto err2; } setproctitle("file delivery"); diff --git a/smtpd/delivery_maildir.c b/smtpd/delivery_maildir.c index 493cbce2..b8cec128 100644 --- a/smtpd/delivery_maildir.c +++ b/smtpd/delivery_maildir.c @@ -58,7 +58,7 @@ delivery_maildir_open(struct deliver *deliver) char *msg; int n; -#define error(m) { msg = m; goto err; } +#define error(m) { msg = m; goto err; } #define error2(m) { msg = m; goto err2; } setproctitle("maildir delivery"); diff --git a/smtpd/delivery_mbox.c b/smtpd/delivery_mbox.c index 28002d8f..afab9831 100644 --- a/smtpd/delivery_mbox.c +++ b/smtpd/delivery_mbox.c @@ -52,7 +52,7 @@ static void delivery_mbox_open(struct deliver *deliver) { char *environ_new[2]; - + environ_new[0] = "PATH=" _PATH_DEFPATH; environ_new[1] = (char *)NULL; environ = environ_new; diff --git a/smtpd/delivery_mda.c b/smtpd/delivery_mda.c index 9568bdfb..8dae5f8b 100644 --- a/smtpd/delivery_mda.c +++ b/smtpd/delivery_mda.c @@ -50,7 +50,7 @@ static void delivery_mda_open(struct deliver *deliver) { char *environ_new[2]; - + environ_new[0] = "PATH=" _PATH_DEFPATH; environ_new[1] = (char *)NULL; environ = environ_new; diff --git a/smtpd/dns.c b/smtpd/dns.c index c3dad9f7..1caf4060 100644 --- a/smtpd/dns.c +++ b/smtpd/dns.c @@ -99,8 +99,8 @@ dns_query_mx(char *host, char *backup, int port, uint64_t id) query.port = port; query.id = id; - imsg_compose_event(env->sc_ievs[PROC_LKA], IMSG_DNS_MX, 0, 0, -1, &query, - sizeof(query)); + imsg_compose_event(env->sc_ievs[PROC_LKA], IMSG_DNS_MX, 0, 0, -1, + &query, sizeof(query)); } void @@ -112,8 +112,8 @@ dns_query_ptr(struct sockaddr_storage *ss, uint64_t id) query.ss = *ss; query.id = id; - imsg_compose_event(env->sc_ievs[PROC_LKA], IMSG_DNS_PTR, 0, 0, -1, &query, - sizeof(query)); + imsg_compose_event(env->sc_ievs[PROC_LKA], IMSG_DNS_PTR, 0, 0, -1, + &query, sizeof(query)); } /* LKA interface */ @@ -131,7 +131,8 @@ dns_async(struct imsgev *asker, int type, struct dns *query) log_debug("debug: dns: lookup host \"%s\"", query->host); if (sockaddr_from_str((struct sockaddr*)&query->ss, PF_UNSPEC, query->host) == 0) { - log_debug("debug: dns: \"%s\" is an IP address", query->host); + log_debug("debug: dns: \"%s\" is an IP address", + query->host); query->error = DNS_OK; dns_reply(query, IMSG_DNS_HOST); dns_reply(query, IMSG_DNS_HOST_END); @@ -183,7 +184,7 @@ static void dns_asr_event_set(struct dnssession *s, struct async_res *ar) { struct timeval tv = { 0, 0 }; - + tv.tv_usec = ar->ar_timeout * 1000; event_set(&s->ev, ar->ar_fd, ar->ar_cond == ASYNC_READ ? EV_READ : EV_WRITE, dns_asr_handler, s); @@ -195,7 +196,7 @@ dns_asr_handler(int fd, short event, void *arg) { struct dnssession *s = arg; - switch(s->query.type) { + switch (s->query.type) { case IMSG_DNS_HOST: dns_asr_dispatch_host(s); break; @@ -294,7 +295,7 @@ next: if (mx == NULL || (s->preference != -1 && s->preference <= mx->preference)) { if (mx) - log_debug("debug: dns: ignoring mx with lower preference"); + log_debug("debug: dns: ignoring mx with < pri"); if (s->mxfound) query->error = DNS_OK; dns_reply(query, IMSG_DNS_HOST_END); @@ -321,7 +322,8 @@ next: if (ar.ar_gai_errno == 0) { for (ai = ar.ar_addrinfo; ai; ai = ai->ai_next) { memcpy(&query->ss, ai->ai_addr, ai->ai_addrlen); - log_debug("debug: dns: got address %s", ss_to_text(&query->ss)); + log_debug("debug: dns: got address %s", + ss_to_text(&query->ss)); dns_reply(query, IMSG_DNS_HOST); s->mxfound++; } @@ -375,7 +377,7 @@ dnssession_destroy(struct dnssession *s) stat_decrement("lka.session", 1); event_del(&s->ev); - while((mx = TAILQ_FIRST(&s->mx))) { + while ((mx = TAILQ_FIRST(&s->mx))) { TAILQ_REMOVE(&s->mx, mx, entry); free(mx->host); free(mx); @@ -393,7 +395,8 @@ dnssession_mx_insert(struct dnssession *s, const char *host, int preference) mx->host = xstrdup(host, "dnssession_mx_insert"); mx->preference = preference; - log_debug("debug: dns: found mx \"%s\" with preference %i", host, preference); + log_debug("debug: dns: found mx \"%s\" with preference %i", + host, preference); TAILQ_FOREACH(e, &s->mx, entry) { if (mx->preference <= e->preference) { diff --git a/smtpd/enqueue.c b/smtpd/enqueue.c index 2254a74c..4c959a6c 100644 --- a/smtpd/enqueue.c +++ b/smtpd/enqueue.c @@ -141,7 +141,7 @@ qp_encoded_write(FILE *fp, char *buf, size_t len) fprintf(fp, "=3D"); else if (*buf == ' ' || *buf == '\t') { char *p = buf; - + while (*p != '\n') { if (*p != ' ' && *p != '\t') break; @@ -226,7 +226,7 @@ enqueue(int argc, char *argv[]) build_from(fake_from, pw); - while(argc > 0) { + while (argc > 0) { rcpt_add(argv[0]); argv++; argc--; @@ -279,7 +279,7 @@ enqueue(int argc, char *argv[]) if (!msg.saw_from) send_line(fout, 0, "From: %s%s<%s>\n", msg.fromname ? msg.fromname : "", - msg.fromname ? " " : "", + msg.fromname ? " " : "", msg.from); /* add Date */ @@ -296,14 +296,17 @@ enqueue(int argc, char *argv[]) if (!msg.saw_mime_version) send_line(fout, 0, "MIME-Version: 1.0\n"); if (!msg.saw_content_type) - send_line(fout, 0, "Content-Type: text/plain; charset=unknown-8bit\n"); + send_line(fout, 0, "Content-Type: text/plain; " + "charset=unknown-8bit\n"); if (!msg.saw_content_disposition) send_line(fout, 0, "Content-Disposition: inline\n"); if (!msg.saw_content_transfer_encoding) - send_line(fout, 0, "Content-Transfer-Encoding: quoted-printable\n"); + send_line(fout, 0, "Content-Transfer-Encoding: " + "quoted-printable\n"); } if (!msg.saw_user_agent) - send_line(fout, 0, "User-Agent: OpenSMTPD enqueuer (Demoosh)\n"); + send_line(fout, 0, "User-Agent: OpenSMTPD enqueuer (%s)\n", + "Demoosh"); /* add separating newline */ if (noheader) @@ -329,7 +332,8 @@ enqueue(int argc, char *argv[]) line = buf; - if (msg.saw_content_transfer_encoding || noheader || inheaders || !msg.need_linesplit) { + if (msg.saw_content_transfer_encoding || noheader || + inheaders || !msg.need_linesplit) { send_line(fout, 0, "%.*s", (int)len, line); if (inheaders && buf[0] == '\n') inheaders = 0; @@ -343,7 +347,8 @@ enqueue(int argc, char *argv[]) break; } else { - qp_encoded_write(fout, line, LINESPLIT - 2 - dotted); + qp_encoded_write(fout, line, + LINESPLIT - 2 - dotted); send_line(fout, 0, "=\n"); line += LINESPLIT - 2 - dotted; len -= LINESPLIT - 2 - dotted; @@ -351,10 +356,10 @@ enqueue(int argc, char *argv[]) } while (len); } send_line(fout, verbose, ".\n"); - get_responses(fout, 1); + get_responses(fout, 1); send_line(fout, verbose, "QUIT\n"); - get_responses(fout, 1); + get_responses(fout, 1); fclose(fp); fclose(fout); @@ -373,7 +378,7 @@ get_responses(FILE *fin, int n) if ((e = ferror(fin))) errx(1, "ferror: %i", e); - while(n) { + while (n) { buf = fgetln(fin, &len); if (buf == NULL && ferror(fin)) err(1, "fgetln"); @@ -575,7 +580,7 @@ parse_addr(char *s, size_t len, int is_from) if (!pstate.comment && !pstate.quote && !pstate.esc) { if (s[pos] == ':') { /* group */ - for(pos++; pos < len && WSP(s[pos]); pos++) + for (pos++; pos < len && WSP(s[pos]); pos++) ; /* nothing */ pstate.wpos = 0; } @@ -634,7 +639,7 @@ parse_addr_terminal(int is_from) else rcpt_add(pstate.buf); pstate.wpos = 0; - } + } } static char * diff --git a/smtpd/filter_api.c b/smtpd/filter_api.c index 789cb58e..4be84923 100644 --- a/smtpd/filter_api.c +++ b/smtpd/filter_api.c @@ -35,31 +35,40 @@ static struct filter_internals { struct event ev; struct imsgbuf ibuf; - enum filter_status (*connect_cb)(uint64_t, struct filter_connect *, void *); + enum filter_status + (*connect_cb)(uint64_t, struct filter_connect *, void *); void *connect_cb_arg; - enum filter_status (*helo_cb)(uint64_t, struct filter_helo *, void *); + enum filter_status + (*helo_cb)(uint64_t, struct filter_helo *, void *); void *helo_cb_arg; - enum filter_status (*ehlo_cb)(uint64_t, struct filter_helo *, void *); + enum filter_status + (*ehlo_cb)(uint64_t, struct filter_helo *, void *); void *ehlo_cb_arg; - enum filter_status (*mail_cb)(uint64_t, struct filter_mail *, void *); + enum filter_status + (*mail_cb)(uint64_t, struct filter_mail *, void *); void *mail_cb_arg; - enum filter_status (*rcpt_cb)(uint64_t, struct filter_rcpt *, void *); + enum filter_status + (*rcpt_cb)(uint64_t, struct filter_rcpt *, void *); void *rcpt_cb_arg; - enum filter_status (*dataline_cb)(uint64_t, struct filter_dataline *, void *); + enum filter_status + (*dataline_cb)(uint64_t, struct filter_dataline *, void *); void *dataline_cb_arg; - enum filter_status (*quit_cb)(uint64_t, void *); + enum filter_status + (*quit_cb)(uint64_t, void *); void *quit_cb_arg; - enum filter_status (*close_cb)(uint64_t, void *); + enum filter_status + (*close_cb)(uint64_t, void *); void *close_cb_arg; - enum filter_status (*rset_cb)(uint64_t, void *); + enum filter_status + (*rset_cb)(uint64_t, void *); void *rset_cb_arg; } fi; @@ -87,55 +96,64 @@ filter_loop(void) } void -filter_register_connect_callback(enum filter_status (*cb)(uint64_t, struct filter_connect *, void *), void *cb_arg) +filter_register_connect_callback(enum filter_status + (*cb)(uint64_t, struct filter_connect *, void *), void *cb_arg) { filter_register_callback(FILTER_CONNECT, cb, cb_arg); } void -filter_register_helo_callback(enum filter_status (*cb)(uint64_t, struct filter_helo *, void *), void *cb_arg) +filter_register_helo_callback(enum filter_status + (*cb)(uint64_t, struct filter_helo *, void *), void *cb_arg) { filter_register_callback(FILTER_HELO, cb, cb_arg); } void -filter_register_ehlo_callback(enum filter_status (*cb)(uint64_t, struct filter_helo *, void *), void *cb_arg) +filter_register_ehlo_callback(enum filter_status + (*cb)(uint64_t, struct filter_helo *, void *), void *cb_arg) { filter_register_callback(FILTER_EHLO, cb, cb_arg); } void -filter_register_mail_callback(enum filter_status (*cb)(uint64_t, struct filter_mail *, void *), void *cb_arg) +filter_register_mail_callback(enum filter_status + (*cb)(uint64_t, struct filter_mail *, void *), void *cb_arg) { filter_register_callback(FILTER_MAIL, cb, cb_arg); } void -filter_register_rcpt_callback(enum filter_status (*cb)(uint64_t, struct filter_rcpt *, void *), void *cb_arg) +filter_register_rcpt_callback(enum filter_status + (*cb)(uint64_t, struct filter_rcpt *, void *), void *cb_arg) { filter_register_callback(FILTER_RCPT, cb, cb_arg); } void -filter_register_dataline_callback(enum filter_status (*cb)(uint64_t, struct filter_dataline *, void *), void *cb_arg) +filter_register_dataline_callback(enum filter_status + (*cb)(uint64_t, struct filter_dataline *, void *), void *cb_arg) { filter_register_callback(FILTER_DATALINE, cb, cb_arg); } void -filter_register_quit_callback(enum filter_status (*cb)(uint64_t, void *), void *cb_arg) +filter_register_quit_callback(enum filter_status + (*cb)(uint64_t, void *), void *cb_arg) { filter_register_callback(FILTER_QUIT, cb, cb_arg); } void -filter_register_close_callback(enum filter_status (*cb)(uint64_t, void *), void *cb_arg) +filter_register_close_callback(enum filter_status + (*cb)(uint64_t, void *), void *cb_arg) { filter_register_callback(FILTER_CLOSE, cb, cb_arg); } void -filter_register_rset_callback(enum filter_status (*cb)(uint64_t, void *), void *cb_arg) +filter_register_rset_callback(enum filter_status + (*cb)(uint64_t, void *), void *cb_arg) { filter_register_callback(FILTER_RSET, cb, cb_arg); } @@ -287,7 +305,7 @@ filter_handler(int fd, short event, void *p) if (fi.rset_cb == NULL) goto ignore; ret = fi.rset_cb(fm.cl_id, fi.rset_cb_arg); - break; + break; default: errx(1, "unsupported imsg"); diff --git a/smtpd/filter_api.h b/smtpd/filter_api.h index 6740db2c..dc463730 100644 --- a/smtpd/filter_api.h +++ b/smtpd/filter_api.h @@ -53,7 +53,7 @@ struct filter_connect { struct filter_helo { char helohost[MAXHOSTNAMELEN]; }; - + struct filter_mail { char user[MAX_LOCALPART_SIZE]; char domain[MAX_DOMAINPART_SIZE]; @@ -79,7 +79,7 @@ union filter_union { struct filter_msg { uint64_t id; /* set by smtpd(8) */ uint64_t cl_id; /* set by smtpd(8) */ - int8_t code; + int8_t code; uint8_t version; enum filter_type type; union filter_union u; @@ -89,13 +89,22 @@ struct filter_msg { void filter_init(void); void filter_loop(void); -void filter_register_connect_callback(enum filter_status (*)(uint64_t, struct filter_connect *, void *), void *); -void filter_register_helo_callback(enum filter_status (*)(uint64_t, struct filter_helo *, void *), void *); -void filter_register_ehlo_callback(enum filter_status (*)(uint64_t, struct filter_helo *, void *), void *); -void filter_register_mail_callback(enum filter_status (*)(uint64_t, struct filter_mail *, void *), void *); -void filter_register_rcpt_callback(enum filter_status (*)(uint64_t, struct filter_rcpt *, void *), void *); -void filter_register_dataline_callback(enum filter_status (*)(uint64_t, struct filter_dataline *, void *), void *); -void filter_register_quit_callback(enum filter_status (*)(uint64_t, void *), void *); -void filter_register_close_callback(enum filter_status (*)(uint64_t, void *), void *); -void filter_register_rset_callback(enum filter_status (*)(uint64_t, void *), void *); +void filter_register_connect_callback(enum filter_status + (*)(uint64_t, struct filter_connect *, void *), void *); +void filter_register_helo_callback(enum filter_status + (*)(uint64_t, struct filter_helo *, void *), void *); +void filter_register_ehlo_callback(enum filter_status + (*)(uint64_t, struct filter_helo *, void *), void *); +void filter_register_mail_callback(enum filter_status + (*)(uint64_t, struct filter_mail *, void *), void *); +void filter_register_rcpt_callback(enum filter_status + (*)(uint64_t, struct filter_rcpt *, void *), void *); +void filter_register_dataline_callback(enum filter_status + (*)(uint64_t, struct filter_dataline *, void *), void *); +void filter_register_quit_callback(enum filter_status + (*)(uint64_t, void *), void *); +void filter_register_close_callback(enum filter_status + (*)(uint64_t, void *), void *); +void filter_register_rset_callback(enum filter_status + (*)(uint64_t, void *), void *); diff --git a/smtpd/iobuf.c b/smtpd/iobuf.c index 227e41fc..a9e4a2de 100644 --- a/smtpd/iobuf.c +++ b/smtpd/iobuf.c @@ -47,7 +47,7 @@ iobuf_init(struct iobuf *io, size_t size, size_t max) if (size == 0) size = max; - + if (size > max) return (-1); @@ -68,7 +68,7 @@ iobuf_clear(struct iobuf *io) if (io->buf) free(io->buf); - while((q = io->outq)) { + while ((q = io->outq)) { io->outq = q->next; free(q); } @@ -82,7 +82,7 @@ iobuf_drain(struct iobuf *io, size_t n) struct ioqbuf *q; size_t left = n; - while((q = io->outq) && left) { + while ((q = io->outq) && left) { if ((q->wpos - q->rpos) > left) { q->rpos += left; left = 0; @@ -180,7 +180,7 @@ iobuf_getline(struct iobuf *iobuf, size_t *rlen) return (buf); } - return (NULL); + return (NULL); } void @@ -231,9 +231,9 @@ ioqbuf_alloc(struct iobuf *io, size_t len) return (NULL); q->rpos = 0; - q->wpos = 0; - q->size = len; - q->next = NULL; + q->wpos = 0; + q->size = len; + q->next = NULL; q->buf = (char *)(q) + sizeof(*q); if (io->outqlast == NULL) @@ -295,13 +295,13 @@ iobuf_queuev(struct iobuf *io, const struct iovec *iov, int iovcnt) size_t len = 0; char *buf; - for(i = 0; i < iovcnt; i++) + for (i = 0; i < iovcnt; i++) len += iov[i].iov_len; if ((buf = iobuf_reserve(io, len)) == NULL) return (-1); - for(i = 0; i < iovcnt; i++) { + for (i = 0; i < iovcnt; i++) { if (iov[i].iov_len == 0) continue; memmove(buf, iov[i].iov_base, iov[i].iov_len); @@ -351,7 +351,7 @@ iobuf_write(struct iobuf *io, int fd) ssize_t n; i = 0; - for(q = io->outq; q ; q = q->next) { + for (q = io->outq; q ; q = q->next) { if (i >= IOV_MAX) break; iov[i].iov_base = q->buf + q->rpos; diff --git a/smtpd/ioev.c b/smtpd/ioev.c index 4905c108..d9d5633f 100644 --- a/smtpd/ioev.c +++ b/smtpd/ioev.c @@ -114,7 +114,7 @@ io_strevent(int evt) { static char buf[32]; - switch(evt) { + switch (evt) { CASE(IO_CONNECTED); CASE(IO_TLSREADY); CASE(IO_DATAIN); @@ -423,7 +423,7 @@ io_reset(struct io *io, short events, void (*dispatch)(int, short, void*)) } else ptv = NULL; - event_add(&io->ev, ptv); + event_add(&io->ev, ptv); } size_t @@ -445,7 +445,7 @@ io_strflags(int flags) buf[0] = '\0'; - switch(flags & IO_RW) { + switch (flags & IO_RW) { case 0: strlcat(buf, "rw", sizeof buf); break; @@ -567,7 +567,7 @@ io_dispatch(int fd, short ev, void *humppa) io_callback(io, IO_DATAIN); } - leave: +leave: io_frame_leave(io); } @@ -815,7 +815,7 @@ io_reload_ssl(struct io *io) { void (*dispatch)(int, short, void*) = NULL; - switch(io->state) { + switch (io->state) { case IO_STATE_CONNECT_SSL: dispatch = io_dispatch_connect_ssl; break; diff --git a/smtpd/lka.c b/smtpd/lka.c index 0998f86e..f898227d 100644 --- a/smtpd/lka.c +++ b/smtpd/lka.c @@ -108,13 +108,12 @@ lka_imsg(struct imsgev *iev, struct imsg *imsg) secret = imsg->data; table = table_findbyname(secret->tablename); if (table == NULL) { - log_warn("warn: lka: credentials table %s is missing", + log_warn("warn: Credentials table %s missing", secret->tablename); imsg_compose_event(iev, IMSG_LKA_SECRET, 0, 0, -1, secret, sizeof *secret); return; } - ret = table_lookup(table->t_id, secret->host, K_CREDENTIALS, (void **)&table_credentials); @@ -129,11 +128,11 @@ lka_imsg(struct imsgev *iev, struct imsg *imsg) log_warnx("warn: %s credentials not found", secret->host); else if (lka_encode_credentials(secret->secret, - sizeof secret->secret, table_credentials) == 0) + sizeof secret->secret, table_credentials) == 0) log_warnx("warn: %s credentials parse fail", secret->host); - imsg_compose_event(iev, IMSG_LKA_SECRET, 0, 0, -1, secret, - sizeof *secret); + imsg_compose_event(iev, IMSG_LKA_SECRET, 0, 0, -1, + secret, sizeof *secret); free(table_credentials); return; } @@ -143,10 +142,10 @@ lka_imsg(struct imsgev *iev, struct imsg *imsg) if (iev->proc == PROC_PARENT) { switch (imsg->hdr.type) { case IMSG_CONF_START: - env->sc_rules_reload = xcalloc(1, sizeof *env->sc_rules, - "lka:sc_rules_reload"); - env->sc_tables_reload = xcalloc(1, sizeof *env->sc_tables, - "lka:sc_tables_reload"); + env->sc_rules_reload = xcalloc(1, + sizeof *env->sc_rules, "lka:sc_rules_reload"); + env->sc_tables_reload = xcalloc(1, + sizeof *env->sc_tables, "lka:sc_tables_reload"); TAILQ_INIT(env->sc_rules_reload); TAILQ_INIT(env->sc_tables_reload); return; @@ -159,14 +158,15 @@ lka_imsg(struct imsgev *iev, struct imsg *imsg) case IMSG_CONF_TABLE: table = xmemdup(imsg->data, sizeof *table, "lka:table"); TAILQ_INIT(&table->t_contents); - TAILQ_INSERT_TAIL(env->sc_tables_reload, table, t_entry); - + TAILQ_INSERT_TAIL(env->sc_tables_reload, table, + t_entry); tmp = env->sc_tables; env->sc_tables = env->sc_tables_reload; tp = table_open(table); if (tp == NULL) - errx(1, "lka: could not open table \"%s\"", table->t_name); + errx(1, "lka: could not open table \"%s\"", + table->t_name); table_close(table, tp); env->sc_tables = tmp; @@ -345,8 +345,9 @@ lka_encode_credentials(char *dst, size_t size, char *buf; int buflen; - if ((buflen = asprintf(&buf, "%c%s%c%s", '\0', table_credentials->username, - '\0', table_credentials->password)) == -1) + if ((buflen = asprintf(&buf, "%c%s%c%s", '\0', + table_credentials->username, '\0', + table_credentials->password)) == -1) fatal(NULL); if (__b64_ntop((unsigned char *)buf, buflen, dst, size) == -1) { diff --git a/smtpd/lka_session.c b/smtpd/lka_session.c index a03fd64e..99ec94a0 100644 --- a/smtpd/lka_session.c +++ b/smtpd/lka_session.c @@ -63,8 +63,10 @@ struct lka_session { struct expandnode *node; }; -static void lka_expand(struct lka_session *, struct rule *, struct expandnode *); -static void lka_submit(struct lka_session *, struct rule *, struct expandnode *); +static void lka_expand(struct lka_session *, struct rule *, + struct expandnode *); +static void lka_submit(struct lka_session *, struct rule *, + struct expandnode *); static void lka_resume(struct lka_session *); static size_t lka_expand_format(char *, size_t, const struct envelope *); static void mailaddr_to_username(const struct mailaddr *, char *, size_t); @@ -81,7 +83,7 @@ static char *tokens[] = { "dest.user", "dest.domain", "rcpt.user", - "rcpt.domain" + "rcpt.domain" }; void @@ -160,7 +162,7 @@ lka_resume(struct lka_session *lks) goto error; /* pop next node and expand it */ - while((xn = TAILQ_FIRST(&lks->nodes))) { + while ((xn = TAILQ_FIRST(&lks->nodes))) { TAILQ_REMOVE(&lks->nodes, xn, tq_entry); lka_expand(lks, xn->rule, xn); if (lks->flags & F_WAITING) @@ -171,7 +173,7 @@ lka_resume(struct lka_session *lks) /* delivery list is empty, reject */ if (TAILQ_FIRST(&lks->deliverylist) == NULL) { - log_debug("debug: lka_done: expansion led to empty delivery list"); + log_debug("debug: lka_done: expanded to empty delivery list"); lks->flags |= F_ERROR; } error: @@ -226,7 +228,7 @@ lka_expand(struct lka_session *lks, struct rule *rule, struct expandnode *xn) break; case EXPAND_ADDRESS: - log_debug("debug: lka_expand: expanding address: %s@%s [depth=%d]", + log_debug("debug: lka_expand: address: %s@%s [depth=%d]", xn->u.mailaddr.user, xn->u.mailaddr.domain, xn->depth); /* Pass the node through the ruleset */ @@ -253,13 +255,14 @@ lka_expand(struct lka_session *lks, struct rule *rule, struct expandnode *xn) if (r == -1) { lks->flags |= F_ERROR; lks->ss.code = 451; - log_debug( - "lka_expand: error in virtual alias lookup"); + log_debug("debug: lka_expand: " + "error in virtual alias lookup"); } else if (r == 0) { lks->flags |= F_ERROR; lks->ss.code = 530; - log_debug("debug: lka_expand: no aliases for virtual"); + log_debug("debug: lka_expand: " + "no aliases for virtual"); } } else { @@ -274,7 +277,8 @@ lka_expand(struct lka_session *lks, struct rule *rule, struct expandnode *xn) break; case EXPAND_USERNAME: - log_debug("debug: lka_expand: expanding username: %s [depth=%d]", xn->u.user, xn->depth); + log_debug("debug: lka_expand: username: %s [depth=%d]", + xn->u.user, xn->depth); if (xn->sameuser) { log_debug("debug: lka_expand: same user, submitting"); @@ -287,9 +291,11 @@ lka_expand(struct lka_session *lks, struct rule *rule, struct expandnode *xn) lks->expand.parent = xn; lks->expand.alias = 1; if (rule->r_atable) { - r = aliases_get(rule->r_atable, &lks->expand, xn->u.user); + r = aliases_get(rule->r_atable, &lks->expand, + xn->u.user); if (r == -1) { - log_debug("debug: lka_expand: error in alias lookup"); + log_debug("debug: lka_expand: " + "error in alias lookup"); lks->flags |= F_ERROR; lks->ss.code = 451; } @@ -299,7 +305,8 @@ lka_expand(struct lka_session *lks, struct rule *rule, struct expandnode *xn) /* a username should not exceed the size of a system user */ if (strlen(xn->u.user) >= sizeof fwreq.as_user) { - log_debug("debug: lka_expand: user-part too long to be a system user"); + log_debug("debug: lka_expand: " + "user-part too long to be a system user"); lks->flags |= F_ERROR; lks->ss.code = 530; break; @@ -308,7 +315,8 @@ lka_expand(struct lka_session *lks, struct rule *rule, struct expandnode *xn) bzero(&u, sizeof (u)); ub = user_backend_lookup(USER_PWD); if (! ub->getbyname(&u, xn->u.user)) { - log_debug("debug: lka_expand: user-part does not match system user"); + log_debug("debug: lka_expand: " + "user-part does not match system user"); lks->flags |= F_ERROR; lks->ss.code = 530; break; @@ -325,12 +333,14 @@ lka_expand(struct lka_session *lks, struct rule *rule, struct expandnode *xn) break; case EXPAND_FILENAME: - log_debug("debug: lka_expand: expanding filename: %s [depth=%d]", xn->u.buffer, xn->depth); + log_debug("debug: lka_expand: filename: %s [depth=%d]", + xn->u.buffer, xn->depth); lka_submit(lks, rule, xn); break; case EXPAND_FILTER: - log_debug("debug: lka_expand: expanding filter: %s [depth=%d]", xn->u.buffer, xn->depth); + log_debug("debug: lka_expand: filter: %s [depth=%d]", + xn->u.buffer, xn->depth); lka_submit(lks, rule, xn); break; } @@ -339,10 +349,11 @@ lka_expand(struct lka_session *lks, struct rule *rule, struct expandnode *xn) static struct expandnode * lka_find_ancestor(struct expandnode *xn, enum expand_type type) { - while(xn && (xn->type != type)) + while (xn && (xn->type != type)) xn = xn->parent; if (xn == NULL) { - log_warnx("warn: lka_find_ancestor: no ancestors of type %i", type); + log_warnx("warn: lka_find_ancestor: no ancestors of type %i", + type); fatalx(NULL); } return (xn); @@ -385,16 +396,17 @@ lka_submit(struct lka_session *lks, struct rule *rule, struct expandnode *xn) if ((xn->type == EXPAND_FILTER || xn->type == EXPAND_FILENAME) && xn->alias) { strlcpy(ep->agent.mda.user.username, SMTPD_USER, - sizeof (ep->agent.mda.user.username)); + sizeof(ep->agent.mda.user.username)); } else { xn2 = lka_find_ancestor(xn, EXPAND_USERNAME); strlcpy(ep->agent.mda.user.username, xn2->u.user, - sizeof (ep->agent.mda.user.username)); + sizeof(ep->agent.mda.user.username)); } ub = user_backend_lookup(USER_PWD); - if (! ub->getbyname(&ep->agent.mda.user, ep->agent.mda.user.username)) { + if (! ub->getbyname(&ep->agent.mda.user, + ep->agent.mda.user.username)) { lks->flags |= F_ERROR; lks->ss.code = 451; free(ep); @@ -418,9 +430,9 @@ lka_submit(struct lka_session *lks, struct rule *rule, struct expandnode *xn) tag = mailaddr_tag(&ep->dest); if (rule->r_action == A_MAILDIR && tag && tag[0]) { strlcat(ep->agent.mda.buffer, "/.", - sizeof (ep->agent.mda.buffer)); + sizeof(ep->agent.mda.buffer)); strlcat(ep->agent.mda.buffer, tag, - sizeof (ep->agent.mda.buffer)); + sizeof(ep->agent.mda.buffer)); } } else @@ -431,7 +443,8 @@ lka_submit(struct lka_session *lks, struct rule *rule, struct expandnode *xn) lks->flags |= F_ERROR; lks->ss.code = 451; log_warnx("warn: format string error while" - " expanding for user %s", ep->agent.mda.user.username); + " expanding for user %s", + ep->agent.mda.user.username); free(ep); return; } @@ -445,7 +458,8 @@ lka_submit(struct lka_session *lks, struct rule *rule, struct expandnode *xn) static size_t -lka_expand_token(char *dest, size_t len, const char *token, const struct envelope *ep) +lka_expand_token(char *dest, size_t len, const char *token, + const struct envelope *ep) { char rtoken[MAXTOKENLEN]; const char *string; @@ -460,7 +474,8 @@ lka_expand_token(char *dest, size_t len, const char *token, const struct envelop return 0; /* token[x[:y]] -> extracts optional x and y, converts into offsets */ - if ((lbracket = strchr(rtoken, '[')) && (rbracket = strchr(rtoken, ']'))) { + if ((lbracket = strchr(rtoken, '[')) && + (rbracket = strchr(rtoken, ']'))) { /* ] before [ ... or empty */ if (rbracket < lbracket || rbracket - lbracket <= 1) return 0; @@ -468,16 +483,18 @@ lka_expand_token(char *dest, size_t len, const char *token, const struct envelop content = lbracket + 1; if ((sep = strchr(content, ':')) == NULL) - begoff = strtonum(content, -EXPAND_BUFFER, EXPAND_BUFFER, &errstr); + begoff = strtonum(content, -EXPAND_BUFFER, + EXPAND_BUFFER, &errstr); else { *sep = '\0'; if (content != sep) - begoff = strtonum(content, -EXPAND_BUFFER, EXPAND_BUFFER, &errstr); + begoff = strtonum(content, -EXPAND_BUFFER, + EXPAND_BUFFER, &errstr); sep++; if (*sep) { if (errstr == NULL) - endoff = strtonum(sep, -EXPAND_BUFFER, EXPAND_BUFFER, - &errstr); + endoff = strtonum(sep, -EXPAND_BUFFER, + EXPAND_BUFFER, &errstr); if (endoff == 0) return 0; } @@ -520,7 +537,9 @@ lka_expand_token(char *dest, size_t len, const char *token, const struct envelop if (begoff >= i) return 0; - /* end offset beyond end of string or unspecified, make it end of string */ + /* end offset beyond end of string or unspecified, + * make it end of string + */ if (endoff >= i || endoff == 0) endoff = i; @@ -554,7 +573,7 @@ lka_expand_format(char *buf, size_t len, const struct envelope *ep) size_t ret, tmpret; if (len < sizeof tmpbuf) - fatalx("lka_expand_format: tmp buffer smaller than rule buffer"); + fatalx("lka_expand_format: tmp buffer < rule buffer"); bzero(tmpbuf, sizeof tmpbuf); pbuf = buf; @@ -563,7 +582,8 @@ lka_expand_format(char *buf, size_t len, const struct envelope *ep) /* special case: ~/ only allowed expanded at the beginning */ if (strncmp(pbuf, "~/", 2) == 0) { - tmpret = snprintf(ptmp, sizeof tmpbuf, "%s/", ep->agent.mda.user.directory); + tmpret = snprintf(ptmp, sizeof tmpbuf, "%s/", + ep->agent.mda.user.directory); if (tmpret >= sizeof tmpbuf) { log_warnx("warn: user directory for %s too large", ep->agent.mda.user.directory); @@ -599,7 +619,8 @@ lka_expand_format(char *buf, size_t len, const struct envelope *ep) return 0; *strchr(memcpy(token, pbuf+2, ebuf-pbuf-1), '}') = '\0'; - if ((exptoklen = lka_expand_token(exptok, sizeof exptok, token, ep)) == 0) + exptoklen = lka_expand_token(exptok, sizeof exptok, token, ep); + if (exptoklen == 0) return 0; if (! lowercase(exptok, exptok, sizeof exptok)) diff --git a/smtpd/log.c b/smtpd/log.c index c5738952..df0c074f 100644 --- a/smtpd/log.c +++ b/smtpd/log.c @@ -38,7 +38,7 @@ int verbose; void vlog(int, const char *, va_list); void logit(int, const char *, ...) - __attribute__ ((format (printf, 2, 3))); + __attribute__((format (printf, 2, 3))); void diff --git a/smtpd/log.h b/smtpd/log.h index ce2e454e..1b58f205 100644 --- a/smtpd/log.h +++ b/smtpd/log.h @@ -19,14 +19,14 @@ void log_init(int); void log_verbose(int); void log_warn(const char *, ...) - __attribute__ ((format (printf, 1, 2))); + __attribute__((format (printf, 1, 2))); void log_warnx(const char *, ...) - __attribute__ ((format (printf, 1, 2))); + __attribute__((format (printf, 1, 2))); void log_info(const char *, ...) - __attribute__ ((format (printf, 1, 2))); + __attribute__((format (printf, 1, 2))); void log_debug(const char *, ...) - __attribute__ ((format (printf, 1, 2))); + __attribute__((format (printf, 1, 2))); void log_trace(int, const char *, ...) - __attribute__ ((format (printf, 2, 3))); + __attribute__((format (printf, 2, 3))); __dead void fatal(const char *); __dead void fatalx(const char *); diff --git a/smtpd/makemap.c b/smtpd/makemap.c index d9c113e2..969a7469 100644 --- a/smtpd/makemap.c +++ b/smtpd/makemap.c @@ -151,15 +151,18 @@ main(int argc, char *argv[]) p = strstr(argv[1], ".db"); if (p == NULL || strcmp(p, ".db") != 0) { - if (! bsnprintf(dbname, sizeof dbname, "%s.db", argv[1])) + if (! bsnprintf(dbname, sizeof dbname, "%s.db", + argv[1])) errx(1, "database name too long"); } else { - if (strlcpy(dbname, argv[1], sizeof dbname) >= sizeof dbname) + if (strlcpy(dbname, argv[1], sizeof dbname) + >= sizeof dbname) errx(1, "database name too long"); } - execlp(execname, execname, "-d", argv[0], "-o", dbname, "-", NULL); + execlp(execname, execname, "-d", argv[0], "-o", dbname, "-", + NULL); err(1, "execlp"); } @@ -197,7 +200,8 @@ main(int argc, char *argv[]) if (strcmp(source, "-") != 0) if (fchmod(db->fd(db), sb.st_mode) == -1 || fchown(db->fd(db), sb.st_uid, sb.st_gid) == -1) { - warn("couldn't carry ownership and perms to %s", dbname); + warn("couldn't carry ownership and perms to %s", + dbname); goto bad; } @@ -364,7 +368,7 @@ parse_setentry(char *line, size_t len, size_t lineno) if (db->put(db, &key, &val, 0) == -1) { warn("dbput"); return 0; - } + } dbputs++; @@ -384,9 +388,9 @@ int make_aliases(DBT *val, char *text) { struct expandnode xn; - char *subrcpt; - char *endp; - char *origtext; + char *subrcpt; + char *endp; + char *origtext; val->data = NULL; val->size = 0; @@ -448,7 +452,7 @@ usage(void) if (mode == P_NEWALIASES) fprintf(stderr, "usage: %s [-f file]\n", __progname); else - fprintf(stderr, "usage: %s [-d dbtype] [-o dbfile] [-t type] file\n", - __progname); + fprintf(stderr, "usage: %s [-d dbtype] [-o dbfile] " + "[-t type] file\n", __progname); exit(1); } diff --git a/smtpd/mda.c b/smtpd/mda.c index 8002298b..556e16eb 100644 --- a/smtpd/mda.c +++ b/smtpd/mda.c @@ -122,8 +122,8 @@ mda_imsg(struct imsgev *iev, struct imsg *imsg) if (!strcmp(name, u->name)) break; if (u && u->evpcount >= MDA_MAXEVPUSER) { - log_debug("debug: mda: too many envelopes for \"%s\"", - u->name); + log_debug("debug: mda: too many envelopes for " + "\"%s\"", u->name); envelope_set_errormsg(ep, "User envelope limit reached"); imsg_compose_event(env->sc_ievs[PROC_QUEUE], @@ -139,8 +139,8 @@ mda_imsg(struct imsgev *iev, struct imsg *imsg) TAILQ_INSERT_TAIL(&users, u, entry); } if (u->runnable == 0 && u->running < MDA_MAXSESSUSER) { - log_debug("debug: mda: \"%s\" immediatly runnable", - u->name); + log_debug("debug: mda: \"%s\" immediatly " + "runnable", u->name); TAILQ_INSERT_TAIL(&runnable, u, entry_runnable); u->runnable = 1; } @@ -194,7 +194,8 @@ mda_imsg(struct imsgev *iev, struct imsg *imsg) s->evp->rcpt.user, s->evp->rcpt.domain); if (n == -1) { - log_warn("warn: mda: fail to write delivery info"); + log_warn("warn: mda: " + "fail to write delivery info"); envelope_set_errormsg(s->evp, "Out of memory"); mda_done(s, IMSG_QUEUE_DELIVERY_TEMPFAIL); return; @@ -207,17 +208,17 @@ mda_imsg(struct imsgev *iev, struct imsg *imsg) case A_MDA: deliver.mode = A_MDA; strlcpy(deliver.user, d_mda->user.username, - sizeof (deliver.user)); + sizeof(deliver.user)); strlcpy(deliver.to, d_mda->buffer, - sizeof deliver.to); + sizeof(deliver.to)); break; - + case A_MBOX: deliver.mode = A_MBOX; strlcpy(deliver.user, "root", - sizeof (deliver.user)); + sizeof(deliver.user)); strlcpy(deliver.to, d_mda->user.username, - sizeof (deliver.to)); + sizeof(deliver.to)); snprintf(deliver.from, sizeof(deliver.from), "%s@%s", ep->sender.user, ep->sender.domain); @@ -226,9 +227,9 @@ mda_imsg(struct imsgev *iev, struct imsg *imsg) case A_MAILDIR: deliver.mode = A_MAILDIR; strlcpy(deliver.user, d_mda->user.username, - sizeof deliver.user); + sizeof(deliver.user)); strlcpy(deliver.to, d_mda->buffer, - sizeof deliver.to); + sizeof(deliver.to)); break; case A_FILENAME: @@ -275,7 +276,8 @@ mda_imsg(struct imsgev *iev, struct imsg *imsg) */ output[0] = '\0'; if (imsg->fd != -1) - mda_getlastline(imsg->fd, output, sizeof output); + mda_getlastline(imsg->fd, output, + sizeof output); /* * Choose between parent's description of error and @@ -295,7 +297,8 @@ mda_imsg(struct imsgev *iev, struct imsg *imsg) if (error) { msg = IMSG_QUEUE_DELIVERY_TEMPFAIL; envelope_set_errormsg(s->evp, "%s", error); - snprintf(stat, sizeof stat, "Error (%s)", error); + snprintf(stat, sizeof stat, "Error (%s)", + error); } log_envelope(s->evp, NULL, error ? "TempFail" : "Ok", error ? stat : "Delivered"); @@ -404,10 +407,10 @@ mda_io(struct io *io, int evt) char *ln, buf[256]; size_t len; - log_trace(TRACE_IO, "mda: %p: %s %s", s, io_strevent(evt), io_strio(io)); - - switch(evt) { + log_trace(TRACE_IO, "mda: %p: %s %s", s, io_strevent(evt), + io_strio(io)); + switch (evt) { case IO_LOWAT: /* done */ @@ -562,11 +565,13 @@ mda_drain(void) while ((user = (TAILQ_FIRST(&runnable)))) { if (running >= MDA_MAXSESS) { - log_debug("debug: mda: maximum number of session reached"); + log_debug("debug: mda: " + "maximum number of session reached"); return; } - log_debug("debug: mda: new session for user \"%s\"", user->name); + log_debug("debug: mda: new session for user \"%s\"", + user->name); s = xcalloc(1, sizeof *s, "mda_drain"); s->user = user; @@ -602,7 +607,8 @@ mda_drain(void) user->running < MDA_MAXSESSUSER) { TAILQ_INSERT_TAIL(&runnable, user, entry_runnable); user->runnable = 1; - log_debug("debug: mda: user \"%s\" still runnable", user->name); + log_debug("debug: mda: user \"%s\" still runnable", + user->name); } } } @@ -621,16 +627,17 @@ mda_done(struct mda_session *s, int msg) stat_decrement("mda.running", 1); if (TAILQ_FIRST(&s->user->envelopes) == NULL && s->user->running == 0) { - log_debug("debug: mda: all done for user \"%s\"", s->user->name); + log_debug("debug: mda: " + "all done for user \"%s\"", s->user->name); TAILQ_REMOVE(&users, s->user, entry); free(s->user); } else if (s->user->runnable == 0 && - TAILQ_FIRST(&s->user->envelopes) && - s->user->running < MDA_MAXSESSUSER) { - log_debug("debug: mda: user \"%s\" becomes runnable", - s->user->name); - TAILQ_INSERT_TAIL(&runnable, s->user, entry_runnable); - s->user->runnable = 1; + TAILQ_FIRST(&s->user->envelopes) && + s->user->running < MDA_MAXSESSUSER) { + log_debug("debug: mda: user \"%s\" becomes runnable", + s->user->name); + TAILQ_INSERT_TAIL(&runnable, s->user, entry_runnable); + s->user->runnable = 1; } if (s->datafp) diff --git a/smtpd/mfa.c b/smtpd/mfa.c index 921d7505..9032b4d5 100644 --- a/smtpd/mfa.c +++ b/smtpd/mfa.c @@ -115,13 +115,15 @@ mfa_imsg(struct imsgev *iev, struct imsg *imsg) return; case IMSG_CONF_FILTER: - filter = xmemdup(imsg->data, sizeof *filter, "mfa_imsg"); + filter = xmemdup(imsg->data, sizeof *filter, + "mfa_imsg"); TAILQ_INSERT_TAIL(env->sc_filters, filter, f_entry); return; case IMSG_CONF_END: TAILQ_FOREACH(filter, env->sc_filters, f_entry) { - log_info("info: Forking filter: %s", filter->name); + log_info("info: Forking filter: %s", + filter->name); if (! mfa_fork_filter(filter)) fatalx("could not fork filter"); } @@ -280,7 +282,8 @@ mfa_test_mail(struct envelope *e) /* * "MAIL FROM:<>" is the exception we allow. */ - if (!(ss.u.maddr.user[0] == '\0' && ss.u.maddr.domain[0] == '\0')) + if (!(ss.u.maddr.user[0] == '\0' && + ss.u.maddr.domain[0] == '\0')) goto refuse; } @@ -288,8 +291,8 @@ mfa_test_mail(struct envelope *e) return; refuse: - imsg_compose_event(env->sc_ievs[PROC_SMTP], IMSG_MFA_MAIL, 0, 0, -1, &ss, - sizeof(ss)); + imsg_compose_event(env->sc_ievs[PROC_SMTP], IMSG_MFA_MAIL, 0, 0, -1, + &ss, sizeof(ss)); return; } @@ -307,7 +310,7 @@ mfa_test_rcpt(struct envelope *e) ss.flags = e->flags; mfa_strip_source_route(ss.u.maddr.user, sizeof(ss.u.maddr.user)); - + if (! valid_localpart(ss.u.maddr.user) || ! valid_domainpart(ss.u.maddr.domain)) goto refuse; @@ -316,16 +319,16 @@ mfa_test_rcpt(struct envelope *e) return; refuse: - imsg_compose_event(env->sc_ievs[PROC_SMTP], IMSG_MFA_RCPT, 0, 0, -1, &ss, - sizeof(ss)); + imsg_compose_event(env->sc_ievs[PROC_SMTP], IMSG_MFA_RCPT, 0, 0, -1, + &ss, sizeof(ss)); } static void mfa_test_rcpt_resume(struct submit_status *ss) { if (ss->code != 250) { - imsg_compose_event(env->sc_ievs[PROC_SMTP], IMSG_MFA_RCPT, 0, 0, -1, ss, - sizeof(*ss)); + imsg_compose_event(env->sc_ievs[PROC_SMTP], IMSG_MFA_RCPT, 0, 0, + -1, ss, sizeof(*ss)); return; } @@ -416,7 +419,7 @@ mfa_fork_filter(struct filter *filter) if (pid == 0) { /* filter */ dup2(sockpair[0], STDIN_FILENO); - + if (closefrom(STDERR_FILENO + 1) < 0) exit(1); diff --git a/smtpd/mfa_session.c b/smtpd/mfa_session.c index e63864d6..3309550d 100644 --- a/smtpd/mfa_session.c +++ b/smtpd/mfa_session.c @@ -71,7 +71,7 @@ mfa_session(struct submit_status *ss, enum session_state state) static int mfa_session_proceed(struct mfa_session *ms) { - struct filter_msg fm; + struct filter_msg fm; fm.id = ms->id; fm.cl_id = ms->ss.id; @@ -82,15 +82,17 @@ mfa_session_proceed(struct mfa_session *ms) case S_CONNECTED: fm.type = FILTER_CONNECT; if (strlcpy(fm.u.connect.hostname, ms->ss.envelope.hostname, - sizeof(fm.u.connect.hostname)) >= sizeof(fm.u.connect.hostname)) + sizeof(fm.u.connect.hostname)) + >= sizeof(fm.u.connect.hostname)) fatalx("mfa_session_proceed: CONNECT: truncation"); fm.u.connect.hostaddr = ms->ss.envelope.ss; break; - case S_HELO: + case S_HELO: fm.type = FILTER_HELO; if (strlcpy(fm.u.helo.helohost, ms->ss.envelope.helo, - sizeof(fm.u.helo.helohost)) >= sizeof(fm.u.helo.helohost)) + sizeof(fm.u.helo.helohost)) + >= sizeof(fm.u.helo.helohost)) fatalx("mfa_session_proceed: HELO: truncation"); break; @@ -117,7 +119,8 @@ mfa_session_proceed(struct mfa_session *ms) case S_DATACONTENT: fm.type = FILTER_DATALINE; if (strlcpy(fm.u.dataline.line, ms->ss.u.dataline, - sizeof(fm.u.dataline.line)) >= sizeof(fm.u.dataline.line)) + sizeof(fm.u.dataline.line)) + >= sizeof(fm.u.dataline.line)) fatalx("mfa_session_proceed: DATA: line truncation"); break; @@ -139,7 +142,8 @@ mfa_session_proceed(struct mfa_session *ms) imsg_compose(ms->filter->ibuf, fm.type, 0, 0, -1, &fm, sizeof(fm)); - event_set(&ms->filter->ev, ms->filter->ibuf->fd, EV_READ|EV_WRITE, mfa_session_imsg, ms->filter); + event_set(&ms->filter->ev, ms->filter->ibuf->fd, EV_READ|EV_WRITE, + mfa_session_imsg, ms->filter); event_add(&ms->filter->ev, NULL); return 1; } @@ -173,8 +177,9 @@ mfa_session_done(struct mfa_session *ms) break; case S_MAIL_MFA: if (ms->ss.code != 530) { - imsg_compose_event(env->sc_ievs[PROC_LKA], IMSG_LKA_MAIL, 0, - 0, -1, &ms->ss, sizeof(ms->ss)); + imsg_compose_event(env->sc_ievs[PROC_LKA], + IMSG_LKA_MAIL, 0, 0, -1, + &ms->ss, sizeof(ms->ss)); mfa_session_destroy(ms); return; } @@ -182,8 +187,9 @@ mfa_session_done(struct mfa_session *ms) break; case S_RCPT_MFA: if (ms->ss.code != 530) { - imsg_compose_event(env->sc_ievs[PROC_LKA], IMSG_LKA_RULEMATCH, - 0, 0, -1, &ms->ss, sizeof(ms->ss)); + imsg_compose_event(env->sc_ievs[PROC_LKA], + IMSG_LKA_RULEMATCH, 0, 0, -1, + &ms->ss, sizeof(ms->ss)); mfa_session_destroy(ms); return; } @@ -191,8 +197,9 @@ mfa_session_done(struct mfa_session *ms) break; case S_DATACONTENT: if (ms->ss.code != 530 && ms->fm.code != 0) - (void)strlcpy(ms->ss.u.dataline, ms->fm.u.dataline.line, - sizeof(ms->ss.u.dataline)); + (void)strlcpy(ms->ss.u.dataline, + ms->fm.u.dataline.line, + sizeof(ms->ss.u.dataline)); imsg_type = IMSG_MFA_DATALINE; break; case S_QUIT: diff --git a/smtpd/mta.c b/smtpd/mta.c index fdf005b5..246c40bb 100644 --- a/smtpd/mta.c +++ b/smtpd/mta.c @@ -61,7 +61,8 @@ static void mta_sig_handler(int, short, void *); static struct mta_route *mta_route_for(struct envelope *); static void mta_route_drain(struct mta_route *); static void mta_route_free(struct mta_route *); -static void mta_envelope_done(struct mta_task *, struct envelope *, const char *); +static void mta_envelope_done(struct mta_task *, struct envelope *, + const char *); static int mta_route_cmp(struct mta_route *, struct mta_route *); SPLAY_PROTOTYPE(mta_route_tree, mta_route, entry, mta_route_cmp); @@ -97,7 +98,8 @@ mta_imsg(struct imsgev *iev, struct imsg *imsg) route = mta_route_for(e); batch = tree_xget(&batches, e->batch_id); - if ((task = tree_get(&batch->tasks, route->id)) == NULL) { + if ((task = tree_get(&batch->tasks, route->id)) + == NULL) { log_trace(TRACE_MTA, "mta: new task for %s", mta_route_to_text(route)); task = xmalloc(sizeof *task, "mta_task"); @@ -119,7 +121,8 @@ mta_imsg(struct imsgev *iev, struct imsg *imsg) /* XXX honour route->maxrcpt */ TAILQ_INSERT_TAIL(&task->envelopes, e, entry); stat_increment("mta.envelope", 1); - log_debug("debug: mta: received evp:%016" PRIx64 " for <%s@%s>", + log_debug("debug: mta: received evp:%016" PRIx64 + " for <%s@%s>", e->id, e->dest.user, e->dest.domain); return; @@ -129,12 +132,14 @@ mta_imsg(struct imsgev *iev, struct imsg *imsg) log_trace(TRACE_MTA, "mta: batch:%016" PRIx64 " closed", batch->id); /* for all tasks, queue them on there route */ - while (tree_poproot(&batch->tasks, &id, (void**)&task)) { + while (tree_poproot(&batch->tasks, &id, + (void**)&task)) { if (id != task->route->id) errx(1, "route id mismatch!"); task->route->refcount -= 1; task->route->ntask += 1; - TAILQ_INSERT_TAIL(&task->route->tasks, task, entry); + TAILQ_INSERT_TAIL(&task->route->tasks, task, + entry); stat_increment("mta.task", 1); mta_route_drain(task->route); } @@ -164,7 +169,8 @@ mta_imsg(struct imsgev *iev, struct imsg *imsg) if (env->sc_flags & SMTPD_CONFIGURING) return; env->sc_flags |= SMTPD_CONFIGURING; - env->sc_ssl = xcalloc(1, sizeof *env->sc_ssl, "mta:sc_ssl"); + env->sc_ssl = xcalloc(1, sizeof *env->sc_ssl, + "mta:sc_ssl"); return; case IMSG_CONF_SSL: @@ -444,7 +450,8 @@ mta_route_for(struct envelope *e) route->cert = key.cert ? xstrdup(key.cert, "mta: cert") : NULL; route->auth = key.auth ? xstrdup(key.auth, "mta: auth") : NULL; if (route->cert) { - strlcpy(ssl.ssl_name, route->cert, sizeof(ssl.ssl_name)); + strlcpy(ssl.ssl_name, route->cert, + sizeof(ssl.ssl_name)); route->ssl = SPLAY_FIND(ssltree, env->sc_ssl, &ssl); } SPLAY_INSERT(mta_route_tree, &routes, route); @@ -456,7 +463,8 @@ mta_route_for(struct envelope *e) log_trace(TRACE_MTA, "mta: new %s", mta_route_to_text(route)); stat_increment("mta.route", 1); } else { - log_trace(TRACE_MTA, "mta: reusing %s", mta_route_to_text(route)); + log_trace(TRACE_MTA, "mta: reusing %s", + mta_route_to_text(route)); } return (route); @@ -492,7 +500,8 @@ mta_route_drain(struct mta_route *route) } if (route->ntask == 0) { - log_debug("debug: mta: no task for %s", mta_route_to_text(route)); + log_debug("debug: mta: no task for %s", + mta_route_to_text(route)); return; } @@ -506,7 +515,7 @@ mta_route_drain(struct mta_route *route) while ((task = TAILQ_FIRST(&route->tasks))) { TAILQ_REMOVE(&route->tasks, task, entry); route->ntask -= 1; - while((e = TAILQ_FIRST(&task->envelopes))) + while ((e = TAILQ_FIRST(&task->envelopes))) mta_envelope_done(task, e, route->errorline); free(task); stat_decrement("mta.task", 1); diff --git a/smtpd/mta_session.c b/smtpd/mta_session.c index e72fcc3c..759e716d 100644 --- a/smtpd/mta_session.c +++ b/smtpd/mta_session.c @@ -109,7 +109,8 @@ struct mta_session { static void mta_io(struct io *, int); static void mta_enter_state(struct mta_session *, int); static void mta_status(struct mta_session *, int, const char *, ...); -static void mta_envelope_done(struct mta_task *, struct envelope *, const char *); +static void mta_envelope_done(struct mta_task *, struct envelope *, + const char *); static void mta_send(struct mta_session *, char *, ...); static ssize_t mta_queue_data(struct mta_session *); static void mta_response(struct mta_session *, char *); @@ -151,7 +152,8 @@ mta_session(struct mta_route *route) session->flags |= MTA_ALLOW_PLAIN; } - log_debug("debug: mta: %p: spawned for %s", session, mta_route_to_text(route)); + log_debug("debug: mta: %p: spawned for %s", session, + mta_route_to_text(route)); stat_increment("mta.session", 1); mta_enter_state(session, MTA_INIT); } @@ -167,8 +169,7 @@ mta_session_imsg(struct imsgev *iev, struct imsg *imsg) const char *error; void *ptr; - switch(imsg->hdr.type) { - + switch (imsg->hdr.type) { case IMSG_QUEUE_MESSAGE_FD: id = *(uint64_t*)(imsg->data); if (imsg->fd == -1) @@ -245,7 +246,8 @@ mta_session_imsg(struct imsgev *iev, struct imsg *imsg) /* check if we need to start tls now... */ if (((s->flags & MTA_FORCE_ANYSSL) && host->used == 1) || (s->flags & MTA_FORCE_SMTPS)) { - log_debug("debug: mta: %p: trying smtps (ssl=%p)...", s, s->ssl); + log_debug("debug: mta: %p: trying smtps (ssl=%p)...", + s, s->ssl); if ((ptr = ssl_mta_init(s->ssl)) == NULL) fatalx("mta: ssl_mta_init"); io_start_tls(&s->io, ptr); @@ -305,10 +307,11 @@ mta_enter_state(struct mta_session *s, int newstate) */ bzero(&secret, sizeof(secret)); secret.id = s->id; - strlcpy(secret.tablename, s->route->auth, sizeof(secret.tablename)); + strlcpy(secret.tablename, s->route->auth, + sizeof(secret.tablename)); strlcpy(secret.host, s->route->hostname, sizeof(secret.host)); imsg_compose_event(env->sc_ievs[PROC_LKA], IMSG_LKA_SECRET, - 0, 0, -1, &secret, sizeof(secret)); + 0, 0, -1, &secret, sizeof(secret)); break; case MTA_MX: @@ -316,16 +319,18 @@ mta_enter_state(struct mta_session *s, int newstate) * Lookup MX record. */ if (s->flags & MTA_FORCE_MX) /* XXX */ - dns_query_host(s->route->hostname, s->route->port, s->id); + dns_query_host(s->route->hostname, s->route->port, + s->id); else - dns_query_mx(s->route->hostname, s->route->backupname, 0, s->id); + dns_query_mx(s->route->hostname, s->route->backupname, + 0, s->id); break; case MTA_CONNECT: /* * Connect to the MX. */ - + /* cleanup previous connection if any */ iobuf_clear(&s->iobuf); io_clear(&s->io); @@ -350,7 +355,8 @@ mta_enter_state(struct mta_session *s, int newstate) if (s->route->port) sa_set_port(sa, s->route->port); - else if ((s->flags & MTA_FORCE_ANYSSL) && host->used == 1) + else if ((s->flags & MTA_FORCE_ANYSSL) && + host->used == 1) sa_set_port(sa, 465); else if (s->flags & MTA_FORCE_SMTPS) sa_set_port(sa, 465); @@ -361,7 +367,8 @@ mta_enter_state(struct mta_session *s, int newstate) io_init(&s->io, -1, s, mta_io, &s->iobuf); io_set_timeout(&s->io, 10000); if (io_connect(&s->io, sa, NULL) == -1) { - log_debug("debug: mta: %p: connection failed: %s", s, + log_debug("debug: mta: %p: " + "connection failed: %s", s, strerror(errno)); iobuf_clear(&s->iobuf); /* @@ -432,8 +439,8 @@ mta_enter_state(struct mta_session *s, int newstate) if (s->secret && s->flags & MTA_TLS) mta_send(s, "AUTH PLAIN %s", s->secret); else if (s->secret) { - log_debug("debug: mta: %p: not using AUTH on non-TLS session", - s); + log_debug("debug: mta: " + "%p: not using AUTH on non-TLS session", s); mta_enter_state(s, MTA_CONNECT); } else { mta_enter_state(s, MTA_SMTP_READY); @@ -447,11 +454,13 @@ mta_enter_state(struct mta_session *s, int newstate) mta_route_ok(s->route); } if (s->msgcount >= s->route->maxmail) { - log_debug("debug: mta: %p: cannot send more message to %s", s, + log_debug("debug: mta: " + "%p: cannot send more message to %s", s, mta_route_to_text(s->route)); mta_enter_state(s, MTA_SMTP_QUIT); } else if ((s->task = TAILQ_FIRST(&s->route->tasks))) { - log_debug("debug: mta: %p: handling next task for %s", s, + log_debug("debug: mta: " + "%p: handling next task for %s", s, mta_route_to_text(s->route)); TAILQ_REMOVE(&s->route->tasks, s->task, entry); s->route->ntask -= 1; @@ -648,7 +657,8 @@ mta_io(struct io *io, int evt) const char *error; int cont; - log_trace(TRACE_IO, "mta: %p: %s %s", s, io_strevent(evt), io_strio(io)); + log_trace(TRACE_IO, "mta: %p: %s %s", s, io_strevent(evt), + io_strio(io)); switch (evt) { @@ -708,7 +718,7 @@ mta_io(struct io *io, int evt) io_set_write(io); mta_response(s, line); - iobuf_normalize(&s->iobuf); + iobuf_normalize(&s->iobuf); if (iobuf_len(&s->iobuf)) { log_debug("debug: mta: remaining data in input buffer"); @@ -746,7 +756,8 @@ mta_io(struct io *io, int evt) break; case IO_DISCONNECTED: - log_debug("debug: mta: %p: disconnected in state %s", s, mta_strstate(s->state)); + log_debug("debug: mta: %p: disconnected in state %s", + s, mta_strstate(s->state)); if (!s->ready) { mta_enter_state(s, MTA_CONNECT); break; @@ -825,7 +836,7 @@ mta_status(struct mta_session *s, int connerr, const char *fmt, ...) va_end(ap); if (s->task) { - while((e = TAILQ_FIRST(&s->task->envelopes))) + while ((e = TAILQ_FIRST(&s->task->envelopes))) mta_envelope_done(s->task, e, status); free(s->task); s->task = NULL; @@ -875,7 +886,7 @@ mta_strstate(int state) CASE(MTA_CONNECT); CASE(MTA_DONE); CASE(MTA_SMTP_READY); - CASE(MTA_SMTP_BANNER); + CASE(MTA_SMTP_BANNER); CASE(MTA_SMTP_EHLO); CASE(MTA_SMTP_HELO); CASE(MTA_SMTP_STARTTLS); diff --git a/smtpd/parser.c b/smtpd/parser.c index 5fc595d2..f7b255bb 100644 --- a/smtpd/parser.c +++ b/smtpd/parser.c @@ -60,16 +60,16 @@ static const struct token t_update[]; static const struct token t_update_table[]; static const struct token t_main[] = { - {KEYWORD, "schedule-id", NONE, t_schedule_id}, - {KEYWORD, "schedule-all", SCHEDULE_ALL, NULL}, - {KEYWORD, "show", NONE, t_show}, + {KEYWORD, "schedule-id", NONE, t_schedule_id}, + {KEYWORD, "schedule-all", SCHEDULE_ALL, NULL}, + {KEYWORD, "show", NONE, t_show}, {KEYWORD, "monitor", MONITOR, NULL}, - {KEYWORD, "pause", NONE, t_pause}, - {KEYWORD, "remove", NONE, t_remove}, - {KEYWORD, "resume", NONE, t_resume}, - {KEYWORD, "stop", SHUTDOWN, NULL}, - {KEYWORD, "log", NONE, t_log}, - {KEYWORD, "update", NONE, t_update}, + {KEYWORD, "pause", NONE, t_pause}, + {KEYWORD, "remove", NONE, t_remove}, + {KEYWORD, "resume", NONE, t_resume}, + {KEYWORD, "stop", SHUTDOWN, NULL}, + {KEYWORD, "log", NONE, t_log}, + {KEYWORD, "update", NONE, t_update}, {ENDTOKEN, "", NONE, NULL} }; @@ -105,30 +105,30 @@ static const struct token t_pause[] = { {KEYWORD, "mda", PAUSE_MDA, NULL}, {KEYWORD, "mta", PAUSE_MTA, NULL}, {KEYWORD, "smtp", PAUSE_SMTP, NULL}, - {ENDTOKEN, "", NONE, NULL} + {ENDTOKEN, "", NONE, NULL} }; static const struct token t_resume[] = { {KEYWORD, "mda", RESUME_MDA, NULL}, {KEYWORD, "mta", RESUME_MTA, NULL}, {KEYWORD, "smtp", RESUME_SMTP, NULL}, - {ENDTOKEN, "", NONE, NULL} + {ENDTOKEN, "", NONE, NULL} }; static const struct token t_log[] = { - {KEYWORD, "verbose", LOG_VERBOSE, NULL}, - {KEYWORD, "brief", LOG_BRIEF, NULL}, - {ENDTOKEN, "", NONE, NULL} + {KEYWORD, "verbose", LOG_VERBOSE, NULL}, + {KEYWORD, "brief", LOG_BRIEF, NULL}, + {ENDTOKEN, "", NONE, NULL} }; static const struct token t_update[] = { - {KEYWORD, "table", NONE, t_update_table}, - {ENDTOKEN, "", NONE, NULL} + {KEYWORD, "table", NONE, t_update_table}, + {ENDTOKEN, "", NONE, NULL} }; static const struct token t_update_table[] = { - {VARIABLE, "name", UPDATE_TABLE, NULL}, - {ENDTOKEN, "", NONE, NULL} + {VARIABLE, "name", UPDATE_TABLE, NULL}, + {ENDTOKEN, "", NONE, NULL} }; diff --git a/smtpd/queue.c b/smtpd/queue.c index fd8d74a7..14b0f183 100644 --- a/smtpd/queue.c +++ b/smtpd/queue.c @@ -229,7 +229,7 @@ queue_imsg(struct imsgev *iev, struct imsg *imsg) IMSG_SCHEDULER_ENVELOPES, imsg->hdr.peerid, 0, -1, &evp, sizeof evp); return; - } + } } if (iev->proc == PROC_MTA || iev->proc == PROC_MDA) { @@ -465,5 +465,5 @@ queue_timeout(int fd, short event, void *p) tv.tv_sec = 0; tv.tv_usec = 10; - evtimer_add(ev, &tv); + evtimer_add(ev, &tv); } diff --git a/smtpd/queue_backend.c b/smtpd/queue_backend.c index bf9b02b0..90e7e43a 100644 --- a/smtpd/queue_backend.c +++ b/smtpd/queue_backend.c @@ -216,7 +216,8 @@ queue_envelope_dump_buffer(struct envelope *ep, char *evpbuf, size_t evpbufsize) return (0); if (env->sc_queue_flags & QUEUE_COMPRESS) { - evplen = compress_buffer(evp, evplen, evpbufcom, sizeof evpbufcom); + evplen = compress_buffer(evp, evplen, evpbufcom, + sizeof evpbufcom); if (evplen == 0) return (0); evp = evpbufcom; @@ -238,7 +239,8 @@ queue_envelope_load_buffer(struct envelope *ep, char *evpbuf, size_t evpbufsize) evplen = evpbufsize; if (env->sc_queue_flags & QUEUE_COMPRESS) { - evplen = uncompress_buffer(evp, evplen, evpbufcom, sizeof evpbufcom); + evplen = uncompress_buffer(evp, evplen, evpbufcom, + sizeof evpbufcom); if (evplen == 0) return (0); evp = evpbufcom; @@ -281,16 +283,18 @@ queue_envelope_load(uint64_t evpid, struct envelope *ep) size_t evplen; ep->id = evpid; - evplen = env->sc_queue->envelope(QOP_LOAD, &ep->id, evpbuf, sizeof evpbuf); + evplen = env->sc_queue->envelope(QOP_LOAD, &ep->id, evpbuf, + sizeof evpbuf); if (evplen == 0) return (0); - + if (queue_envelope_load_buffer(ep, evpbuf, evplen)) { if ((e = envelope_validate(ep)) == NULL) { ep->id = evpid; return (1); } - log_debug("debug: invalid envelope %016" PRIx64 ": %s", ep->id, e); + log_debug("debug: invalid envelope %016" PRIx64 ": %s", + ep->id, e); } return (0); } @@ -325,7 +329,8 @@ queue_envelope_learn(struct envelope *ep) ep->id = evpid; return (1); } - log_debug("debug: invalid envelope %016" PRIx64 ": %s", ep->id, e); + log_debug("debug: invalid envelope %016" PRIx64 ": %s", + ep->id, e); } return (0); } @@ -335,7 +340,7 @@ queue_generate_msgid(void) { uint32_t msgid; - while((msgid = arc4random_uniform(0xffffffff)) == 0) + while ((msgid = arc4random_uniform(0xffffffff)) == 0) ; return msgid; @@ -347,7 +352,7 @@ queue_generate_evpid(uint32_t msgid) uint32_t rnd; uint64_t evpid; - while((rnd = arc4random_uniform(0xffffffff)) == 0) + while ((rnd = arc4random_uniform(0xffffffff)) == 0) ; evpid = msgid; diff --git a/smtpd/queue_fsqueue.c b/smtpd/queue_fsqueue.c index 0eccad4e..eaa34d74 100644 --- a/smtpd/queue_fsqueue.c +++ b/smtpd/queue_fsqueue.c @@ -72,9 +72,9 @@ static void fsqueue_qwalk_close(void *); #define PATH_EVPTMP PATH_INCOMING "/envelope.tmp" struct queue_backend queue_backend_fs = { - fsqueue_init, - fsqueue_message, - fsqueue_envelope, + fsqueue_init, + fsqueue_message, + fsqueue_envelope, }; static struct timespec startup; @@ -177,7 +177,8 @@ fsqueue_envelope_create(uint64_t *evpid, char *buf, size_t len) if (queued) fsqueue_envelope_path(*evpid, path, sizeof(path)); else - queue_envelope_incoming_path(*evpid, path, sizeof(path)); + queue_envelope_incoming_path(*evpid, path, + sizeof(path)); if (stat(path, &sb) == -1 && errno == ENOENT) goto found; @@ -268,7 +269,7 @@ fsqueue_message_create(uint32_t *msgid) again: *msgid = queue_generate_msgid(); - + /* prevent possible collision later when moving to Q_QUEUE */ fsqueue_message_path(*msgid, rootdir, sizeof(rootdir)); if (stat(rootdir, &sb) != -1 || errno != ENOENT) @@ -368,11 +369,13 @@ fsqueue_message_corrupt(uint32_t msgid) int retry = 0; fsqueue_message_path(msgid, rootdir, sizeof(rootdir)); - fsqueue_message_corrupt_path(msgid, corruptdir, sizeof(corruptdir)); + fsqueue_message_corrupt_path(msgid, corruptdir, + sizeof(corruptdir)); again: if (stat(corruptdir, &sb) != -1 || errno != ENOENT) { - fsqueue_message_corrupt_path(msgid, corruptdir, sizeof(corruptdir)); + fsqueue_message_corrupt_path(msgid, corruptdir, + sizeof(corruptdir)); snprintf(buf, sizeof(buf), ".%i", retry++); strlcat(corruptdir, buf, sizeof(corruptdir)); goto again; @@ -416,52 +419,40 @@ fsqueue_init(int server) static int fsqueue_message(enum queue_op qop, uint32_t *msgid) { - switch (qop) { - case QOP_CREATE: + switch (qop) { + case QOP_CREATE: return fsqueue_message_create(msgid); - - case QOP_DELETE: + case QOP_DELETE: return fsqueue_message_delete(*msgid); - - case QOP_COMMIT: + case QOP_COMMIT: return fsqueue_message_commit(*msgid); - - case QOP_FD_R: - return fsqueue_message_fd_r(*msgid); - + case QOP_FD_R: + return fsqueue_message_fd_r(*msgid); case QOP_CORRUPT: return fsqueue_message_corrupt(*msgid); - - default: + default: fatalx("queue_fsqueue_message: unsupported operation."); - } - + } return 0; } static int fsqueue_envelope(enum queue_op qop, uint64_t *evpid, char *buf, size_t len) { - switch (qop) { - case QOP_CREATE: + switch (qop) { + case QOP_CREATE: return fsqueue_envelope_create(evpid, buf, len); - - case QOP_DELETE: + case QOP_DELETE: return fsqueue_envelope_delete(*evpid); - - case QOP_LOAD: + case QOP_LOAD: return fsqueue_envelope_load(*evpid, buf, len); - - case QOP_UPDATE: + case QOP_UPDATE: return fsqueue_envelope_update(*evpid, buf, len); - - case QOP_LEARN: + case QOP_LEARN: return fsqueue_envelope_learn(evpid, buf, len); - - default: + default: fatalx("queue_fsqueue_envelope: unsupported operation."); - } - + } return 0; } @@ -502,12 +493,11 @@ static int fsqueue_qwalk(void *hdl, uint64_t *evpid) { struct qwalk *q = hdl; - FTSENT *e; + FTSENT *e; char *tmp; - while ((e = fts_read(q->fts)) != NULL) { - - switch(e->fts_info) { + while ((e = fts_read(q->fts)) != NULL) { + switch (e->fts_info) { case FTS_D: q->depth += 1; if (q->depth == 2 && e->fts_namelen != 2) { @@ -548,5 +538,5 @@ fsqueue_qwalk(void *hdl, uint64_t *evpid) } } - return (0); + return (0); } diff --git a/smtpd/queue_ram.c b/smtpd/queue_ram.c index 67044688..9f2e09c7 100644 --- a/smtpd/queue_ram.c +++ b/smtpd/queue_ram.c @@ -46,9 +46,9 @@ static int queue_ram_message(enum queue_op, uint32_t *); static int queue_ram_envelope(enum queue_op , uint64_t *, char *, size_t); struct queue_backend queue_backend_ram = { - queue_ram_init, - queue_ram_message, - queue_ram_envelope, + queue_ram_init, + queue_ram_message, + queue_ram_envelope, }; struct qr_envelope { @@ -78,13 +78,13 @@ queue_ram_message(enum queue_op qop, uint32_t *msgid) char path[MAXPATHLEN]; uint64_t evpid; struct qr_envelope *evp; - struct qr_message *msg; + struct qr_message *msg; int fd; struct stat sb; FILE *f; - switch (qop) { - case QOP_CREATE: + switch (qop) { + case QOP_CREATE: msg = xcalloc(1, sizeof *msg, "queue_ram_message"); tree_init(&msg->envelopes); do { @@ -98,7 +98,7 @@ queue_ram_message(enum queue_op qop, uint32_t *msgid) tree_xset(&messages, *msgid, msg); return (1); - case QOP_DELETE: + case QOP_DELETE: msg = tree_pop(&messages, *msgid); if (msg == NULL) return (0); @@ -111,7 +111,7 @@ queue_ram_message(enum queue_op qop, uint32_t *msgid) free(msg->buf); return (1); - case QOP_COMMIT: + case QOP_COMMIT: msg = tree_get(&messages, *msgid); if (msg == NULL) return (0); @@ -136,7 +136,7 @@ queue_ram_message(enum queue_op qop, uint32_t *msgid) stat_increment("queue.ram.message.size", msg->len); return (1); - case QOP_FD_R: + case QOP_FD_R: msg = tree_get(&messages, *msgid); if (msg == NULL) return (0); @@ -145,14 +145,14 @@ queue_ram_message(enum queue_op qop, uint32_t *msgid) return (-1); write(fd, msg->buf, msg->len); lseek(fd, 0, SEEK_SET); - return (fd); + return (fd); case QOP_CORRUPT: return (queue_ram_message(QOP_DELETE, msgid)); - default: + default: fatalx("queue_queue_ram_message: unsupported operation."); - } + } return (0); } @@ -174,8 +174,8 @@ queue_ram_envelope(enum queue_op qop, uint64_t *evpid, char *buf, size_t len) return (0); } - switch (qop) { - case QOP_CREATE: + switch (qop) { + case QOP_CREATE: do { *evpid = queue_generate_evpid(msgid); } while (tree_check(&msg->envelopes, *evpid)); @@ -186,7 +186,7 @@ queue_ram_envelope(enum queue_op qop, uint64_t *evpid, char *buf, size_t len) tree_xset(&msg->envelopes, *evpid, evp); return (1); - case QOP_DELETE: + case QOP_DELETE: evp = tree_pop(&msg->envelopes, *evpid); if (evp == NULL) return (0); @@ -202,7 +202,7 @@ queue_ram_envelope(enum queue_op qop, uint64_t *evpid, char *buf, size_t len) } return (1); - case QOP_LOAD: + case QOP_LOAD: evp = tree_get(&msg->envelopes, *evpid); if (evp == NULL) { log_debug("cannot find envelope %016" PRIx64, *evpid); @@ -215,7 +215,7 @@ queue_ram_envelope(enum queue_op qop, uint64_t *evpid, char *buf, size_t len) memmove(buf, evp->buf, evp->len); return (evp->len); - case QOP_UPDATE: + case QOP_UPDATE: evp = tree_get(&msg->envelopes, *evpid); if (evp == NULL) return (0); @@ -226,9 +226,9 @@ queue_ram_envelope(enum queue_op qop, uint64_t *evpid, char *buf, size_t len) evp->buf = xmemdup(buf, len, "queue_ram_envelope: update"); return (1); - default: + default: fatalx("queue_queue_ram_envelope: unsupported operation."); - } + } return (0); } diff --git a/smtpd/ruleset.c b/smtpd/ruleset.c index 5fcd53ef..dcc135aa 100644 --- a/smtpd/ruleset.c +++ b/smtpd/ruleset.c @@ -34,7 +34,8 @@ #include "log.h" -static int ruleset_check_source(struct table *, const struct sockaddr_storage *); +static int ruleset_check_source(struct table *, + const struct sockaddr_storage *); static int ruleset_match_mask(struct sockaddr_storage *, struct netaddr *); static int ruleset_inet4_match(struct sockaddr_in *, struct netaddr *); static int ruleset_inet6_match(struct sockaddr_in6 *, struct netaddr *); @@ -77,8 +78,10 @@ ruleset_match(const struct envelope *evp) fatal("failed to lookup table."); if (! strcmp(table->t_src, "static")) { - TAILQ_FOREACH(me, &table->t_contents, me_entry) { - if (hostname_match(maddr->domain, me->me_key)) + TAILQ_FOREACH(me, &table->t_contents, + me_entry) { + if (hostname_match(maddr->domain, + me->me_key)) return r; } } @@ -186,10 +189,10 @@ ruleset_inet4_match(struct sockaddr_in *ss, struct netaddr *ssmask) mask = htonl(mask); /* (addr & mask) == (net & mask) */ - if ((ss->sin_addr.s_addr & mask) == + if ((ss->sin_addr.s_addr & mask) == (((struct sockaddr_in *)ssmask)->sin_addr.s_addr & mask)) return 1; - + return 0; } @@ -200,17 +203,17 @@ ruleset_inet6_match(struct sockaddr_in6 *ss, struct netaddr *ssmask) struct in6_addr *inmask; struct in6_addr mask; int i; - + bzero(&mask, sizeof(mask)); for (i = 0; i < ssmask->bits / 8; i++) mask.s6_addr[i] = 0xff; i = ssmask->bits % 8; if (i) mask.s6_addr[ssmask->bits / 8] = 0xff00 >> i; - + in = &ss->sin6_addr; inmask = &((struct sockaddr_in6 *)&ssmask->ss)->sin6_addr; - + for (i = 0; i < 16; i++) { if ((in->s6_addr[i] & mask.s6_addr[i]) != (inmask->s6_addr[i] & mask.s6_addr[i])) diff --git a/smtpd/scheduler.c b/smtpd/scheduler.c index 70f543f4..e5c406c7 100644 --- a/smtpd/scheduler.c +++ b/smtpd/scheduler.c @@ -195,9 +195,11 @@ scheduler_imsg(struct imsgev *iev, struct imsg *imsg) case IMSG_SCHEDULER_SCHEDULE: id = *(uint64_t *)(imsg->data); if (id <= 0xffffffffL) - log_debug("debug: scheduler: scheduling msg:%08" PRIx64, id); + log_debug("debug: scheduler: " + "scheduling msg:%08" PRIx64, id); else - log_debug("debug: scheduler: scheduling evp:%016" PRIx64, id); + log_debug("debug: scheduler: " + "scheduling evp:%016" PRIx64, id); backend->schedule(id); scheduler_reset_events(); return; @@ -205,15 +207,18 @@ scheduler_imsg(struct imsgev *iev, struct imsg *imsg) case IMSG_SCHEDULER_REMOVE: id = *(uint64_t *)(imsg->data); if (id <= 0xffffffffL) - log_debug("debug: scheduler: removing msg:%08" PRIx64, id); + log_debug("debug: scheduler: " + "removing msg:%08" PRIx64, id); else - log_debug("debug: scheduler: removing evp:%016" PRIx64, id); + log_debug("debug: scheduler: " + "removing evp:%016" PRIx64, id); backend->remove(id); scheduler_reset_events(); return; } - errx(1, "scheduler_imsg: unexpected %s imsg", imsg_to_str(imsg->hdr.type)); + errx(1, "scheduler_imsg: unexpected %s imsg", + imsg_to_str(imsg->hdr.type)); } static void @@ -370,7 +375,7 @@ scheduler_timeout(int fd, short event, void *p) fatalx("scheduler_timeout: unknown batch type"); } - evtimer_add(&env->sc_ev, &tv); + evtimer_add(&env->sc_ev, &tv); } static void @@ -416,8 +421,8 @@ scheduler_process_bounce(struct scheduler_batch *batch) while ((e = batch->evpids)) { batch->evpids = e->next; - log_debug("debug: scheduler: evp:%016" PRIx64 " scheduled (bounce)", - e->id); + log_debug("debug: scheduler: evp:%016" PRIx64 + " scheduled (bounce)", e->id); imsg_compose_event(env->sc_ievs[PROC_QUEUE], IMSG_SMTP_ENQUEUE, 0, 0, -1, &e->id, sizeof e->id); free(e); @@ -433,8 +438,8 @@ scheduler_process_mda(struct scheduler_batch *batch) while ((e = batch->evpids)) { batch->evpids = e->next; - log_debug("debug: scheduler: evp:%016" PRIx64 " scheduled (mda)", - e->id); + log_debug("debug: scheduler: evp:%016" PRIx64 + " scheduled (mda)", e->id); imsg_compose_event(env->sc_ievs[PROC_QUEUE], IMSG_MDA_SESS_NEW, 0, 0, -1, &e->id, sizeof e->id); free(e); @@ -453,8 +458,8 @@ scheduler_process_mta(struct scheduler_batch *batch) while ((e = batch->evpids)) { batch->evpids = e->next; - log_debug("debug: scheduler: evp:%016" PRIx64 " scheduled (mta)", - e->id); + log_debug("debug: scheduler: evp:%016" PRIx64 + " scheduled (mta)", e->id); imsg_compose_event(env->sc_ievs[PROC_QUEUE], IMSG_BATCH_APPEND, 0, 0, -1, &e->id, sizeof e->id); free(e); diff --git a/smtpd/scheduler_backend.c b/smtpd/scheduler_backend.c index 6fccd4da..0e144d66 100644 --- a/smtpd/scheduler_backend.c +++ b/smtpd/scheduler_backend.c @@ -68,5 +68,5 @@ scheduler_compute_schedule(struct scheduler_info *sched) delay = ((delay * sched->retry) * sched->retry) / 2; - return (sched->creation + delay); + return (sched->creation + delay); } diff --git a/smtpd/scheduler_ramqueue.c b/smtpd/scheduler_ramqueue.c index 6b2514ff..3a05db17 100644 --- a/smtpd/scheduler_ramqueue.c +++ b/smtpd/scheduler_ramqueue.c @@ -127,7 +127,7 @@ struct scheduler_backend scheduler_backend_ramqueue = { static struct rq_queue ramqueue; static struct tree updates; -static time_t currtime; +static time_t currtime; extern int verbose; @@ -336,7 +336,7 @@ scheduler_ramqueue_batch(int typemask, struct scheduler_batch *ret) ret->evpids = NULL; ret->evpcount = 0; - while((evp = TAILQ_FIRST(q))) { + while ((evp = TAILQ_FIRST(q))) { TAILQ_REMOVE(q, evp, entry); @@ -426,7 +426,7 @@ scheduler_ramqueue_messages(uint32_t from, uint32_t *dst, size_t size) size_t n; void *i; - for(n = 0, i = NULL; n < size; n++) { + for (n = 0, i = NULL; n < size; n++) { if (tree_iterfrom(&ramqueue.messages, &i, from, &id, NULL) == 0) break; dst[n] = id; @@ -445,8 +445,8 @@ scheduler_ramqueue_envelopes(uint64_t from, struct evpstate *dst, size_t size) if ((msg = tree_get(&ramqueue.messages, evpid_to_msgid(from))) == NULL) return (0); - - for(n = 0, i = NULL; n < size; ) { + + for (n = 0, i = NULL; n < size; ) { if (tree_iterfrom(&msg->envelopes, &i, from, NULL, (void**)&evp) == 0) @@ -532,7 +532,7 @@ rq_queue_merge(struct rq_queue *rq, struct rq_queue *update) } /* need to re-link all envelopes before merging them */ i = NULL; - while((tree_iter(&message->envelopes, &i, &id, + while ((tree_iter(&message->envelopes, &i, &id, (void*)&envelope))) envelope->message = tomessage; tree_merge(&tomessage->envelopes, &message->envelopes); @@ -634,7 +634,7 @@ rq_envelope_remove(struct rq_queue *rq, struct rq_envelope *evp) if (rq->q_mtabatch == evp->message) rq->q_mtabatch = evp->message->q_next; else { - for(m = rq->q_mtabatch; m->q_next; m = m->q_next) + for (m = rq->q_mtabatch; m->q_next; m = m->q_next) if (m->q_next == evp->message) { m->q_next = evp->message->q_next; break; @@ -674,7 +674,8 @@ rq_envelope_to_text(struct rq_envelope *e) else if (e->type == D_MTA) strlcat(buf, "mta", sizeof buf); - snprintf(t, sizeof t, ",expire=%s", duration_to_text(e->expire - currtime)); + snprintf(t, sizeof t, ",expire=%s", + duration_to_text(e->expire - currtime)); strlcat(buf, t, sizeof buf); if (e->flags & RQ_ENVELOPE_PENDING) { @@ -713,10 +714,10 @@ rq_queue_dump(struct rq_queue *rq, const char * name) log_debug("debug: /--- ramqueue: %s", name); i = NULL; - while((tree_iter(&rq->messages, &i, &id, (void*)&message))) { + while ((tree_iter(&rq->messages, &i, &id, (void*)&message))) { log_debug("debug: | msg:%08" PRIx32, message->msgid); j = NULL; - while((tree_iter(&message->envelopes, &j, &id, + while ((tree_iter(&message->envelopes, &j, &id, (void*)&envelope))) log_debug("debug: | %s", rq_envelope_to_text(envelope)); diff --git a/smtpd/smtp.c b/smtpd/smtp.c index 73067afc..c501248b 100644 --- a/smtpd/smtp.c +++ b/smtpd/smtp.c @@ -131,7 +131,9 @@ smtp_imsg(struct imsgev *iev, struct imsg *imsg) case IMSG_QUEUE_TEMPFAIL: skey.s_id = ss->id; - /* do not use lookup since this is not a expected imsg -- eric@ */ + /* do not use lookup since this is not a expected imsg + * -- eric@ + */ s = SPLAY_FIND(sessiontree, &env->sc_sessions, &skey); if (s == NULL) fatalx("smtp: session is gone"); @@ -167,7 +169,8 @@ smtp_imsg(struct imsgev *iev, struct imsg *imsg) if (env->sc_flags & SMTPD_CONFIGURING) return; env->sc_flags |= SMTPD_CONFIGURING; - env->sc_listeners = calloc(1, sizeof *env->sc_listeners); + env->sc_listeners = calloc(1, + sizeof *env->sc_listeners); env->sc_ssl = calloc(1, sizeof *env->sc_ssl); if (env->sc_listeners == NULL || env->sc_ssl == NULL) fatal(NULL); @@ -183,8 +186,8 @@ smtp_imsg(struct imsgev *iev, struct imsg *imsg) *ssl = *(struct ssl *)imsg->data; ssl->ssl_cert = xstrdup((char *)imsg->data + sizeof *ssl, "smtp:ssl_cert"); - ssl->ssl_key = xstrdup((char *)imsg->data + sizeof *ssl + - ssl->ssl_cert_len, "smtp:ssl_key"); + ssl->ssl_key = xstrdup((char *)imsg->data + + sizeof *ssl + ssl->ssl_cert_len, "smtp:ssl_key"); if (ssl->ssl_dhparams_len) { ssl->ssl_dhparams = xstrdup((char *)imsg->data + sizeof *ssl + ssl->ssl_cert_len + @@ -463,21 +466,24 @@ smtp_accept(int fd, short event, void *p) socklen_t len; if ((s = smtp_new(l)) == NULL) { - log_warnx("warn: smtp: client limit hit, disabling incoming connections"); + log_warnx("warn: smtp: " + "client limit hit, disabling incoming connections"); goto pause; } len = sizeof(s->s_ss); - if ((s->s_io.sock = accept(fd, (struct sockaddr *)&s->s_ss, &len)) == -1) { + if ((s->s_io.sock = accept(fd, (struct sockaddr *)&s->s_ss, &len)) + == -1) { if (errno == ENFILE || errno == EMFILE) { - log_warnx("warn: smtp: fd exhaustion, disabling incoming connections"); + log_warnx("warn: smtp: " + "fd exhaustion, disabling incoming connections"); goto pause; } if (errno == EINTR || errno == ECONNABORTED) return; fatal("smtp_accept"); } - + io_set_timeout(&s->s_io, SMTPD_SESSION_TIMEOUT * 1000); io_set_write(&s->s_io); dns_query_ptr(&s->s_ss, s->s_id); @@ -537,7 +543,8 @@ smtp_destroy(struct session *session) return; if (env->sc_flags & SMTPD_SMTP_DISABLED) { - log_warnx("warn: smtp: fd exaustion over, re-enabling incoming connections"); + log_warnx("warn: smtp: " + "fd exaustion over, re-enabling incoming connections"); env->sc_flags &= ~SMTPD_SMTP_DISABLED; smtp_resume(); } diff --git a/smtpd/smtp_session.c b/smtpd/smtp_session.c index 39637ffc..983019af 100644 --- a/smtpd/smtp_session.c +++ b/smtpd/smtp_session.c @@ -214,7 +214,8 @@ session_rfc4954_auth_plain(struct session *s, char *arg) case S_AUTH_INIT: /* String is not NUL terminated, leave room. */ - if ((len = __b64_pton(arg, (unsigned char *)buf, sizeof(buf) - 1)) == -1) + if ((len = __b64_pton(arg, (unsigned char *)buf, + sizeof(buf) - 1)) == -1) goto abort; /* buf is a byte string, NUL terminate. */ buf[len] = '\0'; @@ -267,7 +268,8 @@ session_rfc4954_auth_login(struct session *s, char *arg) case S_AUTH_USERNAME: bzero(a->user, sizeof(a->user)); - if (__b64_pton(arg, (unsigned char *)a->user, sizeof(a->user) - 1) == -1) + if (__b64_pton(arg, (unsigned char *)a->user, + sizeof(a->user) - 1) == -1) goto abort; session_enter_state(s, S_AUTH_PASSWORD); @@ -276,7 +278,8 @@ session_rfc4954_auth_login(struct session *s, char *arg) case S_AUTH_PASSWORD: bzero(a->pass, sizeof(a->pass)); - if (__b64_pton(arg, (unsigned char *)a->pass, sizeof(a->pass) - 1) == -1) + if (__b64_pton(arg, (unsigned char *)a->pass, + sizeof(a->pass) - 1) == -1) goto abort; session_enter_state(s, S_AUTH_FINALIZE); @@ -287,7 +290,7 @@ session_rfc4954_auth_login(struct session *s, char *arg) bzero(a->pass, sizeof(a->pass)); return; - + default: fatal("session_rfc4954_auth_login: unknown state"); } @@ -312,8 +315,9 @@ session_rfc1652_mail_handler(struct session *s, char *args) *body++ = '\0'; if (strncasecmp(body, "AUTH=", 5) == 0) { - log_debug("debug: smtp: AUTH in MAIL FROM command, skipping"); - continue; + log_debug("debug: smtp: " + "AUTH in MAIL FROM command, skipping"); + continue; } if (strncasecmp(body, "BODY=", 5) == 0) { @@ -325,12 +329,13 @@ session_rfc1652_mail_handler(struct session *s, char *args) } else if (strncasecmp("body=8bitmime", body, 13) != 0) { - session_respond(s, "503 5.5.4 Unsupported option %s", body); + session_respond(s, + "503 5.5.4 Unsupported option %s", body); return 1; } } } - + return session_rfc5321_mail_handler(s, args); } @@ -519,7 +524,8 @@ session_rfc5321_data_handler(struct session *s, char *args) static int session_rfc5321_vrfy_handler(struct session *s, char *args) { - session_respond(s, "252 5.5.1 Cannot VRFY; try RCPT to attempt delivery"); + session_respond(s, + "252 5.5.1 Cannot VRFY; try RCPT to attempt delivery"); return 1; } @@ -527,7 +533,8 @@ session_rfc5321_vrfy_handler(struct session *s, char *args) static int session_rfc5321_expn_handler(struct session *s, char *args) { - session_respond(s, "502 5.5.2 Sorry, we do not allow this operation"); + session_respond(s, + "502 5.5.2 Sorry, we do not allow this operation"); return 1; } @@ -535,7 +542,8 @@ session_rfc5321_expn_handler(struct session *s, char *args) static int session_rfc5321_turn_handler(struct session *s, char *args) { - session_respond(s, "502 5.5.2 Sorry, we do not allow this operation"); + session_respond(s, + "502 5.5.2 Sorry, we do not allow this operation"); return 1; } @@ -637,9 +645,10 @@ session_io(struct io *io, int evt) char *line; size_t len; - log_trace(TRACE_IO, "smtp: %p: %s %s", s, io_strevent(evt), io_strio(io)); + log_trace(TRACE_IO, "smtp: %p: %s %s", s, io_strevent(evt), + io_strio(io)); - switch(evt) { + switch (evt) { case IO_TLSREADY: s->s_flags |= F_SECURE; @@ -685,7 +694,8 @@ session_io(struct io *io, int evt) /* pipelining not supported */ if (iobuf_len(&s->s_iobuf)) { - session_respond(s, "500 5.0.0 Pipelining not supported"); + session_respond(s, + "500 5.0.0 Pipelining not supported"); session_enter_state(s, S_QUIT); io_set_write(io); return; @@ -725,8 +735,8 @@ session_io(struct io *io, int evt) break; case IO_DISCONNECTED: - log_info("smtp-in: Received disconnect from session %016" PRIx64, - s->s_id); + log_info("smtp-in: " + "Received disconnect from session %016" PRIx64, s->s_id); session_destroy(s, "disconnected"); break; @@ -762,10 +772,11 @@ session_pickup(struct session *s, struct submit_status *ss) case S_CONNECTED: session_enter_state(s, S_INIT); - log_info("smtp-in: New session %016" PRIx64 " from host %s [%s]", - s->s_id, - s->s_hostname, - ss_to_text(&s->s_ss)); + log_info("smtp-in: " + "New session %016" PRIx64 " from host %s [%s]", + s->s_id, + s->s_hostname, + ss_to_text(&s->s_ss)); s->s_msg.session_id = s->s_id; s->s_msg.ss = s->s_ss; session_imsg(s, PROC_MFA, IMSG_MFA_CONNECT, 0, 0, -1, @@ -792,7 +803,7 @@ session_pickup(struct session *s, struct submit_status *ss) break; case S_AUTH_FINALIZE: - strnvis(user, s->s_auth.user, sizeof user, VIS_WHITE | VIS_SAFE); + strnvis(user, s->s_auth.user, sizeof user, VIS_WHITE|VIS_SAFE); if (s->s_flags & F_AUTHENTICATED) { session_respond(s, "235 Authentication succeeded"); log_info("smtp-in: Accepted authentication for user %s " @@ -827,7 +838,10 @@ session_pickup(struct session *s, struct submit_status *ss) session_respond(s, "250-8BITMIME"); session_respond(s, "250-ENHANCEDSTATUSCODES"); - /* XXX - we also want to support reading SIZE from MAIL parameters */ + /* XXX */ + /* we also want to support reading SIZE from MAIL + * parameters + */ session_respond(s, "250-SIZE %zu", env->sc_maxsize); if (ADVERTISE_TLS(s)) @@ -867,7 +881,8 @@ session_pickup(struct session *s, struct submit_status *ss) session_enter_state(s, S_MAIL); else session_enter_state(s, S_RCPT); - session_respond(s, "%d 5.0.0 Recipient rejected: %s@%s", ss->code, + session_respond(s, "%d 5.0.0 Recipient rejected: %s@%s", + ss->code, s->s_msg.rcpt.user, s->s_msg.rcpt.domain); break; @@ -914,7 +929,8 @@ session_pickup(struct session *s, struct submit_status *ss) break; case S_DONE: - session_respond(s, "250 2.0.0 %08x Message accepted for delivery", + session_respond(s, + "250 2.0.0 %08x Message accepted for delivery", evpid_to_msgid(s->s_msg.id)); log_info("smtp-in: Accepted message %08x on session %016" PRIx64 ": from=<%s%s%s>, size=%ld, nrcpts=%zu, proto=%s", diff --git a/smtpd/smtpctl.c b/smtpd/smtpctl.c index c1cc0716..3854190e 100644 --- a/smtpd/smtpctl.c +++ b/smtpd/smtpctl.c @@ -84,10 +84,11 @@ usage(void) extern char *__progname; if (sendmail) - fprintf(stderr, "usage: %s [-tv] [-f from] [-F name] to ..\n", + fprintf(stderr, "usage: %s [-tv] [-f from] [-F name] to ...\n", __progname); else - fprintf(stderr, "usage: %s command [argument ...]\n", __progname); + fprintf(stderr, "usage: %s command [argument ...]\n", + __progname); exit(1); } @@ -147,7 +148,7 @@ next_message(struct imsg *imsg) { ssize_t n; - while(1) { + while (1) { if ((n = imsg_get(ibuf, imsg)) == -1) errx(1, "imsg_get error"); if (n) @@ -290,7 +291,7 @@ main(int argc, char *argv[]) flush(); next_message(&imsg); - switch(action) { + switch (action) { case REMOVE: case SCHEDULE: case SHUTDOWN: @@ -340,14 +341,14 @@ action_show_queue_message(uint32_t msgid) found = 0; imsg_compose(ibuf, IMSG_SCHEDULER_ENVELOPES, 0, 0, -1, - &evpid, sizeof evpid); + &evpid, sizeof evpid); flush(); - while(1) { + while (1) { next_message(&imsg); if (imsg.hdr.type != IMSG_SCHEDULER_ENVELOPES) errx(1, "unexpected message %i", imsg.hdr.type); - + if (imsg.hdr.len == sizeof imsg.hdr) { imsg_free(&imsg); if (!found || evpid_to_msgid(++evpid) != msgid) @@ -373,7 +374,7 @@ action_show_queue(void) msgid = 0; now = time(NULL); - do { + do { imsg_compose(ibuf, IMSG_SCHEDULER_MESSAGES, 0, 0, -1, &msgid, sizeof msgid); flush(); @@ -467,7 +468,7 @@ show_stats_output(void) bzero(&kv, sizeof kv); - while(1) { + while (1) { imsg_compose(ibuf, IMSG_STATS_GET, 0, 0, -1, &kv, sizeof kv); flush(); next_message(&imsg); @@ -482,7 +483,7 @@ show_stats_output(void) if (strcmp(kvp->key, "uptime") == 0) { duration = time(NULL) - kvp->val.u.counter; - printf("uptime=%zd\n", (size_t)duration); + printf("uptime=%zd\n", (size_t)duration); printf("uptime.human=%s\n", duration_to_text(duration)); } @@ -527,7 +528,7 @@ show_queue(flags) if (chroot(PATH_SPOOL) == -1 || chdir(".") == -1) err(1, "%s", PATH_SPOOL); - while((r = queue_envelope_learn(&envelope)) != -1) + while ((r = queue_envelope_learn(&envelope)) != -1) if (r) show_queue_envelope(&envelope, flags); } @@ -564,7 +565,7 @@ show_queue_envelope(struct envelope *e, int online) if (e->flags) errx(1, "%016" PRIx64 ": unexpected flags 0x%04x", e->id, e->flags); - + if (status[0]) status[strlen(status) - 1] = '\0'; diff --git a/smtpd/smtpd.c b/smtpd/smtpd.c index 2d5e7c7a..05020be8 100644 --- a/smtpd/smtpd.c +++ b/smtpd/smtpd.c @@ -174,7 +174,8 @@ parent_imsg(struct imsgev *iev, struct imsg *imsg) c->cause == NULL) break; if (!n) { - log_debug("debug: smptd: kill request: proc not found"); + log_debug("debug: smptd: " + "kill request: proc not found"); return; } len = imsg->hdr.len - sizeof imsg->hdr; @@ -198,18 +199,24 @@ parent_imsg(struct imsgev *iev, struct imsg *imsg) log_verbose(*(int *)imsg->data); /* forward to other processes */ - imsg_compose_event(env->sc_ievs[PROC_LKA], IMSG_CTL_VERBOSE, - 0, 0, -1, imsg->data, sizeof(int)); - imsg_compose_event(env->sc_ievs[PROC_MDA], IMSG_CTL_VERBOSE, - 0, 0, -1, imsg->data, sizeof(int)); - imsg_compose_event(env->sc_ievs[PROC_MFA], IMSG_CTL_VERBOSE, - 0, 0, -1, imsg->data, sizeof(int)); - imsg_compose_event(env->sc_ievs[PROC_MTA], IMSG_CTL_VERBOSE, - 0, 0, -1, imsg->data, sizeof(int)); - imsg_compose_event(env->sc_ievs[PROC_QUEUE], IMSG_CTL_VERBOSE, - 0, 0, -1, imsg->data, sizeof(int)); - imsg_compose_event(env->sc_ievs[PROC_SMTP], IMSG_CTL_VERBOSE, - 0, 0, -1, imsg->data, sizeof(int)); + imsg_compose_event(env->sc_ievs[PROC_LKA], + IMSG_CTL_VERBOSE, 0, 0, -1, imsg->data, + sizeof(int)); + imsg_compose_event(env->sc_ievs[PROC_MDA], + IMSG_CTL_VERBOSE, 0, 0, -1, imsg->data, + sizeof(int)); + imsg_compose_event(env->sc_ievs[PROC_MFA], + IMSG_CTL_VERBOSE, 0, 0, -1, imsg->data, + sizeof(int)); + imsg_compose_event(env->sc_ievs[PROC_MTA], + IMSG_CTL_VERBOSE, 0, 0, -1, imsg->data, + sizeof(int)); + imsg_compose_event(env->sc_ievs[PROC_QUEUE], + IMSG_CTL_VERBOSE, 0, 0, -1, imsg->data, + sizeof(int)); + imsg_compose_event(env->sc_ievs[PROC_SMTP], + IMSG_CTL_VERBOSE, 0, 0, -1, imsg->data, + sizeof(int)); return; case IMSG_CTL_SHUTDOWN: @@ -296,7 +303,8 @@ parent_send_config_listeners(void) if ((l->fd = socket(l->ss.ss_family, SOCK_STREAM, 0)) == -1) fatal("smtpd: socket"); opt = 1; - if (setsockopt(l->fd, SOL_SOCKET, SO_REUSEADDR, &opt, sizeof(opt)) < 0) + if (setsockopt(l->fd, SOL_SOCKET, SO_REUSEADDR, &opt, + sizeof(opt)) < 0) fatal("smtpd: setsockopt"); if (bind(l->fd, (struct sockaddr *)&l->ss, l->ss.ss_len) == -1) fatal("smtpd: bind"); @@ -345,8 +353,8 @@ parent_send_config_ruleset(int proc) struct table *t; struct mapel *mapel; struct filter *f; - - log_debug("debug: parent_send_config_ruleset: reloading rules and tables"); + + log_debug("debug: parent_send_config_ruleset: reloading"); imsg_compose_event(env->sc_ievs[proc], IMSG_CONF_START, 0, 0, -1, NULL, 0); @@ -361,19 +369,22 @@ parent_send_config_ruleset(int proc) imsg_compose_event(env->sc_ievs[proc], IMSG_CONF_TABLE, 0, 0, -1, t, sizeof(*t)); TAILQ_FOREACH(mapel, &t->t_contents, me_entry) { - imsg_compose_event(env->sc_ievs[proc], IMSG_CONF_TABLE_CONTENT, - 0, 0, -1, mapel, sizeof(*mapel)); + imsg_compose_event(env->sc_ievs[proc], + IMSG_CONF_TABLE_CONTENT, 0, 0, -1, mapel, + sizeof(*mapel)); } } - + TAILQ_FOREACH(r, env->sc_rules, r_entry) { imsg_compose_event(env->sc_ievs[proc], IMSG_CONF_RULE, 0, 0, -1, r, sizeof(*r)); - imsg_compose_event(env->sc_ievs[proc], IMSG_CONF_RULE_SOURCE, - 0, 0, -1, &r->r_sources->t_name, sizeof(r->r_sources->t_name)); + imsg_compose_event(env->sc_ievs[proc], + IMSG_CONF_RULE_SOURCE, 0, 0, -1, + &r->r_sources->t_name, + sizeof(r->r_sources->t_name)); } } - + imsg_compose_event(env->sc_ievs[proc], IMSG_CONF_END, 0, 0, -1, NULL, 0); } @@ -448,8 +459,10 @@ parent_sig_handler(int sig, short event, void *p) case CHILD_ENQUEUE_OFFLINE: if (fail) - log_warnx("warn: smtpd: couldn't enqueue offline " - "message %s; smtpctl %s", child->path, cause); + log_warnx("warn: smtpd: " + "couldn't enqueue offline " + "message %s; smtpctl %s", + child->path, cause); else unlink(child->path); free(child->path); @@ -516,7 +529,9 @@ main(int argc, char *argv[]) else if (strstr(optarg, "stat=") == optarg) backend_stat = strchr(optarg, '=') + 1; else - log_warnx("warn: invalid backend specifier %s", optarg); + log_warnx("warn: " + "invalid backend specifier %s", + optarg); break; case 'd': debug = 2; @@ -524,7 +539,8 @@ main(int argc, char *argv[]) break; case 'D': if (cmdline_symset(optarg) < 0) - log_warnx("warn: could not parse macro definition %s", + log_warnx("warn: " + "could not parse macro definition %s", optarg); break; case 'n': @@ -558,7 +574,8 @@ main(int argc, char *argv[]) else if (!strcmp(optarg, "all")) verbose |= ~TRACE_VERBOSE; else - log_warnx("warn: unknown trace flag \"%s\"", optarg); + log_warnx("warn: unknown trace flag \"%s\"", + optarg); break; case 'P': if (!strcmp(optarg, "smtp")) @@ -613,12 +630,14 @@ main(int argc, char *argv[]) errx(1, "error in offline directory setup"); if (ckdir(PATH_SPOOL PATH_PURGE, 0700, env->sc_pw->pw_uid, 0, 1) == 0) errx(1, "error in purge directory setup"); - if (ckdir(PATH_SPOOL PATH_TEMPORARY, 0700, env->sc_pw->pw_uid, 0, 1) == 0) + if (ckdir(PATH_SPOOL PATH_TEMPORARY, 0700, env->sc_pw->pw_uid, 0, 1) + == 0) errx(1, "error in purge directory setup"); mvpurge(PATH_SPOOL PATH_INCOMING, PATH_SPOOL PATH_PURGE); - if (ckdir(PATH_SPOOL PATH_INCOMING, 0700, env->sc_pw->pw_uid, 0, 1) == 0) + if (ckdir(PATH_SPOOL PATH_INCOMING, 0700, env->sc_pw->pw_uid, 0, 1) + == 0) errx(1, "error in incoming directory setup"); env->sc_queue = queue_backend_lookup(backend_queue); @@ -633,7 +652,7 @@ main(int argc, char *argv[]) errx(1, "could not find stat backend \"%s\"", backend_stat); if (env->sc_queue_compress_algo) { - env->sc_compress = + env->sc_compress = compress_backend_lookup(env->sc_queue_compress_algo); if (env->sc_compress == NULL) errx(1, "could not find queue compress backend \"%s\"", @@ -789,7 +808,8 @@ void imsg_compose_event(struct imsgev *iev, uint16_t type, uint32_t peerid, pid_t pid, int fd, void *data, uint16_t datalen) { - if (imsg_compose(&iev->ibuf, type, peerid, pid, fd, data, datalen) == -1) + if (imsg_compose(&iev->ibuf, type, peerid, pid, fd, data, datalen) + == -1) err(1, "%s: imsg_compose(%s)", proc_to_str(smtpd_process), imsg_to_str(type)); @@ -817,7 +837,7 @@ purge_task(int fd, short ev, void *arg) log_warn("warn: purge_task: opendir"); if (n > 2) { - switch(purge_pid = fork()) { + switch (purge_pid = fork()) { case -1: log_warn("warn: purge_task: fork"); break; @@ -856,7 +876,8 @@ forkmda(struct imsgev *iev, uint32_t id, pid_t pid; int n, allout, pipefd[2]; - log_debug("debug: forkmda: to \"%s\" as %s", deliver->to, deliver->user); + log_debug("debug: forkmda: to \"%s\" as %s", + deliver->to, deliver->user); bzero(&u, sizeof (u)); ub = user_backend_lookup(USER_PWD); @@ -976,12 +997,13 @@ offline_scan(int fd, short ev, void *arg) errx(1, "smtpd: opendir"); } - while((d = readdir(dir)) != NULL) { + while ((d = readdir(dir)) != NULL) { if (d->d_type != DT_REG) continue; if (offline_add(d->d_name)) { - log_warnx("warn: smtpd: could not add offline message %s", d->d_name); + log_warnx("warn: smtpd: " + "could not add offline message %s", d->d_name); continue; } @@ -1049,7 +1071,6 @@ offline_enqueue(char *name) sb.st_uid); _exit(1); } - if (! S_ISREG(sb.st_mode)) { log_warnx("warn: smtpd: file %s (uid %d) not regular", @@ -1130,7 +1151,7 @@ offline_done(void) offline_running--; - while(offline_running < OFFLINE_QUEUEMAX) { + while (offline_running < OFFLINE_QUEUEMAX) { if ((q = TAILQ_FIRST(&offline_q)) == NULL) break; /* all done */ TAILQ_REMOVE(&offline_q, q, entry); @@ -1152,7 +1173,8 @@ parent_forward_open(char *username) if (! ub->getbyname(&u, username)) return -1; - if (! bsnprintf(pathname, sizeof (pathname), "%s/.forward", u.directory)) + if (! bsnprintf(pathname, sizeof (pathname), "%s/.forward", + u.directory)) fatal("smtpd: parent_forward_open: snprintf"); fd = open(pathname, O_RDONLY); @@ -1285,7 +1307,7 @@ imsg_to_str(int type) { static char buf[32]; - switch(type) { + switch (type) { CASE(IMSG_NONE); CASE(IMSG_CTL_OK); CASE(IMSG_CTL_FAIL); @@ -1370,7 +1392,7 @@ imsg_to_str(int type) CASE(IMSG_DIGEST); CASE(IMSG_STATS); - CASE(IMSG_STATS_GET); + CASE(IMSG_STATS_GET); default: snprintf(buf, sizeof(buf), "IMSG_??? (%d)", type); diff --git a/smtpd/smtpd.h b/smtpd/smtpd.h index 682a87cc..8db7395c 100644 --- a/smtpd/smtpd.h +++ b/smtpd/smtpd.h @@ -32,7 +32,7 @@ #define MAX_NAME_SIZE 64 #define MAX_HOPS_COUNT 100 -#define DEFAULT_MAX_BODY_SIZE (35*1024*1024) +#define DEFAULT_MAX_BODY_SIZE (35*1024*1024) #define MAX_TAG_SIZE 32 @@ -48,7 +48,7 @@ #define SMTPD_QUEUE_MAXINTERVAL (4 * 60 * 60) #define SMTPD_QUEUE_EXPIRY (4 * 24 * 60 * 60) #define SMTPD_USER "_smtpd" -#define SMTPD_FILTER_USER "_smtpmfa" +#define SMTPD_FILTER_USER "_smtpmfa" #define SMTPD_SOCKET "/var/run/smtpd.sock" #define SMTPD_BANNER "220 %s ESMTP OpenSMTPD" #define SMTPD_SESSION_TIMEOUT 300 @@ -76,12 +76,12 @@ /* max len of any smtp line */ #define SMTP_LINE_MAX MAX_LINE_SIZE -#define F_STARTTLS 0x01 -#define F_SMTPS 0x02 -#define F_AUTH 0x04 -#define F_SSL (F_SMTPS|F_STARTTLS) -#define F_STARTTLS_REQUIRE 0x08 -#define F_AUTH_REQUIRE 0x10 +#define F_STARTTLS 0x01 +#define F_SMTPS 0x02 +#define F_AUTH 0x04 +#define F_SSL (F_SMTPS|F_STARTTLS) +#define F_STARTTLS_REQUIRE 0x08 +#define F_AUTH_REQUIRE 0x10 #define F_BACKUP 0x20 /* XXX - MUST BE SYNC-ED WITH ROUTE_BACKUP */ @@ -114,7 +114,7 @@ struct userinfo { }; struct user_backend { - int (*getbyname)(struct userinfo *, const char *); + int(*getbyname)(struct userinfo *, const char *); }; @@ -158,10 +158,10 @@ enum imsg_type { IMSG_MDA_DONE, IMSG_MFA_CONNECT, - IMSG_MFA_HELO, - IMSG_MFA_MAIL, - IMSG_MFA_RCPT, - IMSG_MFA_DATALINE, + IMSG_MFA_HELO, + IMSG_MFA_MAIL, + IMSG_MFA_RCPT, + IMSG_MFA_DATALINE, IMSG_MFA_QUIT, IMSG_MFA_CLOSE, IMSG_MFA_RSET, @@ -271,7 +271,7 @@ enum table_service { K_CREDENTIALS = 0x04, K_NETADDR = 0x08, K_USERINFO = 0x10, -}; +}; struct mapel { TAILQ_ENTRY(mapel) me_entry; @@ -331,17 +331,17 @@ enum decision { }; struct rule { - TAILQ_ENTRY(rule) r_entry; - enum decision r_decision; - char r_tag[MAX_TAG_SIZE]; - int r_accept; - struct table *r_sources; - struct cond r_condition; - enum action_type r_action; + TAILQ_ENTRY(rule) r_entry; + enum decision r_decision; + char r_tag[MAX_TAG_SIZE]; + int r_accept; + struct table *r_sources; + struct cond r_condition; + enum action_type r_action; union rule_dest { - char buffer[EXPAND_BUFFER]; - struct relayhost relayhost; - } r_value; + char buffer[EXPAND_BUFFER]; + struct relayhost relayhost; + } r_value; struct mailaddr *r_as; objid_t r_atable; @@ -395,23 +395,23 @@ enum expand_type { }; struct expandnode { - RB_ENTRY(expandnode) entry; - TAILQ_ENTRY(expandnode) tq_entry; - enum expand_type type; - int sameuser; - int alias; - struct rule *rule; - struct expandnode *parent; - unsigned int depth; + RB_ENTRY(expandnode) entry; + TAILQ_ENTRY(expandnode) tq_entry; + enum expand_type type; + int sameuser; + int alias; + struct rule *rule; + struct expandnode *parent; + unsigned int depth; union { /* * user field handles both expansion user and system user * so we MUST make it large enough to fit a mailaddr user */ - char user[MAX_LOCALPART_SIZE]; - char buffer[EXPAND_BUFFER]; - struct mailaddr mailaddr; - } u; + char user[MAX_LOCALPART_SIZE]; + char buffer[EXPAND_BUFFER]; + struct mailaddr mailaddr; + } u; }; struct expand { @@ -587,39 +587,38 @@ struct session { struct smtpd { - char sc_conffile[MAXPATHLEN]; - size_t sc_maxsize; - -#define SMTPD_OPT_VERBOSE 0x00000001 -#define SMTPD_OPT_NOACTION 0x00000002 - uint32_t sc_opts; -#define SMTPD_CONFIGURING 0x00000001 -#define SMTPD_EXITING 0x00000002 -#define SMTPD_MDA_PAUSED 0x00000004 -#define SMTPD_MTA_PAUSED 0x00000008 -#define SMTPD_SMTP_PAUSED 0x00000010 -#define SMTPD_MDA_BUSY 0x00000020 -#define SMTPD_MTA_BUSY 0x00000040 -#define SMTPD_BOUNCE_BUSY 0x00000080 -#define SMTPD_SMTP_DISABLED 0x00000100 - uint32_t sc_flags; - uint32_t sc_queue_flags; -#define QUEUE_COMPRESS 0x00000001 - char *sc_queue_compress_algo; - int sc_qexpire; - struct event sc_ev; - int *sc_pipes[PROC_COUNT] - [PROC_COUNT]; - struct imsgev *sc_ievs[PROC_COUNT]; - int sc_instances[PROC_COUNT]; - int sc_instance; - char *sc_title[PROC_COUNT]; - struct passwd *sc_pw; - char sc_hostname[MAXHOSTNAMELEN]; - struct queue_backend *sc_queue; - struct compress_backend *sc_compress; - struct scheduler_backend *sc_scheduler; - struct stat_backend *sc_stat; + char sc_conffile[MAXPATHLEN]; + size_t sc_maxsize; + +#define SMTPD_OPT_VERBOSE 0x00000001 +#define SMTPD_OPT_NOACTION 0x00000002 + uint32_t sc_opts; +#define SMTPD_CONFIGURING 0x00000001 +#define SMTPD_EXITING 0x00000002 +#define SMTPD_MDA_PAUSED 0x00000004 +#define SMTPD_MTA_PAUSED 0x00000008 +#define SMTPD_SMTP_PAUSED 0x00000010 +#define SMTPD_MDA_BUSY 0x00000020 +#define SMTPD_MTA_BUSY 0x00000040 +#define SMTPD_BOUNCE_BUSY 0x00000080 +#define SMTPD_SMTP_DISABLED 0x00000100 + uint32_t sc_flags; + uint32_t sc_queue_flags; +#define QUEUE_COMPRESS 0x00000001 + char *sc_queue_compress_algo; + int sc_qexpire; + struct event sc_ev; + int *sc_pipes[PROC_COUNT][PROC_COUNT]; + struct imsgev *sc_ievs[PROC_COUNT]; + int sc_instances[PROC_COUNT]; + int sc_instance; + char *sc_title[PROC_COUNT]; + struct passwd *sc_pw; + char sc_hostname[MAXHOSTNAMELEN]; + struct queue_backend *sc_queue; + struct compress_backend *sc_compress; + struct scheduler_backend *sc_scheduler; + struct stat_backend *sc_stat; time_t sc_uptime; @@ -806,16 +805,16 @@ enum queue_op { }; struct queue_backend { - int (*init)(int); - int (*message)(enum queue_op, uint32_t *); - int (*envelope)(enum queue_op, uint64_t *, char *, size_t); + int(*init)(int); + int(*message)(enum queue_op, uint32_t *); + int(*envelope)(enum queue_op, uint64_t *, char *, size_t); }; struct compress_backend { - int (*compress_file)(FILE *, FILE *); - int (*uncompress_file)(FILE *, FILE *); - size_t (*compress_buffer)(char *, size_t, char *, size_t); - size_t (*uncompress_buffer)(char *, size_t, char *, size_t); + int(*compress_file)(FILE *, FILE *); + int(*uncompress_file)(FILE *, FILE *); + size_t(*compress_buffer)(char *, size_t, char *, size_t); + size_t(*uncompress_buffer)(char *, size_t, char *, size_t); }; /* auth structures */ @@ -825,14 +824,14 @@ enum auth_type { }; struct auth_backend { - int (*authenticate)(char *, char *); + int(*authenticate)(char *, char *); }; /* delivery_backend */ struct delivery_backend { - int allow_root; - void (*open)(struct deliver *); + int allow_root; + void(*open)(struct deliver *); }; struct evpstate { @@ -1120,7 +1119,7 @@ void session_io(struct io *, int); void session_pickup(struct session *, struct submit_status *); void session_destroy(struct session *, const char *); void session_respond(struct session *, char *, ...) - __attribute__ ((format (printf, 2, 3))); + __attribute__((format (printf, 2, 3))); SPLAY_PROTOTYPE(sessiontree, session, s_nodes, session_cmp); @@ -1167,7 +1166,7 @@ void table_close(struct table *, void *); int table_config_parser(struct table *, const char *); int table_lookup(objid_t, const char *, enum table_service, void **); int table_compare(objid_t, const char *, enum table_service, - int (*)(const char *, const char *)); + int(*)(const char *, const char *)); struct table *table_find(objid_t); struct table *table_findbyname(const char *); struct table *table_create(const char *, const char *, const char *); @@ -1209,7 +1208,7 @@ struct arglist { void addargs(arglist *, char *, ...) __attribute__((format(printf, 2, 3))); int bsnprintf(char *, size_t, const char *, ...) - __attribute__ ((format (printf, 3, 4))); + __attribute__((format (printf, 3, 4))); int mkdirs(char *, mode_t); int safe_fclose(FILE *); int hostname_match(const char *, const char *); diff --git a/smtpd/ssl.c b/smtpd/ssl.c index 3ecf57b4..e88cd923 100644 --- a/smtpd/ssl.c +++ b/smtpd/ssl.c @@ -142,7 +142,8 @@ ssl_load_certfile(const char *name, uint8_t flags) if (strlcpy(key.ssl_name, name, sizeof(key.ssl_name)) >= sizeof(key.ssl_name)) { - log_warnx("warn: ssl_load_certfile: certificate name truncated"); + log_warnx("warn: ssl_load_certfile: " + "certificate name truncated"); return -1; } @@ -396,11 +397,11 @@ ssl_smtp_init(void *ssl_ctx) log_debug("debug: session_start_ssl: switching to SSL"); if ((ssl = SSL_new(ssl_ctx)) == NULL) - goto err; - if (!SSL_set_ssl_method(ssl, SSLv23_server_method())) - goto err; + goto err; + if (!SSL_set_ssl_method(ssl, SSLv23_server_method())) + goto err; - return (void*)(ssl); + return (void*)(ssl); err: if (ssl != NULL) @@ -444,24 +445,24 @@ get_dh1024(void) 0x02 }; - if ((dh = DH_new()) == NULL) + if ((dh = DH_new()) == NULL) return NULL; - dh->p = BN_bin2bn(dh1024_p, sizeof(dh1024_p), NULL); - dh->g = BN_bin2bn(dh1024_g, sizeof(dh1024_g), NULL); - if (dh->p == NULL || dh->g == NULL) { + dh->p = BN_bin2bn(dh1024_p, sizeof(dh1024_p), NULL); + dh->g = BN_bin2bn(dh1024_g, sizeof(dh1024_g), NULL); + if (dh->p == NULL || dh->g == NULL) { DH_free(dh); return NULL; } - return dh; + return dh; } DH * get_dh_from_memory(char *params, size_t len) { BIO *mem; - DH *dh; + DH *dh; mem = BIO_new_mem_buf(params, len); if (mem == NULL) @@ -469,7 +470,7 @@ get_dh_from_memory(char *params, size_t len) dh = PEM_read_bio_DHparams(mem, NULL, NULL, NULL); if (dh == NULL) goto err; - if (dh->p == NULL || dh->g == NULL) + if (dh->p == NULL || dh->g == NULL) goto err; return dh; diff --git a/smtpd/ssl_privsep.c b/smtpd/ssl_privsep.c index d7601054..20c02cfe 100644 --- a/smtpd/ssl_privsep.c +++ b/smtpd/ssl_privsep.c @@ -83,15 +83,15 @@ int ssl_by_mem_ctrl(X509_LOOKUP *, int, const char *, long, char **); X509_LOOKUP_METHOD x509_mem_lookup = { "Load cert from memory", - NULL, /* new */ - NULL, /* free */ - NULL, /* init */ - NULL, /* shutdown */ - ssl_by_mem_ctrl, /* ctrl */ - NULL, /* get_by_subject */ - NULL, /* get_by_issuer_serial */ - NULL, /* get_by_fingerprint */ - NULL, /* get_by_alias */ + NULL, /* new */ + NULL, /* free */ + NULL, /* init */ + NULL, /* shutdown */ + ssl_by_mem_ctrl, /* ctrl */ + NULL, /* get_by_subject */ + NULL, /* get_by_issuer_serial */ + NULL, /* get_by_fingerprint */ + NULL, /* get_by_alias */ }; #define X509_L_ADD_MEM 3 @@ -131,18 +131,18 @@ ssl_ctx_load_verify_memory(SSL_CTX *ctx, char *buf, off_t len) { X509_LOOKUP *lu; struct iovec iov; - + if ((lu = X509_STORE_add_lookup(ctx->cert_store, &x509_mem_lookup)) == NULL) return (0); - + iov.iov_base = buf; iov.iov_len = len; - + if (!ssl_by_mem_ctrl(lu, X509_L_ADD_MEM, (const char *)&iov, X509_FILETYPE_PEM, NULL)) return (0); - + return (1); } @@ -155,35 +155,35 @@ ssl_by_mem_ctrl(X509_LOOKUP *lu, int cmd, const char *buf, X509_INFO *itmp; BIO *in = NULL; int i, count = 0; - + iov = (const struct iovec *)buf; - + if (type != X509_FILETYPE_PEM) goto done; - + if ((in = BIO_new_mem_buf(iov->iov_base, iov->iov_len)) == NULL) goto done; - + if ((inf = PEM_X509_INFO_read_bio(in, NULL, NULL, NULL)) == NULL) goto done; - - for(i = 0; i < sk_X509_INFO_num(inf); i++) { + + for (i = 0; i < sk_X509_INFO_num(inf); i++) { itmp = sk_X509_INFO_value(inf, i); - if(itmp->x509) { + if (itmp->x509) { X509_STORE_add_cert(lu->store_ctx, itmp->x509); count++; } - if(itmp->crl) { + if (itmp->crl) { X509_STORE_add_crl(lu->store_ctx, itmp->crl); count++; } } sk_X509_INFO_pop_free(inf, X509_INFO_free); - + done: if (!count) X509err(X509_F_X509_LOAD_CERT_CRL_FILE,ERR_R_PEM_LIB); - + if (in != NULL) BIO_free(in); return (count); diff --git a/smtpd/stat_backend.c b/smtpd/stat_backend.c index 4aaa5aff..8a935d70 100644 --- a/smtpd/stat_backend.c +++ b/smtpd/stat_backend.c @@ -55,7 +55,8 @@ stat_increment(const char *name, size_t count) s = buf + sizeof *value; if ((len = strlcpy(s, name, STAT_KEY_SIZE)) >= STAT_KEY_SIZE) { len = STAT_KEY_SIZE - 1; - log_warn("warn: stat_increment: truncated key '%s', ignored", name); + log_warn("warn: stat_increment: truncated key '%s', ignored", + name); } imsg_compose_event(env->sc_ievs[PROC_CONTROL], @@ -74,7 +75,8 @@ stat_decrement(const char *name, size_t count) s = buf + sizeof *value; if ((len = strlcpy(s, name, STAT_KEY_SIZE)) >= STAT_KEY_SIZE) { len = STAT_KEY_SIZE - 1; - log_warn("warn: stat_increment: truncated key '%s', ignored", name); + log_warn("warn: stat_increment: truncated key '%s', ignored", + name); } imsg_compose_event(env->sc_ievs[PROC_CONTROL], @@ -91,7 +93,8 @@ stat_set(const char *name, const struct stat_value *value) s = buf + sizeof *value; if ((len = strlcpy(s, name, STAT_KEY_SIZE)) >= STAT_KEY_SIZE) { len = STAT_KEY_SIZE - 1; - log_warn("warn: stat_increment: truncated key '%s', ignored", name); + log_warn("warn: stat_increment: truncated key '%s', ignored", + name); } imsg_compose_event(env->sc_ievs[PROC_CONTROL], diff --git a/smtpd/table.c b/smtpd/table.c index 5f01a147..902076d3 100644 --- a/smtpd/table.c +++ b/smtpd/table.c @@ -108,7 +108,7 @@ table_lookup(objid_t id, const char *key, enum table_service kind, void **retp) int table_compare(objid_t id, const char *key, enum table_service kind, - int (*func)(const char *, const char *)) + int(*func)(const char *, const char *)) { void *hdl = NULL; struct table *table; @@ -134,7 +134,7 @@ table_compare(objid_t id, const char *key, enum table_service kind, backend->close(hdl); errno = 0; - return ret; + return ret; } struct table * @@ -154,12 +154,14 @@ table_create(const char *backend, const char *name, const char *config) t->t_backend = tb; if (strlcpy(t->t_src, backend, sizeof t->t_src) >= sizeof t->t_src) - errx(1, "table_create: table backend \"%s\" too large", t->t_src); + errx(1, "table_create: table backend \"%s\" too large", + t->t_src); if (config && *config) { if (strlcpy(t->t_config, config, sizeof t->t_config) >= sizeof t->t_config) - errx(1, "table_create: table config \"%s\" too large", t->t_config); + errx(1, "table_create: table config \"%s\" too large", + t->t_config); } if (strcmp(t->t_src, "static") != 0) @@ -228,7 +230,7 @@ void table_delete(struct table *t, const char *key) { struct mapel *me; - + if (strcmp(t->t_src, "static") != 0) errx(1, "map_add: cannot delete from map"); @@ -283,7 +285,7 @@ table_config_parser(struct table *t, const char *config) size_t ret = 0; if (strcmp("static", t->t_src) != 0) { - log_warn("table_config_parser: configuration table must be static"); + log_warn("table_config_parser: config table must be static"); return 0; } @@ -301,12 +303,12 @@ table_config_parser(struct table *t, const char *config) lbuf[flen] = '\0'; buf = lbuf; } - + keyp = buf; while (isspace((int)*keyp)) ++keyp; if (*keyp == '\0' || *keyp == '#') - continue; + continue; valp = keyp; strsep(&valp, " \t:"); if (valp) { diff --git a/smtpd/table_db.c b/smtpd/table_db.c index 44822401..e53298f1 100644 --- a/smtpd/table_db.c +++ b/smtpd/table_db.c @@ -42,7 +42,7 @@ static int table_db_update(struct table *, const char *); static void *table_db_open(struct table *); static int table_db_lookup(void *, const char *, enum table_service, void **); static int table_db_compare(void *, const char *, enum table_service, - int (*)(const char *, const char *)); + int(*)(const char *, const char *)); static void table_db_close(void *); static char *table_db_get_entry(void *, const char *, size_t *); @@ -128,7 +128,7 @@ table_db_lookup(void *hdl, const char *key, enum table_service kind, void **retp static int table_db_compare(void *hdl, const char *key, enum table_service kind, - int (*func)(const char *, const char *)) + int(*func)(const char *, const char *)) { int ret = 0; DB *db = hdl; @@ -217,8 +217,8 @@ err: static int table_db_alias(const char *key, char *line, size_t len, void **retp) { - char *subrcpt; - char *endp; + char *subrcpt; + char *endp; struct table_alias *table_alias = NULL; struct expandnode xn; @@ -255,8 +255,8 @@ error: static int table_db_virtual(const char *key, char *line, size_t len, void **retp) { - char *subrcpt; - char *endp; + char *subrcpt; + char *endp; struct table_virtual *table_virtual = NULL; struct expandnode xn; diff --git a/smtpd/table_static.c b/smtpd/table_static.c index 26f80c22..92445c7f 100644 --- a/smtpd/table_static.c +++ b/smtpd/table_static.c @@ -41,7 +41,7 @@ static int table_static_update(struct table *, const char *); static void *table_static_open(struct table *); static int table_static_lookup(void *, const char *, enum table_service, void **); static int table_static_compare(void *, const char *, enum table_service, - int (*)(const char *, const char *)); + int(*)(const char *, const char *)); static void table_static_close(void *); static int table_static_credentials(const char *, char *, size_t, void **); @@ -66,7 +66,7 @@ table_static_config(struct table *table, const char *config) if (config == NULL) return 1; - return table_config_parser(table, config); + return table_config_parser(table, config); } static int @@ -174,7 +174,7 @@ table_static_lookup(void *hdl, const char *key, enum table_service kind, void ** static int table_static_compare(void *hdl, const char *key, enum table_service kind, - int (*func)(const char *, const char *)) + int(*func)(const char *, const char *)) { struct table *m = hdl; struct mapel *me = NULL; @@ -235,7 +235,7 @@ static int table_static_alias(const char *key, char *line, size_t len, void **retp) { char *subrcpt; - char *endp; + char *endp; struct table_alias *table_alias = NULL; struct expandnode xn; @@ -273,7 +273,7 @@ static int table_static_virtual(const char *key, char *line, size_t len, void **retp) { char *subrcpt; - char *endp; + char *endp; struct table_virtual *table_virtual = NULL; struct expandnode xn; @@ -320,8 +320,9 @@ table_static_netaddr(const char *key, char *line, size_t len, void **retp) { struct table_netaddr *table_netaddr = NULL; - table_netaddr = xcalloc(1, sizeof *table_netaddr, "table_static_netaddr"); - + table_netaddr = xcalloc(1, sizeof *table_netaddr, + "table_static_netaddr"); + if (! text_to_netaddr(&table_netaddr->netaddr, line)) goto error; diff --git a/smtpd/user.c b/smtpd/user.c new file mode 100644 index 00000000..12aad9d6 --- /dev/null +++ b/smtpd/user.c @@ -0,0 +1,46 @@ +/* $OpenBSD: user.c,v 1.1 2011/12/13 22:04:35 eric Exp $ */ + +/* + * Copyright (c) 2011 Gilles Chehade <gilles@openbsd.org> + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +#include <sys/types.h> +#include <sys/queue.h> +#include <sys/tree.h> +#include <sys/param.h> +#include <sys/socket.h> + +#include <event.h> +#include <imsg.h> +#include <stdio.h> + +#include "smtpd.h" +#include "log.h" + +extern struct user_backend user_backend_pwd; + +struct user_backend * +user_backend_lookup(enum user_type type) +{ + switch (type) { + case USER_PWD: + return &user_backend_pwd; + + default: + fatalx("invalid user backend"); + } + + return (NULL); +} diff --git a/smtpd/user_pwd.c b/smtpd/user_pwd.c new file mode 100644 index 00000000..341a897b --- /dev/null +++ b/smtpd/user_pwd.c @@ -0,0 +1,76 @@ +/* $OpenBSD: user_pwd.c,v 1.3 2012/09/25 17:38:55 eric Exp $ */ + +/* + * Copyright (c) 2011 Gilles Chehade <gilles@openbsd.org> + * + * Permission to use, copy, modify, and distribute this software for any + * purpose with or without fee is hereby granted, provided that the above + * copyright notice and this permission notice appear in all copies. + * + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + */ + +#include <sys/types.h> +#include <sys/queue.h> +#include <sys/tree.h> +#include <sys/param.h> +#include <sys/socket.h> +#include <sys/stat.h> + +#include <event.h> +#include <imsg.h> +#include <libgen.h> +#include <pwd.h> +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <unistd.h> + +#include "smtpd.h" +#include "log.h" + +static int user_getpw_ret(struct userinfo *, struct passwd *); /* helper */ +static int user_getpwnam(struct userinfo *, const char *); + +struct user_backend user_backend_pwd = { + user_getpwnam +}; + +static int +user_getpw_ret(struct userinfo *u, struct passwd *pw) +{ + if (strlcpy(u->username, pw->pw_name, sizeof (u->username)) + >= sizeof (u->username)) + return 0; + + if (strlcpy(u->password, pw->pw_passwd, sizeof (u->password)) + >= sizeof (u->password)) + return 0; + + if (strlcpy(u->directory, pw->pw_dir, sizeof (u->directory)) + >= sizeof (u->directory)) + return 0; + + u->uid = pw->pw_uid; + u->gid = pw->pw_gid; + + return 1; +} + +static int +user_getpwnam(struct userinfo *u, const char *username) +{ + struct passwd *pw; + + pw = getpwnam(username); + if (pw == NULL) + return 0; + + return user_getpw_ret(u, pw); +} diff --git a/smtpd/util.c b/smtpd/util.c index a4670aac..f4528286 100644 --- a/smtpd/util.c +++ b/smtpd/util.c @@ -349,7 +349,8 @@ mktmpfile(void) char path[MAXPATHLEN]; int fd; - if (! bsnprintf(path, sizeof(path), "%s/smtpd.XXXXXXXXXX", PATH_TEMPORARY)) + if (! bsnprintf(path, sizeof(path), "%s/smtpd.XXXXXXXXXX", + PATH_TEMPORARY)) err(1, "snprintf"); if ((fd = mkstemp(path)) == -1) @@ -413,20 +414,20 @@ valid_localpart(const char *s) */ #define IS_ATEXT(c) (isalnum((int)(c)) || strchr("%+-=_", (c))) nextatom: - if (! IS_ATEXT(*s) || *s == '\0') - return 0; - while (*(++s) != '\0') { - if (*s == '.') - break; - if (IS_ATEXT(*s)) - continue; - return 0; - } - if (*s == '.') { - s++; - goto nextatom; - } - return 1; + if (! IS_ATEXT(*s) || *s == '\0') + return 0; + while (*(++s) != '\0') { + if (*s == '.') + break; + if (IS_ATEXT(*s)) + continue; + return 0; + } + if (*s == '.') { + s++; + goto nextatom; + } + return 1; } int @@ -454,22 +455,22 @@ valid_domainpart(const char *s) } nextsub: - if (!isalnum((int)*s)) - return 0; - while (*(++s) != '\0') { - if (*s == '.') - break; - if (isalnum((int)*s) || *s == '-') - continue; - return 0; - } - if (s[-1] == '-') - return 0; - if (*s == '.') { + if (!isalnum((int)*s)) + return 0; + while (*(++s) != '\0') { + if (*s == '.') + break; + if (isalnum((int)*s) || *s == '-') + continue; + return 0; + } + if (s[-1] == '-') + return 0; + if (*s == '.') { s++; - goto nextsub; + goto nextsub; } - return 1; + return 1; } int @@ -515,25 +516,23 @@ ss_to_text(const struct sockaddr_storage *ss) buf[0] = '\0'; p = buf; - if (ss->ss_family == AF_LOCAL) { + if (ss->ss_family == AF_LOCAL) strlcpy(buf, "local", sizeof buf); - } else if (ss->ss_family == AF_INET) { in_addr_t addr; - + addr = ((const struct sockaddr_in *)ss)->sin_addr.s_addr; - addr = ntohl(addr); - bsnprintf(p, NI_MAXHOST, - "%d.%d.%d.%d", - (addr >> 24) & 0xff, - (addr >> 16) & 0xff, - (addr >> 8) & 0xff, - addr & 0xff); + addr = ntohl(addr); + bsnprintf(p, NI_MAXHOST, "%d.%d.%d.%d", + (addr >> 24) & 0xff, (addr >> 16) & 0xff, + (addr >> 8) & 0xff, + addr & 0xff); } else if (ss->ss_family == AF_INET6) { - const struct sockaddr_in6 *in6 = (const struct sockaddr_in6 *)ss; + const struct sockaddr_in6 *in6; const struct in6_addr *in6_addr; + in6 = (const struct sockaddr_in6 *)ss; strlcpy(buf, "IPv6:", sizeof(buf)); p = buf + 5; in6_addr = &in6->sin6_addr; @@ -547,17 +546,18 @@ char * time_to_text(time_t when) { struct tm *lt; - static char buf[40]; + static char buf[40]; char *day[] = {"Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"}; char *month[] = {"Jan","Feb","Mar","Apr","May","Jun", - "Jul","Aug","Sep","Oct","Nov","Dec"}; + "Jul","Aug","Sep","Oct","Nov","Dec"}; lt = localtime(&when); - if (lt == NULL || when == 0) + if (lt == NULL || when == 0) fatalx("time_to_text: localtime"); /* We do not use strftime because it is subject to locale substitution*/ - if (! bsnprintf(buf, sizeof(buf), "%s, %d %s %d %02d:%02d:%02d %c%02d%02d (%s)", + if (! bsnprintf(buf, sizeof(buf), + "%s, %d %s %d %02d:%02d:%02d %c%02d%02d (%s)", day[lt->tm_wday], lt->tm_mday, month[lt->tm_mon], lt->tm_year + 1900, lt->tm_hour, lt->tm_min, lt->tm_sec, @@ -566,7 +566,7 @@ time_to_text(time_t when) abs((int)lt->tm_gmtoff % 3600) / 60, lt->tm_zone)) fatalx("time_to_text: bsnprintf"); - + return buf; } @@ -694,7 +694,7 @@ text_to_relayhost(struct relayhost *relay, const char *s) { "smtp://", 0 }, { "smtps://", F_SMTPS }, { "tls://", F_STARTTLS }, - { "smtps+auth://", F_SMTPS|F_AUTH }, + { "smtps+auth://", F_SMTPS|F_AUTH }, { "tls+auth://", F_STARTTLS|F_AUTH }, { "ssl://", F_SMTPS|F_STARTTLS }, { "ssl+auth://", F_SMTPS|F_STARTTLS|F_AUTH } @@ -706,7 +706,8 @@ text_to_relayhost(struct relayhost *relay, const char *s) int len; for (i = 0; i < nitems(schemas); ++i) - if (strncasecmp(schemas[i].name, s, strlen(schemas[i].name)) == 0) + if (strncasecmp(schemas[i].name, s, + strlen(schemas[i].name)) == 0) break; if (i == nitems(schemas)) { @@ -729,7 +730,7 @@ text_to_relayhost(struct relayhost *relay, const char *s) return 0; len = sep - p; } - else + else len = strlen(p); if (strlcpy(relay->hostname, p, sizeof (relay->hostname)) @@ -856,7 +857,8 @@ sa_set_port(struct sockaddr *sa, int port) struct addrinfo hints, *res; int error; - error = getnameinfo(sa, sa->sa_len, hbuf, sizeof(hbuf), NULL, 0, NI_NUMERICHOST); + error = getnameinfo(sa, sa->sa_len, hbuf, sizeof(hbuf), NULL, 0, + NI_NUMERICHOST); if (error) fatalx("sa_set_port: getnameinfo failed"); @@ -1087,7 +1089,8 @@ log_envelope(const struct envelope *evp, const char *extra, const char *prefix, if (extra == NULL) extra = ""; - log_info("%s: %s for %016" PRIx64 ": from=<%s@%s>, to=<%s@%s>, %s%sdelay=%s, %sstat=%s", + log_info("%s: %s for %016" PRIx64 ": from=<%s@%s>, to=<%s@%s>, " + "%s%sdelay=%s, %sstat=%s", evp->type == D_MDA ? "delivery" : "relay", prefix, evp->id, evp->sender.user, evp->sender.domain, diff --git a/smtpd/waitq.c b/smtpd/waitq.c index da6519a6..eefc990c 100644 --- a/smtpd/waitq.c +++ b/smtpd/waitq.c @@ -91,7 +91,7 @@ waitq_run(void *tag, void *result) wq = SPLAY_FIND(waitqtree, &waitqs, &key); SPLAY_REMOVE(waitqtree, &waitqs, wq); - while((w = TAILQ_FIRST(&wq->waiters))) { + while ((w = TAILQ_FIRST(&wq->waiters))) { TAILQ_REMOVE(&wq->waiters, w, entry); w->cb(tag, w->arg, result); free(w); |