Re: Patches for two use-after-free bugs
Nopey Nope <[email protected]> Sun, 25 Jan 2026 11:53:08 -0700
| Newsgroups | gmane.comp.web.dillo.devel |
|---|---|
| Message-ID | <CABkuOmYy5Qgx0sxG77qeuBTGaa0mgqokGPrETF1JdbBA-ipUzg@mail.gmail.com> |
--000000000000a1593a06493ae7f0 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable Thanks for the guidance, Rodrigo! Had a better idea on how to fix the socketdata use-after-free; new attached patch 0002 fixes the bug by only freeing the queued sockdata if it's exclusively owned by the server queue. I've added information in the commit summaries as suggested. I also added an assert in Http_socket_enqueue, which makes explicit the precondition that socketdata can only be queued to one server at a time. This assert has not tripped, and hopefully never will; I thought it helped illustrate the relation between servers and socketdatas. Magnus On Sat, Jan 24, 2026 at 2:10=E2=80=AFPM Rodrigo Arias <[email protected]> = wrote: > > Hi Magnus, > > On Sat, Jan 24, 2026 at 11:13:25AM -0800, Nopey Nope wrote: > >Hello! > > > >Find attached two patches, which each fix a use-after-free bug. > > > >I've also attached a crashing html document for each, but please be > >aware that these reproducer documents link urls from external web > >servers. > >The reproducers crash reliably on my x86_64 Void Linux laptop, but > >I've not tested them elsewhere. I've also attached a crash log with > >asan reporting of each. > > > >Thank you > >-Magnus L > > > >p.s. I've also opened github PR 449 with these same changes, but > >figured I should send the patches via email as well-- if only for > >practice :) > > Thanks a lot for the patches and reproducers! > > I saw the PR but I only had time to look at the "Fix use-after-free in > openssl cert popup" commit which seems good. We are moving away from > GitHub so it would be nice to send future patches here (or a link to a > git repo/branch to fetch with git). > > It would help to describe what is the condition that triggers the UAF in > the Http_server patch and why the change helps, so that it is easier to > review. > > Perhaps it would be a good idea to put that information it in the commit > summary of both patches so we can see it via git blame. > > Best, > Rodrigo. > _______________________________________________ > Dillo-dev mailing list -- dillo-dev-lx9mn2B4QYRWk0Htik3J/[email protected] > To unsubscribe send an email to dillo-dev-leave-lx9mn2B4QYRWk0Htik3J/[email protected] --000000000000a1593a06493ae7f0 Content-Type: text/x-patch; charset="US-ASCII"; name="0001-Fix-use-after-free-in-openssl-cert-popup.patch" Content-Disposition: attachment; filename="0001-Fix-use-after-free-in-openssl-cert-popup.patch" Content-Transfer-Encoding: base64 Content-ID: <f_mktcaxs50> X-Attachment-Id: f_mktcaxs50 RnJvbSAyMzliMGQyZGM3MmM1MjI1MWFjOWNkZjM3MWY0NTY3ZmFhZGVhOWE0IE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNYWdudXMgTGFyc2VuIDxnb2xnb3RoYXNUZXJyb3IxMDFAZ21h aWwuY29tPgpEYXRlOiBUaHUsIDIyIEphbiAyMDI2IDIzOjU3OjI4IC0wODAwClN1YmplY3Q6IFtQ QVRDSCAxLzJdIEZpeCB1c2UtYWZ0ZXItZnJlZSBpbiBvcGVuc3NsIGNlcnQgcG9wdXAKCkR1cmlu ZyBUbHNfY29ubmVjdCwgd2UgYWxsb3cgRkxUSyB0byBydW4gY2FsbGJhY2tzIHdoZW4gd2UgcnVu IHRoZQpjZXJ0aWZpY2F0ZSB2ZXJpZmljYXRpb24gZGlhbG9nLiBTb21lIGNhbGxiYWNrcyBmcmVl IGNvbm5lY3Rpb25zLCBzdWNoCmFzIE5hdl9yZXB1c2hfY2FsbGJhY2suIFdlIG11c3QgY2hlY2sg b3VyIGNvbm4gKGlkZW50aWZpZWQgYnkgY29ubmtleSkKaGFzIG5vdCBiZWVuIGZyZWVkIHRodXNs eSBieSBsb29raW5nIGl0IHVwIGluIHRoZSB2YWxpZF9jb25ucyBrbGlzdApiZWZvcmUgd3JpdGlu ZyB0byBhbnkgZmllbGRzLgoKVGhlIGNvbm4tPmluX2Nvbm5lY3Qgd3JpdGUgd2FzIG1pc3Npbmcg c3VjaCBhIGNoZWNrLCBhbmQgc28gd291bGQgd3JpdGUKaW50byBmcmVlZCBtZW1vcnkuIFRoaXMg d3JpdGUgaXMgc3BlY2lmaWMgdG8gdGhlIHRsc19vcGVuc3NsIHBvcnQsIGFuZApzbyBlbWJlZHRs cyBpcyBub3QgZWZmZWN0ZWQuCi0tLQogc3JjL0lPL3Rsc19vcGVuc3NsLmMgfCA0ICsrKy0KIDEg ZmlsZSBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKCmRpZmYgLS1naXQg YS9zcmMvSU8vdGxzX29wZW5zc2wuYyBiL3NyYy9JTy90bHNfb3BlbnNzbC5jCmluZGV4IGRkZGRl MGU4Li5kZDYxOTk5NiAxMDA2NDQKLS0tIGEvc3JjL0lPL3Rsc19vcGVuc3NsLmMKKysrIGIvc3Jj L0lPL3Rsc19vcGVuc3NsLmMKQEAgLTEyMTMsOCArMTIxMywxMCBAQCBzdGF0aWMgdm9pZCBUbHNf Y29ubmVjdChpbnQgZmQsIGludCBjb25ua2V5KQogICAgICogYmVlbiBjbG9zZWQgYnkgdGhlIHNl cnZlciBpZiB0aGUgdXNlciByZXNwb25kZWQgdG9vIHNsb3dseSB0byBhIHBvcHVwLgogICAgICov CiAKKyAgIGNvbm4gPSBhX0tsaXN0X2dldF9kYXRhKGNvbm5fbGlzdCwgY29ubmtleSk7CisKICAg IGlmICghb25nb2luZykgewotICAgICAgaWYgKGFfS2xpc3RfZ2V0X2RhdGEoY29ubl9saXN0LCBj b25ua2V5KSkgeworICAgICAgaWYgKGNvbm4pIHsKICAgICAgICAgIGNvbm4tPmNvbm5lY3Rpbmcg PSBGQUxTRTsKICAgICAgICAgIGlmIChmYWlsZWQpIHsKICAgICAgICAgICAgIGNvbm4tPmluX2Nv bm5lY3QgPSBGQUxTRTsKLS0gCjIuNTEuMgoK --000000000000a1593a06493ae7f0 Content-Type: text/x-patch; charset="US-ASCII"; name="0002-Fix-premature-SocketData-free-in-Http_server_remove.patch" Content-Disposition: attachment; filename="0002-Fix-premature-SocketData-free-in-Http_server_remove.patch" Content-Transfer-Encoding: base64 Content-ID: <f_mktcaxsz1> X-Attachment-Id: f_mktcaxsz1 RnJvbSBmMjMxNzhjMmQ4ZmI5MDNiYzU1Y2MyZmIzODc4N2NlMmNmYjFiMTNlIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNYWdudXMgTGFyc2VuIDxnb2xnb3RoYXNUZXJyb3IxMDFAZ21h aWwuY29tPgpEYXRlOiBTYXQsIDI0IEphbiAyMDI2IDIwOjA0OjU1IC0wNzAwClN1YmplY3Q6IFtQ QVRDSCAyLzJdIEZpeCBwcmVtYXR1cmUgU29ja2V0RGF0YSBmcmVlIGluIEh0dHBfc2VydmVyX3Jl bW92ZQoKU29ja2V0RGF0YSAqIChoZXJlYWZ0ZXIsIFNEKSBhcmUga2VwdCBpbiB0d28gcGxhY2Vz OiB0aGUgVmFsaWRTb2NrcwprbGlzdCAod2hlcmUgdGhleSBhcmUgYWRkZWQgaW1tZWRpYXRlbHkg dXBvbiBjcmVhdGlvbiksIGFuZCBzb21ldGltZXMgaW4KYSBTZXJ2ZXJfdCdzIHF1ZXVlIGRsaXN0 LgoKVGhlIGJ1ZyBvY2N1cnMgd2hlbiB0aGUgZm9sbG93aW5nIGV2ZW50cyBoYXBwZW4gaW4gc2Vx dWVuY2U6CjEuIEh0dHBfc29ja19uZXcgY3JlYXRlcyBhIG5ldyBTRCwgYW5kIGFkZHMgaXQgdG8g dGhlIFZhbGlkU29ja3MgbGlzdC4KMi4gVGhlIFNEIGlzIHF1ZXVlZCB0byBhIHNlcnZlci4KMy4g VGhlIHNlcnZlciBpcyByZW1vdmVkIHZpYSBIdHRwX3NlcnZlcl9yZW1vdmUgb3IKICAgSHR0cF9z ZXJ2ZXJzX3JlbW92ZV9hbGwuIFRoZSBidWdneSBpbXBsZW1lbnRhdGlvbiB1bmNvbmRpdGlvbmFs bHkKICAgZEZyZWVzIGFsbCBTRCdzIHF1ZXVlZCB0byB0aGUgc2VydmVyLCBsZWF2aW5nIGRhbmds aW5nIHBvaW50ZXJzIGluCiAgIHRoZSBWYWxpZFNvY2tzIGtsaXN0Lgo0LiBUaGUgU0QncyBTS2V5 IGlzIG5vIGxvbmdlciBuZWVkZWQsIHNvIEh0dHBfc29ja2V0X2ZyZWUgaXMgY2FsbGVkLgogICBI dHRwX3NvY2tldF9mcmVlIHJlYWRzIHRoZSBTRCBwb2ludGVyIGZyb20gVmFsaWRTb2NrcywgYW5k IHJlYWRzIHRoZQogICBmbGFncyBmcm9tIHRoZSBkYW5nbGluZyBwb2ludGVyIChrYS1ib29tKS4K ClRoaXMgY29tbWl0IG1vZGlmaWVzIHN0ZXAgMyB0byBvbmx5IGZyZWUgU0QgdGhhdCBpcyBubyBs b25nZXIgdmFsaWQgKG5vCmxvbmdlciBpbnNpZGUgb2Yga2xpc3QgVmFsaWRTb2NrcykgYnkgY2hl Y2tpbmcgZm9yIGZsYWcKSFRUUF9TT0NLRVRfVE9fQkVfRlJFRUQuCi0tLQogc3JjL0lPL2h0dHAu YyB8IDEyICsrKysrKysrKy0tLQogMSBmaWxlIGNoYW5nZWQsIDkgaW5zZXJ0aW9ucygrKSwgMyBk ZWxldGlvbnMoLSkKCmRpZmYgLS1naXQgYS9zcmMvSU8vaHR0cC5jIGIvc3JjL0lPL2h0dHAuYwpp bmRleCA0ZDk5MDJmMi4uOGVjMDcxNDAgMTAwNjQ0Ci0tLSBhL3NyYy9JTy9odHRwLmMKKysrIGIv c3JjL0lPL2h0dHAuYwpAQCAtMTA0NSw2ICsxMDQ1LDggQEAgdm9pZCBhX0h0dHBfY2NjKGludCBP cCwgaW50IEJyYW5jaCwgaW50IERpciwgQ2hhaW5MaW5rICpJbmZvLAogICovCiBzdGF0aWMgdm9p ZCBIdHRwX3NvY2tldF9lbnF1ZXVlKFNlcnZlcl90ICpzcnYsIFNvY2tldERhdGFfdCogc29jaykK IHsKKyAgIGFzc2VydCgoInNvY2sgY2Fubm90IGJlbG9uZyB0byBtb3JlIHRoYW4gb25lIHF1ZXVl IiwgKHNvY2stPmZsYWdzICYgSFRUUF9TT0NLRVRfUVVFVUVEKSA9PSAwKSk7CisKICAgIHNvY2st PmZsYWdzIHw9IEhUVFBfU09DS0VUX1FVRVVFRDsKIAogICAgaWYgKChzb2NrLT53ZWItPmZsYWdz ICYgV0VCX0ltYWdlKSA9PSAwKSB7CkBAIC0xMDkyLDcgKzEwOTQsOSBAQCBzdGF0aWMgdm9pZCBI dHRwX3NlcnZlcl9yZW1vdmUoU2VydmVyX3QgKnNydikKIAogICAgd2hpbGUgKChzZCA9IGRMaXN0 X250aF9kYXRhKHNydi0+cXVldWUsIDApKSkgewogICAgICAgZExpc3RfcmVtb3ZlX2Zhc3Qoc3J2 LT5xdWV1ZSwgc2QpOwotICAgICAgZEZyZWUoc2QpOworICAgICAgc2QtPmZsYWdzICY9IH5IVFRQ X1NPQ0tFVF9RVUVVRUQ7CisgICAgICBpZiAoc2QtPmZsYWdzICYgSFRUUF9TT0NLRVRfVE9fQkVf RlJFRUQpCisgICAgICAgICBkRnJlZShzZCk7CiAgICB9CiAgICBkTGlzdF9mcmVlKHNydi0+cXVl dWUpOwogICAgZExpc3RfcmVtb3ZlX2Zhc3Qoc2VydmVycywgc3J2KTsKQEAgLTExMDgsOCArMTEx MiwxMCBAQCBzdGF0aWMgdm9pZCBIdHRwX3NlcnZlcnNfcmVtb3ZlX2FsbCh2b2lkKQogICAgd2hp bGUgKGRMaXN0X2xlbmd0aChzZXJ2ZXJzKSA+IDApIHsKICAgICAgIHNydiA9IChTZXJ2ZXJfdCop IGRMaXN0X250aF9kYXRhKHNlcnZlcnMsIDApOwogICAgICAgd2hpbGUgKChzZCA9IGRMaXN0X250 aF9kYXRhKHNydi0+cXVldWUsIDApKSkgewotICAgICAgICAgZExpc3RfcmVtb3ZlKHNydi0+cXVl dWUsIHNkKTsKLSAgICAgICAgIGRGcmVlKHNkKTsKKyAgICAgICAgIGRMaXN0X3JlbW92ZV9mYXN0 KHNydi0+cXVldWUsIHNkKTsKKyAgICAgICAgIHNkLT5mbGFncyAmPSB+SFRUUF9TT0NLRVRfUVVF VUVEOworICAgICAgICAgaWYgKHNkLT5mbGFncyAmIEhUVFBfU09DS0VUX1RPX0JFX0ZSRUVEKQor ICAgICAgICAgICAgZEZyZWUoc2QpOwogICAgICAgfQogICAgICAgSHR0cF9zZXJ2ZXJfcmVtb3Zl KHNydik7CiAgICB9Ci0tIAoyLjUxLjIKCg== --000000000000a1593a06493ae7f0 Content-Type: text/plain; charset="us-ascii" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Content-Disposition: inline _______________________________________________ Dillo-dev mailing list -- dillo-dev-lx9mn2B4QYRWk0Htik3J/[email protected] To unsubscribe send an email to dillo-dev-leave-lx9mn2B4QYRWk0Htik3J/[email protected] --000000000000a1593a06493ae7f0--