summaryrefslogtreecommitdiffstats
path: root/network/leafnode/applyfilter_plugleak.diff
blob: 54274cb998035a62ab0e51d80d4a46a1341c43c8 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
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;
 }