diff options
author | Adam <Adam@anope.org> | 2013-07-25 20:31:51 -0400 |
---|---|---|
committer | Adam <Adam@anope.org> | 2013-07-25 20:31:51 -0400 |
commit | a563c8fb2f3b92de6b3f7a0417f213036f7000e6 (patch) | |
tree | c35ff8b9825365de3d4c098e75578fa42d42b377 /src/modules.c | |
parent | def6a6deee39d80890d6cabd0a6bb7f28e3c6d7b (diff) |
Fix dumb modules
Diffstat (limited to 'src/modules.c')
-rw-r--r-- | src/modules.c | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/src/modules.c b/src/modules.c index f1fcb39d1..ceeb7e3a0 100644 --- a/src/modules.c +++ b/src/modules.c @@ -2563,6 +2563,14 @@ int moduleGetConfigDirective(Directive * d) char *s = NULL; char *t = NULL; int retval = 1; + int i; + + /* Dumb modules pass uninitialized string pointers here. Dumb people will not add the proper configuration values to services.conf. + * Combine the two and you end up with parse_directive never setting the char* pointers passed here. So, null them out now. + */ + for (i = 0; i < MAXPARAMS && d->params[i].type != PARAM_NONE; i++) + if (d->params[i].type == PARAM_STRING) + *(char **) d->params[i].ptr = NULL; config = fopen(SERVICES_CONF, "r"); if (!config) { |