diff options
author | teor <teor2345@gmail.com> | 2015-03-22 14:25:42 +1100 |
---|---|---|
committer | teor <teor2345@gmail.com> | 2015-03-22 14:25:42 +1100 |
commit | b41a5039f1ee16ddbcb5cbef63d5ba9abf802834 (patch) | |
tree | 4e81637a08373263fcf3f7380e98122bb48c19ca | |
parent | 99c10a95e408f8800e373735fd9a1eca0acc4df8 (diff) | |
download | tor-b41a5039f1ee16ddbcb5cbef63d5ba9abf802834.tar.gz tor-b41a5039f1ee16ddbcb5cbef63d5ba9abf802834.zip |
Compile-time check that control_event_t.event_mask is big enough
Add a compile-time check that the number of events doesn't exceed
the capacity of control_event_t.event_mask.
-rw-r--r-- | changes/ticket15431 | 4 | ||||
-rw-r--r-- | src/or/control.h | 4 |
2 files changed, 7 insertions, 1 deletions
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) |