From: chris mikkelson Date: Mon, 6 Apr 2009 23:23:31 +0000 (-0500) Subject: Pass data as const char * to avoid module cross-talk. X-Git-Url: https://git.mikk.net/?a=commitdiff_plain;h=1e649f2b822aa32fa493af58518834b92b2fe91c;p=smtpsink Pass data as const char * to avoid module cross-talk. Modules are passed data from a buffer maintained by smtpsink core; if a module modifies the data, the modifications may be seen by other modules. --- diff --git a/module.c b/module.c index f3ed34f..21aeeaa 100644 --- a/module.c +++ b/module.c @@ -86,7 +86,7 @@ module_connect(struct conn *c) { int -module_helo(struct conn *c, char *cmd, int len, int argoff) +module_helo(struct conn *c, const char *cmd, int len, int argoff) { int i, ret; for (i = 0; i < nmod; i++) { @@ -100,7 +100,7 @@ module_helo(struct conn *c, char *cmd, int len, int argoff) int -module_mail(struct conn *c, char *cmd, int len, int argoff) +module_mail(struct conn *c, const char *cmd, int len, int argoff) { int i, ret; for (i = 0; i < nmod; i++) { @@ -113,7 +113,7 @@ module_mail(struct conn *c, char *cmd, int len, int argoff) } int -module_rcpt(struct conn *c, char *cmd, int len, int argoff) +module_rcpt(struct conn *c, const char *cmd, int len, int argoff) { int i, ret; for (i = 0; i < nmod; i++) { @@ -126,7 +126,7 @@ module_rcpt(struct conn *c, char *cmd, int len, int argoff) } int -module_data(struct conn *c, char *cmd, int len, int argoff) +module_data(struct conn *c, const char *cmd, int len, int argoff) { int i, ret; for (i = 0; i < nmod; i++) { @@ -139,7 +139,7 @@ module_data(struct conn *c, char *cmd, int len, int argoff) } void -module_body(struct conn *c, char *data, int len) +module_body(struct conn *c, const char *data, int len) { int i; for (i = 0; i < nmod; i++) { diff --git a/smtpsink-int.h b/smtpsink-int.h index bb60c57..b9e1d5b 100644 --- a/smtpsink-int.h +++ b/smtpsink-int.h @@ -23,11 +23,11 @@ extern char *banner_hostname; extern void module_init(char *); extern void module_reload(void); extern int module_connect(struct conn *); -extern int module_helo(struct conn *, char *, int, int); -extern int module_mail(struct conn *, char *, int, int); -extern int module_rcpt(struct conn *, char *, int, int); -extern int module_data(struct conn *, char *, int, int); -extern void module_body(struct conn *, char *, int); +extern int module_helo(struct conn *, const char *, int, int); +extern int module_mail(struct conn *, const char *, int, int); +extern int module_rcpt(struct conn *, const char *, int, int); +extern int module_data(struct conn *, const char *, int, int); +extern void module_body(struct conn *, const char *, int); extern int module_enddata(struct conn *); extern void module_abort(struct conn *); extern void module_close(struct conn *); diff --git a/smtpsink.h b/smtpsink.h index 56d6f84..b93a039 100644 --- a/smtpsink.h +++ b/smtpsink.h @@ -59,11 +59,11 @@ struct smtpsink_module { void (*ssm_module_reload)(void); int (*ssm_connect)(struct conn *); - int (*ssm_helo)(struct conn *, char *, int, int); - int (*ssm_mail)(struct conn *, char *, int, int); - int (*ssm_rcpt)(struct conn *, char *, int, int); - int (*ssm_data)(struct conn *, char *, int, int); - void (*ssm_body)(struct conn *, char *, int); + int (*ssm_helo)(struct conn *, const char *, int, int); + int (*ssm_mail)(struct conn *, const char *, int, int); + int (*ssm_rcpt)(struct conn *, const char *, int, int); + int (*ssm_data)(struct conn *, const char *, int, int); + void (*ssm_body)(struct conn *, const char *, int); int (*ssm_enddata)(struct conn *); void (*ssm_abort)(struct conn *); void (*ssm_close)(struct conn *);