diff options
Diffstat (limited to 'network/leafnode/applyfilter_plugleak.diff')
-rw-r--r-- | network/leafnode/applyfilter_plugleak.diff | 37 |
1 files changed, 37 insertions, 0 deletions
diff --git a/network/leafnode/applyfilter_plugleak.diff b/network/leafnode/applyfilter_plugleak.diff new file mode 100644 index 0000000000..54274cb998 --- /dev/null +++ b/network/leafnode/applyfilter_plugleak.diff @@ -0,0 +1,37 @@ +--- a/applyfilter.c ++++ b/applyfilter.c +@@ -71,14 +71,12 @@ static int applyfilter(const char *name, struct newsgroup *g, + unsigned long *kept, unsigned long *deleted) + { + static size_t lsize = MAXHEADERSIZE + 1; +- static char *l; ++ char *l; + struct stat st; + int score, fd; + struct utimbuf u; + unsigned long n; + +- l = (char *)critmalloc(lsize, "Space for article"); +- + if (stat(name, &st)) { + ln_log(LNLOG_SNOTICE, LNLOG_CARTICLE, + "cannot stat file \"%s\" in newsgroup %s: %m", +@@ -97,6 +95,8 @@ static int applyfilter(const char *name, struct newsgroup *g, + return 0; + } + ++ l = (char *)critmalloc(lsize, "Space for article"); ++ + if((fd = open(name, O_RDONLY)) >= 0) + { + int ret; +@@ -167,6 +167,9 @@ static int applyfilter(const char *name, struct newsgroup *g, + ln_log(LNLOG_SERR, LNLOG_CARTICLE, + "could not open file \"%s\" in newsgroup %s\n", + name, g->name); ++ ++ free(l); ++ + return 0; + } + |