Selaa lähdekoodia

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.
teor 9 vuotta sitten
vanhempi
commit
b41a5039f1
2 muutettua tiedostoa jossa 7 lisäystä ja 1 poistoa
  1. 3 1
      changes/ticket15431
  2. 4 0
      src/or/control.h

+ 3 - 1
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".

+ 4 - 0
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)