Loading changes/ticket30743 0 → 100644 +7 −0 Original line number Diff line number Diff line 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. scripts/coccinelle/debugmm.cocci 0 → 100644 +29 −0 Original line number Diff line number Diff line // 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++ ...+>, ... ); Loading
changes/ticket30743 0 → 100644 +7 −0 Original line number Diff line number Diff line 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.
scripts/coccinelle/debugmm.cocci 0 → 100644 +29 −0 Original line number Diff line number Diff line // 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++ ...+>, ... );