Kaynağa Gözat

Merge branch 'tor-github/pr/1322'

George Kadianakis 6 yıl önce
ebeveyn
işleme
e77ad795c6
2 değiştirilmiş dosya ile 36 ekleme ve 0 silme
  1. 7 0
      changes/ticket30743
  2. 29 0
      scripts/coccinelle/debugmm.cocci

+ 7 - 0
changes/ticket30743

@@ -0,0 +1,7 @@
+  o Minor features (maintenance scripts):
+    - Add a coccinelle script to detect bugs caused by incrementing or
+      decrementing a variable inside a call to log_debug().  Since
+      log_debug() is a macro whose arguments are conditionally evaluated, it
+      is usually an error to do this. One such bug was 30628, in which SENDME
+      cells were miscounted by a decrement operator inside a log_debug()
+      call.  Closes ticket 30743.

+ 29 - 0
scripts/coccinelle/debugmm.cocci

@@ -0,0 +1,29 @@
+// Look for use of expressions with side-effects inside of debug logs.
+//
+// This script detects expressions like ++E, --E, E++, and E-- inside of
+// calls to log_debug().
+//
+// The log_debug() macro exits early if debug logging is not enabled,
+// potentially causing problems if its arguments have side-effects.
+
+@@
+expression E;
+@@
+*log_debug(... , <+...  --E ...+>, ... );
+
+
+@@
+expression E;
+@@
+*log_debug(... , <+...  ++E ...+>, ... );
+
+@@
+expression E;
+@@
+*log_debug(... , <+...  E-- ...+>, ... );
+
+
+@@
+expression E;
+@@
+*log_debug(... , <+...  E++ ...+>, ... );