diff options
author | Rainer Gerhards <rgerhards@adiscon.com> | 2008-02-26 13:43:13 +0000 |
---|---|---|
committer | Rainer Gerhards <rgerhards@adiscon.com> | 2008-02-26 13:43:13 +0000 |
commit | b00cf838bb11fdff8a55c67f07e1045350ec8981 (patch) | |
tree | e60b876cbf3684ac40536d87a8bcf401e50e17eb /modules.c | |
parent | 1a4ea8dc01a946ad48a0e85808d3e09d047c98d3 (diff) | |
download | rsyslog-b00cf838bb11fdff8a55c67f07e1045350ec8981.tar.gz rsyslog-b00cf838bb11fdff8a55c67f07e1045350ec8981.tar.xz rsyslog-b00cf838bb11fdff8a55c67f07e1045350ec8981.zip |
- bugfix: resolved potential segfault condition on HUP (extremely unlikely
to happen in practice), for details see tracker:
http://bugzilla.adiscon.com/show_bug.cgi?id=38
Diffstat (limited to 'modules.c')
-rw-r--r-- | modules.c | 12 |
1 files changed, 12 insertions, 0 deletions
@@ -378,6 +378,18 @@ rsRetVal modUnloadAndDestructDynamic(void) } } + /* Note: the last modules pNext pointer is now invalid + * (except if the last module was not touched, what is highly + * unlikely. We simply fix this be setting it to NULL. After all, + * it is the last module ;). This bug had some severe effects in + * v3, but none in v2 because in v2 the list was never again + * traversed before a new one was added. But even in v2 it may cause + * a segfault if the number of loaded modules changed between HUPs. + * rgerhards, 2008-02-26 + */ + if(pLoadedModulesLast != NULL) + pLoadedModulesLast->pNext = NULL; + return iRet; } /* |