The eC compiler and IDE crashed on buffer overflows.
These included:
- The GCC command for preprocessing in ecp and ecc
- The communication with integrated GDB
- Opening in the Code Editor a file specifying a text property containing a long string of text
- Using a very long set of command line arguments (Project Settings/Workspace), when writing to the workspace file
[Test Case]
- Build the HelloWorld sample in debug config (so as to produce the symbols)
Then in a shell run ecc with a lot of arguments to be passed down to GCC for processing:
jerome@quantal:~/sdk/samples/eC/HelloWorld$ ecc -c HelloWorld.ec -o obj/debug.linux/HelloWorld.c -symbols obj/debug.linux/ -Isomeveryveryveryveryveryveryveryveryveryveryveryveryverylongargument -Isomeveryveryveryveryveryveryveryveryveryveryveryveryverylongargument -Isomeveryveryveryveryveryveryveryveryveryveryveryveryverylongargument -Isomeveryveryveryveryveryveryveryveryveryveryveryveryverylongargument -Isomeveryveryveryveryveryveryveryveryveryveryveryveryverylongargument -Isomeveryveryveryveryveryveryveryveryveryveryveryveryverylongargument -Isomeveryveryveryveryveryveryveryveryveryveryveryveryverylongargument -Isomeveryveryveryveryveryveryveryveryveryveryveryveryverylongargument -Isomeveryveryveryveryveryveryveryveryveryveryveryveryverylongargument -Isomeveryveryveryveryveryveryveryveryveryveryveryveryverylongargument -Isomeveryveryveryveryveryveryveryveryveryveryveryveryverylongargument -Isomeveryveryveryveryveryveryveryveryveryveryveryveryverylongargument -Isomeveryveryveryveryveryveryveryveryveryveryveryveryverylongargument -Isomeveryveryveryveryveryveryveryveryveryveryveryveryverylongargument -Isomeveryveryveryveryveryveryveryveryveryveryveryveryverylongargument -Isomeveryveryveryveryveryveryveryveryveryveryveryveryverylongargument -Isomeveryveryveryveryveryveryveryveryveryveryveryveryverylongargument -Isomeveryveryveryveryveryveryveryveryveryveryveryveryverylongargument -Isomeveryveryveryveryveryveryveryveryveryveryveryveryverylongargument -Isomeveryveryveryveryveryveryveryveryveryveryveryveryverylongargument -Isomeveryveryveryveryveryveryveryveryveryveryveryveryverylongargument -Isomeveryveryveryveryveryveryveryveryveryveryveryveryverylongargument -Isomeveryveryveryveryveryveryveryveryveryveryveryveryverylongargument -Isomeveryveryveryveryveryveryveryveryveryveryveryveryverylongargument -Isomeveryveryveryveryveryveryveryveryveryveryveryveryverylongargument -Isomeveryveryveryveryveryveryveryveryveryveryveryveryverylongargument -Isomeveryveryveryveryveryveryveryveryveryveryveryveryverylongargument -Isomeveryveryveryveryveryveryveryveryveryveryveryveryverylongargument -Isomeveryveryveryveryveryveryveryveryveryveryveryveryverylongargument -Isomeveryveryveryveryveryveryveryveryveryveryveryveryverylongargument -Isomeveryveryveryveryveryveryveryveryveryveryveryveryverylongargument -Isomeveryveryveryveryveryveryveryveryveryveryveryveryverylongargument -Isomeveryveryveryveryveryveryveryveryveryveryveryveryverylongargument -Isomeveryveryveryveryveryveryveryveryveryveryveryveryverylongargument -Isomeveryveryveryveryveryveryveryveryveryveryveryveryverylongargument -Isomeveryveryveryveryveryveryveryveryveryveryveryveryverylongargument -Isomeveryveryveryveryveryveryveryveryveryveryveryveryverylongargument -Isomeveryveryveryveryveryveryveryveryveryveryveryveryverylongargument -Isomeveryveryveryveryveryveryveryveryveryveryveryveryverylongargument -Isomeveryveryveryveryveryveryveryveryveryveryveryveryverylongargument -Isomeveryveryveryveryveryveryveryveryveryveryveryveryverylongargument -Isomeveryveryveryveryveryveryveryveryveryveryveryveryverylongargument -Isomeveryveryveryveryveryveryveryveryveryveryveryveryverylongargument -Isomeveryveryveryveryveryveryveryveryveryveryveryveryverylongargument -Isomeveryveryveryveryveryveryveryveryveryveryveryveryverylongargument -Isomeveryveryveryveryveryveryveryveryveryveryveryveryverylongargument -Isomeveryveryveryveryveryveryveryveryveryveryveryveryverylongargument -Isomeveryveryveryveryveryveryveryveryveryveryveryveryverylongargument -Isomeveryveryveryveryveryveryveryveryveryveryveryveryverylongargument -Isomeveryveryveryveryveryveryveryveryveryveryveryveryverylongargument -Isomeveryveryveryveryveryveryveryveryveryveryveryveryverylongargument -Isomeveryveryveryveryveryveryveryveryveryveryveryveryverylongargument -Isomeveryveryveryveryveryveryveryveryveryveryveryveryverylongargument -Isomeveryveryveryveryveryveryveryveryveryveryveryveryverylongargument -Isomeveryveryveryveryveryveryveryveryveryveryveryveryverylongargument -Isomeveryveryveryveryveryveryveryveryveryveryveryveryverylongargument -Isomeveryveryveryveryveryveryveryveryveryveryveryveryverylongargument -Isomeveryveryveryveryveryveryveryveryveryveryveryveryverylongargument -Isomeveryveryveryveryveryveryveryveryveryveryveryveryverylongargument -Isomeveryveryveryveryveryveryveryveryveryveryveryveryverylongargument -Isomeveryveryveryveryveryveryveryveryveryveryveryveryverylongargument -Isomeveryveryveryveryveryveryveryveryveryveryveryveryverylongargument -Isomeveryveryveryveryveryveryveryveryveryveryveryveryverylongargument -Isomeveryveryveryveryveryveryveryveryveryveryveryveryverylongargument -Isomeveryveryveryveryveryveryveryveryveryveryveryveryverylongargument -Isomeveryveryveryveryveryveryveryveryveryveryveryveryverylongargument -Isomeveryveryveryveryveryveryveryveryveryveryveryveryverylongargument -Isomeveryveryveryveryveryveryveryveryveryveryveryveryverylongargument -Isomeveryveryveryveryveryveryveryveryveryveryveryveryverylongargument -Isomeveryveryveryveryveryveryveryveryveryveryveryveryverylongargument
*** stack smashing detected ***: ecc terminated
Aborted (core dumped)
- Cause a long (>1024 chars) GDB command to be issued (Set a long set of command line arguments in Project Settings/Workspace)
- Open up ide/src/about.ec in the IDE:
jerome@quantal:~/sdk$ ide ide/src/about.ec
*** stack smashing detected ***: ide terminated
Aborted (core dumped)
- Set up a very long set of command line arguments (Project Settings/Workspace)
[Regression Potential]
Since the size for these buffers have either been increased and passed along to snprintf/vsnprintf, or they have been replaced by dynamic buffer, things should work better. Unless a mistake was inadvertently made, nothing should break.
Fixed by http:// bazaar. launchpad. net/~jerstlouis /ecere/ quantal_ sru/revision/ 810
.debdiff can be found in bug https:/ /bugs.launchpad .net/ubuntu/ +source/ ecere-sdk/ +bug/1107774