Just a general question before I start submitting patches. What is
the general policy for error handling in FreeRDP?
For example, the bug I'm chasing right now:
"xf_window.c" line 303:
xfWindow* xf_CreateWindow(xfInfo* xfi, rdpWindow* wnd, int x, int y,
int width, int height, uint32 id)
{
xfWindow* window;
window = (xfWindow*) xzalloc(sizeof(xfWindow));
if ((width * height) < 1)
return NULL;
xf_FixWindowCoordinates(xfi, &x, &y, &width, &height);
window->left = x;
window->top = y;
window->right = x + width - 1;
window->bottom = y + height - 1;
window->width = width;
window->height = height;
if (window != NULL)
{
Note there is a bug (window being checked for NULL after it already
been dereferenced), and also a memory leak (return NULL after
allocation without a free) and also that this function can return
NULL.
Back up at the caller:
xf_rail line 78:
void xf_rail_CreateWindow(rdpRail* rail, rdpWindow* window)
{
xfInfo* xfi;
xfWindow* xfw;
xfi = (xfInfo*) rail->extra;
xf_rail_FilterWindowInfo(rail, window);
xfw = xf_CreateWindow((xfInfo*) rail->extra, window,
window->windowOffsetX, window->windowOffsetY,
window->windowWidth, window->windowHeight,
window->windowId);
xf_SetWindowStyle(xfi, xfw, window->style, window->extendedStyle);
The return code is never checked. The end result is a segfault to the
user when window is dereferenced.
(The actual bug is that width and height being passed to
xf_CreateWindow were zero for some reason, thus it returned a NULL)
Just wondering if I should be doing something with return code
checking as I encounter these cases.
-David
------------------------------------------------------------------------------
The demand for IT networking professionals continues to grow, and the
demand for specialized networking skills is growing even more rapidly.
Take a complimentary Learning@Cisco Self-Assessment and learn
about Cisco certifications, training, and career opportunities.
http://p.sf.net/sfu/cisco-dev2dev
_______________________________________________
Freerdp-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/freerdp-devel