From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from localhost (localhost [127.0.0.1]) by olra.theworths.org (Postfix) with ESMTP id 1389C431FAE for ; Sat, 22 Sep 2012 09:19:13 -0700 (PDT) X-Virus-Scanned: Debian amavisd-new at olra.theworths.org X-Spam-Flag: NO X-Spam-Score: -0.7 X-Spam-Level: X-Spam-Status: No, score=-0.7 tagged_above=-999 required=5 tests=[RCVD_IN_DNSWL_LOW=-0.7] autolearn=disabled Received: from olra.theworths.org ([127.0.0.1]) by localhost (olra.theworths.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id nIjdiJOLFgyU for ; Sat, 22 Sep 2012 09:19:12 -0700 (PDT) Received: from dmz-mailsec-scanner-6.mit.edu (DMZ-MAILSEC-SCANNER-6.MIT.EDU [18.7.68.35]) by olra.theworths.org (Postfix) with ESMTP id 68BAD431FAF for ; Sat, 22 Sep 2012 09:19:12 -0700 (PDT) X-AuditID: 12074423-b7fab6d0000008f9-15-505de4ffa9d9 Received: from mailhub-auth-2.mit.edu ( [18.7.62.36]) by dmz-mailsec-scanner-6.mit.edu (Symantec Messaging Gateway) with SMTP id A1.90.02297.FF4ED505; Sat, 22 Sep 2012 12:19:11 -0400 (EDT) Received: from outgoing.mit.edu (OUTGOING-AUTH.MIT.EDU [18.7.22.103]) by mailhub-auth-2.mit.edu (8.13.8/8.9.2) with ESMTP id q8MGJAbi027804; Sat, 22 Sep 2012 12:19:11 -0400 Received: from awakening.csail.mit.edu (awakening.csail.mit.edu [18.26.4.91]) (authenticated bits=0) (User authenticated as amdragon@ATHENA.MIT.EDU) by outgoing.mit.edu (8.13.6/8.12.4) with ESMTP id q8MGJ91m003634 (version=TLSv1/SSLv3 cipher=AES256-SHA bits=256 verify=NOT); Sat, 22 Sep 2012 12:19:10 -0400 (EDT) Received: from amthrax by awakening.csail.mit.edu with local (Exim 4.77) (envelope-from ) id 1TFSQ9-0005TK-1i; Sat, 22 Sep 2012 12:19:09 -0400 Date: Sat, 22 Sep 2012 12:19:08 -0400 From: Austin Clements To: Justus Winter <4winter@informatik.uni-hamburg.de> Subject: Re: [PATCH 2/2] Avoid potentially dereferencing a NULL pointer Message-ID: <20120922161908.GF26662@mit.edu> References: <1348231837-21700-1-git-send-email-4winter@informatik.uni-hamburg.de> <1348231837-21700-2-git-send-email-4winter@informatik.uni-hamburg.de> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: <1348231837-21700-2-git-send-email-4winter@informatik.uni-hamburg.de> User-Agent: Mutt/1.5.21 (2010-09-15) X-Brightmail-Tracker: H4sIAAAAAAAAA+NgFmphleLIzCtJLcpLzFFi42IRYrdT0f3/JDbA4NsUK4vZrT+YLK7fnMns wOQx8fxpNo9nq24xBzBFcdmkpOZklqUW6dslcGXMev6BvWAlZ8Wp1suMDYzL2bsYOTkkBEwk 9u6/xQJhi0lcuLeerYuRi0NIYB+jxPljVxkhnA2MEj/3bIZyTjJJdPy6ygLhLGGU2HRmG1AP BweLgKpE43IpkFFsAhoS2/YvZwSxRQRMJTY8eAC2jllAWuLb72YmEFtYwF3i4I1zYDW8AjoS 95qWQy2YySix8uMJFoiEoMTJmU9YIJq1JG78e8kEsgtk0PJ/HCBhToEgiTNHLrOB2KICKhJT Tm5jm8AoNAtJ9ywk3bMQuhcwMq9ilE3JrdLNTczMKU5N1i1OTszLSy3SNdPLzSzRS00p3cQI DmwX5R2Mfw4qHWIU4GBU4uHdMDkmQIg1say4MvcQoyQHk5Iob/fj2AAhvqT8lMqMxOKM+KLS nNTiQ4wSHMxKIrzmJ4FyvCmJlVWpRfkwKWkOFiVx3mspN/2FBNITS1KzU1MLUotgsjIcHEoS vAHACBYSLEpNT61Iy8wpQUgzcXCCDOcBGm4NUsNbXJCYW5yZDpE/xagoJc4bBZIQAElklObB 9cISzytGcaBXhHk9Qap4gEkLrvsV0GAmoMFvrkeBDC5JREhJNTAqC58WujB3+/WDIjvWBj6U PMRU80Hj9YYHi9XmJra+brp64Xes/7RowcOKHNb8fs8+/znfwVB5y8SyO2OZlo+9XpTnl57F rm0c/vcDr9nNcp7ysXL2HumXmx71nerVUNwoqPHq6BkrnjWGFxjm6jGVR85zs3op9tFR7mD4 FLb3oTPWPdjFtkhfiaU4I9FQi7moOBEAH/LmEBcDAAA= Cc: notmuch@notmuchmail.org X-BeenThere: notmuch@notmuchmail.org X-Mailman-Version: 2.1.13 Precedence: list List-Id: "Use and development of the notmuch mail system." List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Sat, 22 Sep 2012 16:19:13 -0000 Quoth Justus Winter on Sep 21 at 2:50 pm: > GMIME_IS_MULTIPART and GMIME_IS_MESSAGE both handle NULL pointers > gracefully, but the G_OBJECT_TYPE used in the error handling block > dereferences it without checking it first. > > Fix this by checking whether parent->part is valid. > > Found using the clang static analyzer. Neat. Can this actually happen, though? If so, I think this point is too late to be checking for a NULL part field. It should probably be checked when the mime_node_t is created so that mime_node_t never has a NULL part field. > Signed-off-by: Justus Winter <4winter@informatik.uni-hamburg.de> > --- > mime-node.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/mime-node.c b/mime-node.c > index 97e8b48..839737a 100644 > --- a/mime-node.c > +++ b/mime-node.c > @@ -291,7 +291,7 @@ mime_node_child (mime_node_t *parent, int child) > GMimeObject *sub; > mime_node_t *node; > > - if (!parent || child < 0 || child >= parent->nchildren) > + if (!parent || !parent->part || child < 0 || child >= parent->nchildren) > return NULL; > > if (GMIME_IS_MULTIPART (parent->part)) {