]> git.mikk.net Git - smtpsink/commitdiff
Pass data as const char * to avoid module cross-talk.
authorchris mikkelson <chris@mikk.net>
Mon, 6 Apr 2009 23:23:31 +0000 (18:23 -0500)
committerchris mikkelson <chris@mikk.net>
Mon, 6 Apr 2009 23:23:31 +0000 (18:23 -0500)
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.

module.c
smtpsink-int.h
smtpsink.h

index f3ed34fb09f0d3d89b5f9a76991332ce8559f6a4..21aeeaa5018038c9048310830b92ed31779ec71b 100644 (file)
--- 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++) {
index bb60c5706d686ba99b8b6831e2657d18e12e1645..b9e1d5b3d7c367222c4494b808b92f7271999f11 100644 (file)
@@ -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 *);
index 56d6f84ca093ac3638493550fc6548ac4979b23f..b93a03947e273ae7f6bb461375ee0581425fd095 100644 (file)
@@ -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 *);