diff --git a/changes/ticket15431 b/changes/ticket15431 index e35bab6e85..ea6821afdf 100644 --- a/changes/ticket15431 +++ b/changes/ticket15431 @@ -1,4 +1,6 @@ o Minor features (testing): - Add unit tests for control_event_is_interesting(). - Part of ticket 15431, checks for bugs similar to 13085. + Add a compile-time check that the number of events doesn't exceed + the capacity of control_event_t.event_mask. + Closes ticket 15431, checks for bugs similar to 13085. Patch by "teor". diff --git a/src/or/control.h b/src/or/control.h index 9b0362a9a5..dbb80b1f20 100644 --- a/src/or/control.h +++ b/src/or/control.h @@ -166,6 +166,10 @@ void control_free_all(void); /* If EVENT_MAX_ ever hits 0x0040, we need to make the mask into a * different structure, as it can only handle a maximum left shift of 1<<63. */ +#if EVENT_MAX_ >= EVENT_CAPACITY_ +#error control_connection_t.event_mask has an event greater than its capacity +#endif + #define EVENT_MASK_(e) (((uint64_t)1)<<(e)) #define EVENT_MASK_NONE_ ((uint64_t)0x0)