Nmap Development mailing list archives

Re: Exception fail / crash


From: Henri Doreau <henri.doreau () gmail com>
Date: Fri, 27 Jan 2012 20:09:19 +0100

2012/1/27 David Fifield <david () bamsoftware com>:
Can you describe the bug and fix?

Sure, sorry for that obscure brevity...

Bug:
It could happen that nsock wants to add and suppress two events of the
same kind on a given IOD. I have added an assertion in update_events()
in order to force the caller to handle these cases. Previously (before
nsock-engines) they were removed and re-added, cost was negligible
with the bitfields used by select(), but that's expensive with
(e)poll. That's why nsock now first computes the events to be
added/removed, then apply it with update_events)().

Fix:
The X_EV(A, B) macro is used for that. It returns a new event set
containing events that are only in A. I've applied it to the
parameters of udpate_events(). X_EV(A, B) are added, events X_EV(B, A)
are removed. Intersecting events are kept untouched. With A being the
events originally planned to be added and B the ones planned to be
removed.

A couple calls to update_events(), with event sets possibly
intersecting, lacked this X_EV thing.

Doing this within update_events() instead would also make sense actually.

Regards.

--
Henri
_______________________________________________
Sent through the nmap-dev mailing list
http://cgi.insecure.org/mailman/listinfo/nmap-dev
Archived at http://seclists.org/nmap-dev/


Current thread: