Re: old user rules are not cleared in nessusd
Thomas Arendsen Hein <[email protected]> Fri, 26 Nov 2004 15:46:27 +0100
| Newsgroups | gmane.comp.security.nessus.devel |
|---|---|
| Message-ID | <[email protected]> |
* Thomas Arendsen Hein <[email protected]> [20041126 10:40]: > It seems there is a problem with my patch which causes a segfault in > the server thread responsible for the connection sending rules. My patch was ok, but rules_dup was broken (as documented in the nessusd log). Attached is a patch which fixes it, since the patch isn't very readable, here the complete rules_dup function: struct nessus_rules * rules_dup(struct nessus_rules *source) { struct nessus_rules *target = NULL; if(source) { target = memcpy(emalloc(sizeof(struct nessus_rules)), source, sizeof(struct nessus_rules)); target->next = rules_dup(source->next); } return target; } Renaud, do I have the permission to commit both patches? Thomas -- Email: [email protected] http://intevation.de/~thomas/ _______________________________________________ Nessus-devel mailing list [email protected] http://mail.nessus.org/mailman/listinfo/nessus-devel
nessusd-rules_dup.patch
(text/plain, 1.1 KB)
Index: nessusd/rules.c
===================================================================
RCS file: /usr/local/cvs/nessus-core/nessusd/rules.c,v
retrieving revision 1.26
diff -u -r1.26 rules.c
--- nessusd/rules.c 27 Oct 2004 13:00:39 -0000 1.26
+++ nessusd/rules.c 26 Nov 2004 14:41:26 -0000
@@ -179,28 +179,19 @@
fclose(f);
}
+
struct nessus_rules *
-rules_dup_aux(s, r)
- struct nessus_rules * s, *r;
+rules_dup(struct nessus_rules *source)
{
- printf("rules_dup called - does not work\n");
- if(!s->next)return r;
- else
+ struct nessus_rules *target = NULL;
+
+ if(source)
{
- r->ip.s_addr = s->ip.s_addr;
- r->mask = s->mask;
- r->rule = s->rule;
- r->not = s->not;
- r->def = s->def;
- r->next = emalloc(sizeof(*r));
- return rules_dup_aux(s->next,r->next);
+ target = memcpy(emalloc(sizeof(struct nessus_rules)),
+ source, sizeof(struct nessus_rules));
+ target->next = rules_dup(source->next);
}
-}
-struct nessus_rules *
-rules_dup(struct nessus_rules *s)
-{
- struct nessus_rules * r = emalloc(sizeof(*r));
- return rules_dup_aux(s, r);
+ return target;
}
signature.asc
(application/pgp-signature, 189 B)
-----BEGIN PGP SIGNATURE----- Version: GnuPG v1.2.5 (GNU/Linux) iD8DBQFBp0HCW7P1GVgWeRoRAv2BAJsGIYWlTinhiLfjlil5AGCLHa6rlwCfVVMe KsqG2bCuSGWDKrjZakLQul4= =6l/H -----END PGP SIGNATURE-----