Hi all,
I found few memory related issues in elementary package when performed static analysis on it.
These issues include:
Array indices getting out of bounds, freed memory address being passed to a function as parameter, memory not getting cleaned up because of earlier return statement.
Issues details:
1. In elm_widget.c inside function elm_widget_signal_callback_del(), it is possible that freed memory address esd is passed to the sd->callback_del_func(). I think it should be data, not esd.
Moreover what if the callback frees memory for data, then the other problem is that the return value is data from the function elm_widget_signal_callback_del() which in my opinion can be a problem.
2. Inside directory src/edje_externals for files elm_genlist.c, elm_notify.c, elm_list.c, elm_thumb.c and elm_map.c, array indices can go beyound bounary.
sizeof() operator for an array of character pointers will return [number of elements in the array * size of (char*)], basically 4 times the number of elements which has been taken care in assertion inside src/edje_extenarnals
while performing assertion but has been missed in the next statement in the loop condition.
3. In file src/lib/elm_config.c inside function _elm_config_profiles_list, freeing of file iterator has been missed out.
Please review the attached patch and let me know your opinion.
Thanks.
Regards,
Rajeev
SVN revision: 63550
can be scrollable or not. scrolled entry now just calls entry calls
and is marked as dperecated to be killed off in the future so no need
to document it etc. edje external also goes.
SVN revision: 60438
i removed all custom enum & url callback of elm_map.
(ELM_MAP_SOURCE_CUSTOM_1, ELM_MAP_SOURCE_CUSTOM_2, ..., _custom1_url_cb, _custom2_url_cb, ... etc)
instead of those, i made sources list.
changed APIs are almost internal APIs...
but some APIs were changed for intuitive usage of map source.
user can make map module instead of setting custom APIs.
another change is "elm_module -> eina_module".
the reason of this change, is that elm_module uses environment value (i.e getenv, setenv.. ELM_MODULES)
i don't want to have a environment value dependency.
SVN revision: 59184
(for that matter externals has a problem in design - it loads every
module for externals and thus links in every lib even if never used by
the app/edje obj).
SVN revision: 56218
Spank watchwolf. The last added externals dont compile with the flags
that we try to keep OK, since revision 53683.
Replace calloc(1,X) to use ELM_NEW, i want do tests with mem pool.
SVN revision: 54778
Notepad had a big issue: users couldn't access the entry, so notepad
was something near to an useless widget.
We needed to choose between wrap all entry functions or add these file
save / load and autosave features to entries.
As discussed on the emails list, we decided to go with the second
option, so we won't have an extra widget with lots of wrap functions.
Notepad was internally just an elm_entry with a scroll, so using
a scrolled entry with a file set will do the job.
I've added a test called Entry Notepad that looks like the removed
Notepad test. But we will see the improvements - you can clear the entry
or whatever you want, because the entry is the object you are creating.
If you were using elm_notepad before, just s/notepad/scrolled_entry
and almost everything should work fine. Another change was the function
file_save(obj, file, format), is now just file_save(obj), and the
file and format used are defined by file_set().
At last, some getters were added.
SVN revision: 54145
* Add UNUSED to arguments no used
* Add functions recently created to private.h
Patch by: "Fabiano Fidêncio" <fidencio@profusion.mobi>
SVN revision: 53763
Create a param 'style' that can be used in edje external
to change the style of one object.
Patch by: Otavio Pontes <otavio@profusion.mobi>
SVN revision: 53754
Now one can set lists to dispose its items horizontally, too.
elm_list_horizontal_mode_set(), whose name was bogus and would
conflict with the new methods, got renamed to elm_mode_set(), along
with the getters.
This is coming along to help a widget using lists which has a
horizontal mode. The default theme for horizontal items is kinda ugly
for default lists, but one can always improve it :) (in a hurry
now).
Also, I'm introducing a new mode for Elementary lists: expand.
SVN revision: 53640
It was elm_panes_horizontal_is, but grep shows no matches.
So I'm guessing horiztonal_get.
Seems was originally comited by watchwolf when the file was added.
SVN revision: 52287
When params_free is made icons/content were deleted.
It's not necessary with the new API for icon/content set in elementary.
By: Fabiano Fidencio <fidencio@profusion.mobi>
SVN revision: 49702
(thanks k-s).
Fix formatting & remove some whitespace.
NB: Please take notice, do not format if statements like this:
if (val && !val2).
You will get spanked...hard :P
Proper if formatting should be:
if ((val) && (!val2))
This avoids potential evaluation errors (as was recently seen in
ecore_con).
SVN revision: 49111
Add support to automatic proxy events from Elementary to Edje using
callbacks described with Evas_Smart_Cb_Description and set to
Evas_Smart_Class or per-instance with
evas_object_smart_callbacks_descriptions_set().
Right now elm_widget is not subclassable, so there is no way to define
class signals, just instance signals.
Just doing it for button, lots of widgets to do... If you can help,
please follow the process:
* see example at src/lib/elm_button.c, copy it.
* read your widget documentation at Elementary.h
* grep for evas_object_smart_callback_call(), see if they are all
documented in Elementary.h, or if there are some missing. Fix Elementary.h
* paste and change based on fixed Elementary.h My recommendation is
to create "static const char []" variables and replace all
evas_object_smart_callback_call() with that, to force sync.
With callback descriptions pre-defined and using the same pointer with
a custom variation evas_object_smart_callback_call_ptr() we may later
optimize signal calling heavily, removing the requirement to call
eina_stringshare_add()/eina_stringshare_del() and also not mixing all
the callbacks in teh same list, instead having an array for defined
signals, and a list from there. These optimizations are not in, but
they are easily added later without breaking the API/ABI.
SVN revision: 47461
Now it is possible to change labels and lots of other parameters
directly through Edje's API.
BIG FAT NOTE: this is a convenience that comes with a reasonable
price. If you have hot paths, like loops, then avoid calling this
and use the object directly. This functions add a cost to check
edje, then find the part, then get the type, then get the
param_set/param_get methods, then calling it, then finding the
parameters using strcmp(), then checking the type and just then it
will call the actual method. So whenever possible, just call the
method directly.
Due the reasoning of the "big fat note" I'm adding this inside edje
externals only. The code would be almost the same to expose it in
Elementary.h as elm_widget_property_set/get, but then I know people
would misuse it... actually this kind of stuff could be easily ported
to Evas smart object, but then abuse and slowness will hunt us
foreveeeeer...
SVN revision: 47457
This is a compound widget that puts an entry inside a scroller,
so the user doesn't have to manage that stuff. Still needs some
more exposure of the scroller stuff and probably some automatizations.
SVN revision: 44349