Error-reports cppcheck (http://sourceforge.net/apps/mediawiki/cppcheck/index.php?title=Main_Page)
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
Compiz |
Fix Released
|
Medium
|
MC Return | ||
compiz (Ubuntu) |
Fix Released
|
Undecided
|
Unassigned |
Bug Description
Running "cppcheck compiz/ --report-progress --std=c++11 -v --platform=unix64 2>cppcheck-
[compiz/
[compiz/
[compiz/
[compiz/
[compiz/
[compiz/
[compiz/
[compiz/
[compiz/
[compiz/
[compiz/
[compiz/
[compiz/
[compiz/
[compiz/
[compiz/
[compiz/
[compiz/
[compiz/
[compiz/
[compiz/
[compiz/
[compiz/
[compiz/
[compiz/
[compiz/
[compiz/
[compiz/
[compiz/
[compiz/
[compiz/
[compiz/
[compiz/
[compiz/
[compiz/
[compiz/
[compiz/
[compiz/
[compiz/
[compiz/
[compiz/
[compiz/
[compiz/
Related branches
- Daniel van Vugt: Approve
- MC Return: Needs Resubmitting
- Sam Spilsbury: Approve
-
Diff: 1789 lines (+192/-190)54 files modifiedcmake/src/compiz/compiz_discover_gtest_tests.cpp (+2/-2)
compizconfig/libcompizconfig/src/bindings.c (+1/-1)
compizconfig/libcompizconfig/src/compiz.cpp (+19/-17)
gtk/window-decorator/events.c (+3/-3)
kde/window-decorator-kde4/window.cpp (+1/-1)
plugins/animation/src/animation.cpp (+8/-8)
plugins/animation/src/extensionplugin.cpp (+3/-3)
plugins/animationaddon/src/burn.cpp (+1/-1)
plugins/annotate/src/annotate.cpp (+1/-2)
plugins/ccp/src/ccp.cpp (+1/-1)
plugins/clone/src/clone.cpp (+2/-2)
plugins/colorfilter/src/parser.cpp (+2/-1)
plugins/compiztoolbox/src/compiztoolbox.cpp (+2/-2)
plugins/composite/src/screen.cpp (+3/-3)
plugins/cubeaddon/src/cubeaddon.cpp (+14/-13)
plugins/dbus/src/dbus.cpp (+1/-1)
plugins/decor/src/clip-groups/tests/clip-groups/src/test-decor-clip-groups.cpp (+1/-1)
plugins/decor/src/decor.cpp (+4/-8)
plugins/extrawm/src/extrawm.cpp (+2/-2)
plugins/ezoom/src/ezoom.cpp (+2/-3)
plugins/firepaint/src/firepaint.cpp (+1/-2)
plugins/grid/src/grid.cpp (+4/-4)
plugins/group/src/group.cpp (+1/-1)
plugins/group/src/init.cpp (+4/-4)
plugins/group/src/paint.cpp (+1/-1)
plugins/group/src/selection.cpp (+4/-4)
plugins/group/src/tab.cpp (+3/-3)
plugins/loginout/src/loginout.cpp (+2/-2)
plugins/mousepoll/src/mousepoll.cpp (+2/-2)
plugins/opengl/src/fragment.cpp (+1/-1)
plugins/opengl/src/paint.cpp (+1/-1)
plugins/place/src/place.cpp (+1/-1)
plugins/place/src/screen-size-change/src/screen-size-change.cpp (+3/-3)
plugins/resize/src/resize.cpp (+11/-12)
plugins/ring/src/ring.cpp (+6/-6)
plugins/scale/src/scale.cpp (+2/-2)
plugins/session/src/session.cpp (+6/-8)
plugins/shift/src/shift.cpp (+4/-2)
plugins/snap/src/snap.cpp (+4/-4)
plugins/staticswitcher/src/staticswitcher.cpp (+4/-4)
plugins/switcher/src/switcher.cpp (+1/-1)
plugins/td/src/3d.cpp (+1/-1)
plugins/trailfocus/src/trailfocus.cpp (+2/-2)
plugins/wall/src/offset_movement/src/offset-movement.cpp (+1/-1)
plugins/wobbly/src/wobbly.cpp (+17/-13)
src/event.cpp (+1/-1)
src/match.cpp (+2/-2)
src/plugin.cpp (+3/-3)
src/screen.cpp (+15/-13)
src/stackdebugger.cpp (+6/-6)
src/timer/src/timeouthandler.cpp (+1/-1)
src/timer/src/timer.cpp (+2/-2)
src/timer/tests/callbacks/src/test-timer-callbacks.cpp (+1/-1)
src/timer/tests/while-calling/src/test-timer-set-times-while-calling.cpp (+1/-1)
- Daniel van Vugt: Approve
- Sam Spilsbury: Approve
-
Diff: 242 lines (+21/-21)16 files modifiedcompizconfig/libcompizconfig/src/iniparser.c (+1/-1)
plugins/animation/src/extensionplugin.cpp (+3/-3)
plugins/colorfilter/src/colorfilter.cpp (+1/-1)
plugins/colorfilter/src/parser.cpp (+1/-1)
plugins/dbus/src/dbus.cpp (+1/-1)
plugins/decor/src/decor.cpp (+1/-1)
plugins/firepaint/src/firepaint.cpp (+2/-2)
plugins/grid/src/grid.cpp (+1/-1)
plugins/group/src/init.cpp (+2/-2)
plugins/opacify/src/opacify.cpp (+1/-1)
plugins/ring/src/ring.cpp (+1/-1)
plugins/scale/src/scale.cpp (+1/-1)
plugins/thumbnail/src/thumbnail.cpp (+1/-1)
plugins/wallpaper/src/wallpaper.cpp (+2/-2)
src/match.cpp (+1/-1)
src/screen.cpp (+1/-1)
- Daniel van Vugt: Approve
-
Diff: 75 lines (+7/-8)4 files modifiedgtk/window-decorator/cairo.c (+2/-5)
kde/window-decorator-kde4/switcher.cpp (+1/-1)
libdecoration/decoration.c (+3/-1)
plugins/opengl/src/screen.cpp (+1/-1)
- Daniel van Vugt: Disapprove
-
Diff: 118 lines (+12/-12)6 files modifiedcompizconfig/gconf/src/gconf.c (+1/-1)
compizconfig/libcompizconfig/src/bindings.c (+2/-2)
compizconfig/libcompizconfig/src/compiz.cpp (+1/-1)
plugins/animation/src/options.cpp (+4/-4)
plugins/screenshot/src/screenshot.cpp (+2/-2)
src/action.cpp (+2/-2)
Changed in compiz: | |
assignee: | nobody → MC Return (mc-return) |
Changed in compiz: | |
status: | New → In Progress |
importance: | Undecided → Medium |
milestone: | none → 0.9.8.0 |
Changed in compiz: | |
status: | Fix Committed → Fix Released |
Running "cppcheck compiz/ --enable=all --report-progress --std=c++11 -v --platform=unix64 2>cppcheck- error.txt --force" (with style and performance checks enabled also) reveals these problems:
[compiz/ cmake/src/ compiz/ compiz_ discover_ gtest_tests. cpp:46] : (performance) Prefix ++/-- operators should be preferred for non-primitive types. Pre-increment/ decrement can be more efficient than post-increment/ decrement. Post-increment/ decrement usually involves keeping a copy of the previous value around and adds a little extra code. cmake/src/ compiz/ compiz_ discover_ gtest_tests. cpp:49] : (performance) Prefix ++/-- operators should be preferred for non-primitive types. Pre-increment/ decrement can be more efficient than post-increment/ decrement. Post-increment/ decrement usually involves keeping a copy of the previous value around and adds a little extra code. compizconfig/ gconf/src/ gconf.c: 479]: (warning) scanf without field width limits can crash with huge input data. To fix this error message add a field width specifier:
[compiz/
[compiz/
%s => %20s
%i => %3i
Sample program that can crash:
#include <stdio.h>
int main()
{
int a;
scanf("%i", &a);
return 0;
}
To make it crash: compizconfig/ gconf/src/ gconf.c: 1930]: (error) Memory pointed to by 'pathName' is freed twice. compizconfig/ gsettings/ gsettings_ backend_ shared/ gsettings_ util.c: 184]: (warning) scanf without field width limits can crash with huge input data. To fix this error message add a field width specifier:
perl -e 'print "5"x2100000' | ./a.out
[compiz/
[compiz/
%s => %20s
%i => %3i
Sample program that can crash:
#include <stdio.h>
int main()
{
int a;
scanf("%i", &a);
return 0;
}
To make it crash: compizconfig/ gsettings/ src/gsettings. c:296]: (warning) Casting between double* and float* which have an incompatible binary data representation compizconfig/ libcompizconfig /backend/ src/ini. c:686]: (error) Memory pointed to by 'filePath' is freed twice. compizconfig/ libcompizconfig /backend/ src/ini. c:187]: (error) Common realloc mistake: 'privData' nulled but not freed upon failure compizconfig/ libcompizconfig /backend/ src/ini. c:221]: (error) Common realloc mistake: 'privData' nulled but not freed upon failure compizconfig/ libcompizconfig /src/bindings. c:216]: (style) The scope of the variable 'buttonStr' can be reduced. Warning: It can be unsafe to fix this message. Be careful. Especially when there are inner loops. Here is an example where cppcheck will write that the scope for 'i' can be reduced:
do_ something( &i); compizconfig/ libcompizconfig /src/bindings. c:380]: (warning) scanf without field width limits can crash with huge input data. To fix this error message add a field width specifier:
perl -e 'print "5"x2100000' | ./a.out
[compiz/
[compiz/
[compiz/
[compiz/
[compiz/
void f(int x)
{
int i = 0;
if (x) {
// it's safe to move 'int i = 0' here
for (int n = 0; n < 10; ++n) {
// it is possible but not safe to move 'int i = 0' here
}
}
}
When you see this message it is always safe to reduce the variable scope 1 level.
[compiz/
%s => %20s
%i => %3i
Sample program that can crash:
#include <stdio.h>
int m...