Hi Julien,

On Sat, Jan 07, 2017 at 07:03:17PM +0100, Julien Cristau wrote:
> It looks like we're leaking 'attr' on these error paths?

confirmed. That is what I get for copying the error handling of the
attr == NULL case...


diff --git a/src/XrrCrtc.c b/src/XrrCrtc.c
index 6665092..8316b78 100644
--- a/src/XrrCrtc.c
+++ b/src/XrrCrtc.c
@@ -459,6 +459,7 @@ XRRGetCrtcTransform (Display        *dpy,
     e = extra;
 
     if (e + rep.pendingNbytesFilter > end) {
+       XFree (attr);
        XFree (extra);
        return False;
     }
@@ -468,6 +469,7 @@ XRRGetCrtcTransform (Display        *dpy,
     for (p = 0; p < rep.pendingNparamsFilter; p++) {
        INT32   f;
        if (e + 4 > end) {
+           XFree (attr);
            XFree (extra);
            return False;
        }
@@ -478,6 +480,7 @@ XRRGetCrtcTransform (Display        *dpy,
     attr->pendingNparams = rep.pendingNparamsFilter;
 
     if (e + rep.currentNbytesFilter > end) {
+       XFree (attr);
        XFree (extra);
        return False;
     }
@@ -487,6 +490,7 @@ XRRGetCrtcTransform (Display        *dpy,
     for (p = 0; p < rep.currentNparamsFilter; p++) {
        INT32   f;
        if (e + 4 > end) {
+           XFree (attr);
            XFree (extra);
            return False;
        }
_______________________________________________
xorg-devel@lists.x.org: X.Org development
Archives: http://lists.x.org/archives/xorg-devel
Info: https://lists.x.org/mailman/listinfo/xorg-devel

Reply via email to