[PATCH] idle module segfault fix

Stefan (metze) Metzmacher metze at metzemix.de
Wed Sep 17 10:00:13 GMT 2003


Hi Jelmer,

I noticed a bug in the smb_run_idle_events() fn.

if a event unregisters itself we'll segfault...

also if a invalid interval was spacified we now
use SMB_IDLE_EVENT_DEFAULT_INTERVAL.

here's a patch
-- 

metze

-------------------------------------------
Stefan (metze) Metzmacher <metze at metzemix.de>
-------------- next part --------------
Index: source/lib/module.c
===================================================================
RCS file: /cvsroot/samba/source/lib/module.c,v
retrieving revision 1.6.2.12
diff -u -r1.6.2.12 module.c
--- source/lib/module.c	15 Sep 2003 00:19:25 -0000	1.6.2.12
+++ source/lib/module.c	17 Sep 2003 09:27:37 -0000
@@ -210,18 +210,21 @@
 	struct smb_idle_list_ent *event = smb_idle_event_list;
 
 	while (event) {
+		struct smb_idle_list_ent *next = event->next;
 		time_t interval;
 
-		if (event->interval >= SMB_IDLE_EVENT_MIN_INTERVAL) {
+		if (event->interval <= 0) {
+			interval = SMB_IDLE_EVENT_DEFAULT_INTERVAL;
+		} else if (event->interval >= SMB_IDLE_EVENT_MIN_INTERVAL) {
 			interval = event->interval;
 		} else {
 			interval = SMB_IDLE_EVENT_MIN_INTERVAL;
 		}
 		if (now >(event->lastrun+interval)) {
-			event->fn(&event->data,&event->interval,now);
 			event->lastrun = now;
+			event->fn(&event->data,&event->interval,now);
 		}
-		event = event->next;
+		event = next;
 	}
 
 	return;


More information about the samba-technical mailing list