From nobody Tue Apr 16 10:05:47 2024 Delivered-To: importer@patchew.org Received-SPF: pass (zohomail.com: domain of redhat.com designates 216.205.24.124 as permitted sender) client-ip=216.205.24.124; envelope-from=libvir-list-bounces@redhat.com; helo=us-smtp-delivery-124.mimecast.com; Authentication-Results: mx.zohomail.com; spf=pass (zohomail.com: domain of redhat.com designates 216.205.24.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com ARC-Seal: i=1; a=rsa-sha256; t=1605645962; cv=none; d=zohomail.com; s=zohoarc; b=W8E6GUl20gZil0mZLU+ktVCdXvQzx2CsQLdibQmqj89qFzbiAT8cA8jVF1Al80+Njv22lqEVunFZWymn0kpGNUx7ZnJmEbu28KP8DSVy9MwKeadoUgKXOeLkwo+VngkpRfI96EYZJk/x2ufIBJIDM+69gpFgqmeu7o4zxWE5IvA= ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=zohomail.com; s=zohoarc; t=1605645962; h=Content-Type:Date:From:List-Subscribe:List-Post:List-Id:List-Archive:List-Help:List-Unsubscribe:MIME-Version:Message-ID:Sender:Subject:To; bh=5lYWi2JU/dmmTdQCGuo87toYLimtrUQxCe/j2UtECtI=; b=RxrLKSP8RVmCh7kzrXi2+cimN1NjT6LNOLf0HO+e8g+iKjlWSlevQJLZKaJbpXKZskHE6yH9g4UGan0VwgvMXk+J+81MQQ/cdZ3uZY/YFrybDwMhyg9NTp84+/tjjRNncB+chOnQxvackLBgaxoxoxQxq9COYK6pmiNMZg8imak= ARC-Authentication-Results: i=1; mx.zohomail.com; spf=pass (zohomail.com: domain of redhat.com designates 216.205.24.124 as permitted sender) smtp.mailfrom=libvir-list-bounces@redhat.com Return-Path: Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [216.205.24.124]) by mx.zohomail.com with SMTPS id 160564596217747.114919181451455; Tue, 17 Nov 2020 12:46:02 -0800 (PST) Received: from mimecast-mx01.redhat.com (mimecast-mx01.redhat.com [209.132.183.4]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-481-mu3AsRnZNHG6o-B3QIslNg-1; Tue, 17 Nov 2020 15:45:57 -0500 Received: from smtp.corp.redhat.com (int-mx06.intmail.prod.int.phx2.redhat.com [10.5.11.16]) (using TLSv1.2 with cipher AECDH-AES256-SHA (256/256 bits)) (No client certificate requested) by mimecast-mx01.redhat.com (Postfix) with ESMTPS id 57373802B46; Tue, 17 Nov 2020 20:45:50 +0000 (UTC) Received: from colo-mx.corp.redhat.com (colo-mx02.intmail.prod.int.phx2.redhat.com [10.5.11.21]) by smtp.corp.redhat.com (Postfix) with ESMTPS id C143B5C1CF; Tue, 17 Nov 2020 20:45:48 +0000 (UTC) Received: from lists01.pubmisc.prod.ext.phx2.redhat.com (lists01.pubmisc.prod.ext.phx2.redhat.com [10.5.19.33]) by colo-mx.corp.redhat.com (Postfix) with ESMTP id 80BD79977; Tue, 17 Nov 2020 20:45:44 +0000 (UTC) Received: from smtp.corp.redhat.com (int-mx05.intmail.prod.int.rdu2.redhat.com [10.11.54.5]) by lists01.pubmisc.prod.ext.phx2.redhat.com (8.13.8/8.13.8) with ESMTP id 0AHKjfP6008729 for ; Tue, 17 Nov 2020 15:45:42 -0500 Received: by smtp.corp.redhat.com (Postfix) id BFD27ADF60; Tue, 17 Nov 2020 20:45:41 +0000 (UTC) Received: from mimecast-mx02.redhat.com (mimecast02.extmail.prod.ext.rdu2.redhat.com [10.11.55.18]) by smtp.corp.redhat.com (Postfix) with ESMTPS id B8468AC97E for ; Tue, 17 Nov 2020 20:45:39 +0000 (UTC) Received: from us-smtp-1.mimecast.com (us-smtp-delivery-1.mimecast.com [205.139.110.120]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-SHA384 (256/256 bits)) (No client certificate requested) by mimecast-mx02.redhat.com (Postfix) with ESMTPS id 3D5458007A4 for ; Tue, 17 Nov 2020 20:45:39 +0000 (UTC) Received: from mail-oi1-f176.google.com (mail-oi1-f176.google.com [209.85.167.176]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-28-PdH-zkfsMTi-1hQ4sXfzaw-1; Tue, 17 Nov 2020 15:45:35 -0500 Received: by mail-oi1-f176.google.com with SMTP id t143so24050192oif.10 for ; Tue, 17 Nov 2020 12:45:35 -0800 (PST) X-MC-Unique: mu3AsRnZNHG6o-B3QIslNg-1 X-MC-Unique: PdH-zkfsMTi-1hQ4sXfzaw-1 X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:from:date:message-id:subject:to; bh=AmW2yH57GiGKt5fKG1YoOWlcZSHIyPvXnIsoj0Ld0O8=; b=WIcQ+LLhiYDy08VEL2Yvcrra8B9qs9SC3f5pUQ69P6H0q6ybYCCaRBOGH/vzEkyume p/6rYbMXMF+T+DZScNc+Ul9P4oc07A74oh7xkLS302t2gBq28x/PV3M4ogoGFFqyVYH/ ESl/oopDuEJr4esGuCfH6ORq61Y0nRBF0N0PdJvWCztaYFDe0lPjFwZUFkegcPpoM16i z4H3fyOzcYok4mpnKpV0NcC/tFlsqOymNnSJYf+niOD9v4tnako12+6MoY5KnmC2Z91q f+ZlJj3HngXbnFgi6muzl8m0FmUAUsjXXS284rVYWHuLie/kJCvs6bW5NukSSLSsk8bY W1uw== X-Gm-Message-State: AOAM533gJjwEuyt0FAOyU+mDj8AZQPKq1K/QhU3IGRqep8mNQ3PdvaI2 VJuSQiv/M53q9mZ1WgFuuZb0Do1l7j16rz1/SefulXQqD+Dy0A== X-Google-Smtp-Source: ABdhPJzOXw/ajakCAvc+uiVHZt84rAECmjeD73pGDG7KN4+q7Np7tn+RYYOSGCfM+UtNz3MuR7nLVtU0wm9PMLCgbtI= X-Received: by 2002:a54:4704:: with SMTP id k4mr659354oik.39.1605645933570; Tue, 17 Nov 2020 12:45:33 -0800 (PST) MIME-Version: 1.0 From: Barrett J Schonefeld Date: Tue, 17 Nov 2020 14:45:22 -0600 Message-ID: Subject: [PATCH] util: convert char pointers to use g_autofree To: libvir-list@redhat.com X-Mimecast-Impersonation-Protect: Policy=CLT - Impersonation Protection Definition; Similar Internal Domain=false; Similar Monitored External Domain=false; Custom External Domain=false; Mimecast External Domain=false; Newly Observed Domain=false; Internal User Name=false; Custom Display Name List=false; Reply-to Address Mismatch=false; Targeted Threat Dictionary=false; Mimecast Threat Dictionary=false; Custom Threat Dictionary=false X-Scanned-By: MIMEDefang 2.79 on 10.11.54.5 X-loop: libvir-list@redhat.com X-BeenThere: libvir-list@redhat.com X-Mailman-Version: 2.1.12 Precedence: junk List-Id: Development discussions about the libvirt library & tools List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Sender: libvir-list-bounces@redhat.com Errors-To: libvir-list-bounces@redhat.com X-Scanned-By: MIMEDefang 2.79 on 10.5.11.16 Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=libvir-list-bounces@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Content-Type: multipart/alternative; boundary="00000000000081844b05b45393e7" Content-Transfer-Encoding: quoted-printable --00000000000081844b05b45393e7 MIME-Version: 1.0 Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 PkZyb20gODJmOTkyYzdmZjRlZjU5NjgyZjQyYzg2M2ZjYTI0MmRkODQyMDhmOSBNb24gU2VwIDE3 IDAwOjAwOjAwIDIwMDEKRnJvbTogQmFycmV0dCBTY2hvbmVmZWxkIDxic2Nob25leUB1dGV4YXMu ZWR1PgpEYXRlOiBNb24sIDkgTm92IDIwMjAgMTY6MDc6MjUgLTA2MDAKU3ViamVjdDogW1BBVENI XSB1dGlsOiBjb252ZXJ0IGNoYXIgcG9pbnRlcnMgdG8gdXNlIGdfYXV0b2ZyZWUKCmFkZGl0aW9u YWwgY29udmVyc2lvbnMgdG8gdGhlIEdMaWIgQVBJIGluIHNyYy91dGlsIHBlciBpc3N1ZSAjMTEu CgpSZWxhdGVkIGlzc3VlOiBodHRwczovL2dpdGxhYi5jb20vbGlidmlydC9saWJ2aXJ0Ly0vaXNz dWVzLzExCgpTaWduZWQtb2ZmLWJ5OiBCYXJyZXR0IFNjaG9uZWZlbGQgPGJzY2hvbmV5QHV0ZXhh cy5lZHU+Ci0tLQogc3JjL3V0aWwvdmlyY2dyb3VwdjEuYyAgICAgICAgICAgfCAgMyArLQogc3Jj L3V0aWwvdmlyZG5zbWFzcS5jICAgICAgICAgICAgfCA0MyArKysrKysrKy0tLS0tLS0tLS0tLS0K IHNyYy91dGlsL3ZpcmZpbGUuYyAgICAgICAgICAgICAgIHwgIDkgKystLS0KIHNyYy91dGlsL3Zp cmhvc3RjcHUuYyAgICAgICAgICAgIHwgIDQgKy0KIHNyYy91dGlsL3ZpcmxvY2tzcGFjZS5jICAg ICAgICAgIHwgIDYgKy0tCiBzcmMvdXRpbC92aXJsb2cuYyAgICAgICAgICAgICAgICB8IDEyICsr LS0tLQogc3JjL3V0aWwvdmlybWFjbWFwLmMgICAgICAgICAgICAgfCAgMyArLQogc3JjL3V0aWwv dmlybmV0ZGV2YmFuZHdpZHRoLmMgICAgfCA0OCArKysrKysrKy0tLS0tLS0tLS0tLS0tLQogc3Jj L3V0aWwvdmlycmVzY3RybC5jICAgICAgICAgICAgfCAyNSArKysrLS0tLS0tLS0KIHNyYy91dGls L3ZpcnJvdGF0aW5nZmlsZS5jICAgICAgIHwgMTEgKystLS0tCiBzcmMvdXRpbC92aXJzY3NpaG9z dC5jICAgICAgICAgICB8IDI1ICsrKysrLS0tLS0tLQogc3JjL3V0aWwvdmlyc2VjcmV0LmMgICAg ICAgICAgICAgfCAxNCArKystLS0tCiBzcmMvdXRpbC92aXJzdG9yYWdlZW5jcnlwdGlvbi5jICB8 IDE5ICsrKy0tLS0tLQogc3JjL3V0aWwvdmlyc3RvcmFnZWZpbGViYWNrZW5kLmMgfCAgNCArLQog c3JjL3V0aWwvdmlyc3lzaW5mby5jICAgICAgICAgICAgfCAxOCArKystLS0tLS0KIHNyYy91dGls L3ZpcnVyaS5jICAgICAgICAgICAgICAgIHwgIDcgKy0tLQogc3JjL3V0aWwvdmlydXRpbC5jICAg ICAgICAgICAgICAgfCA2NiArKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLQogc3JjL3V0 aWwvdmlydmhiYS5jICAgICAgICAgICAgICAgfCA1NyArKysrKysrKysrLS0tLS0tLS0tLS0tLS0t LS0KIHNyYy91dGlsL3ZpcnhtbC5jICAgICAgICAgICAgICAgIHwgIDcgKy0tLQogMTkgZmlsZXMg Y2hhbmdlZCwgMTMwIGluc2VydGlvbnMoKyksIDI1MSBkZWxldGlvbnMoLSkKCmRpZmYgLS1naXQg YS9zcmMvdXRpbC92aXJjZ3JvdXB2MS5jIGIvc3JjL3V0aWwvdmlyY2dyb3VwdjEuYwppbmRleCA3 MzFlOWQ2MWQ0Li45ODRjZDUwNDA5IDEwMDY0NAotLS0gYS9zcmMvdXRpbC92aXJjZ3JvdXB2MS5j CisrKyBiL3NyYy91dGlsL3ZpcmNncm91cHYxLmMKQEAgLTE1NDksNyArMTU0OSw3IEBAIHZpckNn cm91cFYxR2V0TWVtb3J5U3RhdCh2aXJDZ3JvdXBQdHIgZ3JvdXAsCiAgICAgICAgICAgICAgICAg ICAgICAgICAgdW5zaWduZWQgbG9uZyBsb25nICp1bmV2aWN0YWJsZSkKIHsKICAgICBpbnQgcmV0 ID0zRCAtMTsKLSAgICBjaGFyICpzdGF0ID0zRCBOVUxMOworICAgIGdfYXV0b2ZyZWUgY2hhciAq c3RhdCA9M0QgTlVMTDsKICAgICBjaGFyICpsaW5lID0zRCBOVUxMOwogICAgIHVuc2lnbmVkIGxv bmcgbG9uZyBjYWNoZVZhbCA9M0QgMDsKICAgICB1bnNpZ25lZCBsb25nIGxvbmcgYWN0aXZlQW5v blZhbCA9M0QgMDsKQEAgLTE2MTQsNyArMTYxNCw2IEBAIHZpckNncm91cFYxR2V0TWVtb3J5U3Rh dCh2aXJDZ3JvdXBQdHIgZ3JvdXAsCiAgICAgcmV0ID0zRCAwOwoKICBjbGVhbnVwOgotICAgIFZJ Ul9GUkVFKHN0YXQpOwogICAgIHJldHVybiByZXQ7CiB9CgpkaWZmIC0tZ2l0IGEvc3JjL3V0aWwv dmlyZG5zbWFzcS5jIGIvc3JjL3V0aWwvdmlyZG5zbWFzcS5jCmluZGV4IDkwMzBmOTIxOGEuLjkz YmM0YTEyOWYgMTAwNjQ0Ci0tLSBhL3NyYy91dGlsL3ZpcmRuc21hc3EuYworKysgYi9zcmMvdXRp bC92aXJkbnNtYXNxLmMKQEAgLTE2NCw3ICsxNjQsNyBAQCBhZGRuaG9zdHNXcml0ZShjb25zdCBj aGFyICpwYXRoLAogICAgICAgICAgICAgICAgZG5zbWFzcUFkZG5Ib3N0ICpob3N0cywKICAgICAg ICAgICAgICAgIHVuc2lnbmVkIGludCBuaG9zdHMpCiB7Ci0gICAgY2hhciAqdG1wOworICAgIGdf YXV0b2ZyZWUgY2hhciAqdG1wID0zRCBOVUxMOwogICAgIEZJTEUgKmY7CiAgICAgYm9vbCBpc3Rt cCA9M0QgdHJ1ZTsKICAgICBzaXplX3QgaSwgajsKQEAgLTE4MCw3ICsxODAsNyBAQCBhZGRuaG9z dHNXcml0ZShjb25zdCBjaGFyICpwYXRoLAogICAgICAgICBpc3RtcCA9M0QgZmFsc2U7CiAgICAg ICAgIGlmICghKGYgPTNEIGZvcGVuKHBhdGgsICJ3IikpKSB7CiAgICAgICAgICAgICByYyA9M0Qg LWVycm5vOwotICAgICAgICAgICAgZ290byBjbGVhbnVwOworICAgICAgICAgICAgcmV0dXJuIHJj OwogICAgICAgICB9CiAgICAgfQoKQEAgLTE5Miw3ICsxOTIsNyBAQCBhZGRuaG9zdHNXcml0ZShj b25zdCBjaGFyICpwYXRoLAogICAgICAgICAgICAgaWYgKGlzdG1wKQogICAgICAgICAgICAgICAg IHVubGluayh0bXApOwoKLSAgICAgICAgICAgIGdvdG8gY2xlYW51cDsKKyAgICAgICAgICAgIHJl dHVybiByYzsKICAgICAgICAgfQoKICAgICAgICAgZm9yIChqID0zRCAwOyBqIDwgaG9zdHNbaV0u bmhvc3RuYW1lczsgaisrKSB7CkBAIC0yMDMsNyArMjAzLDcgQEAgYWRkbmhvc3RzV3JpdGUoY29u c3QgY2hhciAqcGF0aCwKICAgICAgICAgICAgICAgICBpZiAoaXN0bXApCiAgICAgICAgICAgICAg ICAgICAgIHVubGluayh0bXApOwoKLSAgICAgICAgICAgICAgICBnb3RvIGNsZWFudXA7CisgICAg ICAgICAgICAgICAgcmV0dXJuIHJjOwogICAgICAgICAgICAgfQogICAgICAgICB9CgpAQCAtMjE0 LDI0ICsyMTQsMjEgQEAgYWRkbmhvc3RzV3JpdGUoY29uc3QgY2hhciAqcGF0aCwKICAgICAgICAg ICAgIGlmIChpc3RtcCkKICAgICAgICAgICAgICAgICB1bmxpbmsodG1wKTsKCi0gICAgICAgICAg ICBnb3RvIGNsZWFudXA7CisgICAgICAgICAgICByZXR1cm4gcmM7CiAgICAgICAgIH0KICAgICB9 CgogICAgIGlmIChWSVJfRkNMT1NFKGYpID0zRD0zRCBFT0YpIHsKICAgICAgICAgcmMgPTNEIC1l cnJubzsKLSAgICAgICAgZ290byBjbGVhbnVwOworICAgICAgICByZXR1cm4gcmM7CiAgICAgfQoK ICAgICBpZiAoaXN0bXAgJiYgcmVuYW1lKHRtcCwgcGF0aCkgPCAwKSB7CiAgICAgICAgIHJjID0z RCAtZXJybm87CiAgICAgICAgIHVubGluayh0bXApOwotICAgICAgICBnb3RvIGNsZWFudXA7Cisg ICAgICAgIHJldHVybiByYzsKICAgICB9CgotIGNsZWFudXA6Ci0gICAgVklSX0ZSRUUodG1wKTsK LQogICAgIHJldHVybiByYzsKIH0KCkBAIC0zNjQsNyArMzYxLDcgQEAgaG9zdHNmaWxlV3JpdGUo Y29uc3QgY2hhciAqcGF0aCwKICAgICAgICAgICAgICAgIGRuc21hc3FEaGNwSG9zdCAqaG9zdHMs CiAgICAgICAgICAgICAgICB1bnNpZ25lZCBpbnQgbmhvc3RzKQogewotICAgIGNoYXIgKnRtcDsK KyAgICBnX2F1dG9mcmVlIGNoYXIgKnRtcCA9M0QgTlVMTDsKICAgICBGSUxFICpmOwogICAgIGJv b2wgaXN0bXAgPTNEIHRydWU7CiAgICAgc2l6ZV90IGk7CkBAIC0zODAsNyArMzc3LDcgQEAgaG9z dHNmaWxlV3JpdGUoY29uc3QgY2hhciAqcGF0aCwKICAgICAgICAgaXN0bXAgPTNEIGZhbHNlOwog ICAgICAgICBpZiAoIShmID0zRCBmb3BlbihwYXRoLCAidyIpKSkgewogICAgICAgICAgICAgcmMg PTNEIC1lcnJubzsKLSAgICAgICAgICAgIGdvdG8gY2xlYW51cDsKKyAgICAgICAgICAgIHJldHVy biByYzsKICAgICAgICAgfQogICAgIH0KCkBAIC0zOTIsMjQgKzM4OSwyMSBAQCBob3N0c2ZpbGVX cml0ZShjb25zdCBjaGFyICpwYXRoLAogICAgICAgICAgICAgaWYgKGlzdG1wKQogICAgICAgICAg ICAgICAgIHVubGluayh0bXApOwoKLSAgICAgICAgICAgIGdvdG8gY2xlYW51cDsKKyAgICAgICAg ICAgIHJldHVybiByYzsKICAgICAgICAgfQogICAgIH0KCiAgICAgaWYgKFZJUl9GQ0xPU0UoZikg PTNEPTNEIEVPRikgewogICAgICAgICByYyA9M0QgLWVycm5vOwotICAgICAgICBnb3RvIGNsZWFu dXA7CisgICAgICAgIHJldHVybiByYzsKICAgICB9CgogICAgIGlmIChpc3RtcCAmJiByZW5hbWUo dG1wLCBwYXRoKSA8IDApIHsKICAgICAgICAgcmMgPTNEIC1lcnJubzsKICAgICAgICAgdW5saW5r KHRtcCk7Ci0gICAgICAgIGdvdG8gY2xlYW51cDsKKyAgICAgICAgcmV0dXJuIHJjOwogICAgIH0K Ci0gY2xlYW51cDoKLSAgICBWSVJfRlJFRSh0bXApOwotCiAgICAgcmV0dXJuIHJjOwogfQoKQEAg LTY4NiwxNSArNjgwLDEzIEBAIHN0YXRpYyBpbnQKIGRuc21hc3FDYXBzU2V0RnJvbUZpbGUoZG5z bWFzcUNhcHNQdHIgY2FwcywgY29uc3QgY2hhciAqcGF0aCkKIHsKICAgICBpbnQgcmV0ID0zRCAt MTsKLSAgICBjaGFyICpidWYgPTNEIE5VTEw7CisgICAgZ19hdXRvZnJlZSBjaGFyICpidWYgPTNE IE5VTEw7CgogICAgIGlmICh2aXJGaWxlUmVhZEFsbChwYXRoLCAxMDI0ICogMTAyNCwgJmJ1Zikg PCAwKQotICAgICAgICBnb3RvIGNsZWFudXA7CisgICAgICAgIHJldHVybiByZXQ7CgogICAgIHJl dCA9M0QgZG5zbWFzcUNhcHNTZXRGcm9tQnVmZmVyKGNhcHMsIGJ1Zik7CgotIGNsZWFudXA6Ci0g ICAgVklSX0ZSRUUoYnVmKTsKICAgICByZXR1cm4gcmV0OwogfQoKQEAgLTcwNCw3ICs2OTYsOSBA QCBkbnNtYXNxQ2Fwc1JlZnJlc2hJbnRlcm5hbChkbnNtYXNxQ2Fwc1B0ciBjYXBzLCBib29sIGZv PQpyY2UpCiAgICAgaW50IHJldCA9M0QgLTE7CiAgICAgc3RydWN0IHN0YXQgc2I7CiAgICAgdmly Q29tbWFuZFB0ciBjbWQgPTNEIE5VTEw7Ci0gICAgY2hhciAqaGVscCA9M0QgTlVMTCwgKnZlcnNp b24gPTNEIE5VTEwsICpjb21wbGV0ZSA9M0QgTlVMTDsKKyAgICBnX2F1dG9mcmVlIGNoYXIgKmhl bHAgPTNEIE5VTEw7CisgICAgZ19hdXRvZnJlZSBjaGFyICp2ZXJzaW9uID0zRCBOVUxMOworICAg IGdfYXV0b2ZyZWUgY2hhciAqY29tcGxldGUgPTNEIE5VTEw7CgogICAgIGlmICghY2FwcyB8fCBj YXBzLT5ub1JlZnJlc2gpCiAgICAgICAgIHJldHVybiAwOwpAQCAtNzQ5LDkgKzc0Myw2IEBAIGRu c21hc3FDYXBzUmVmcmVzaEludGVybmFsKGRuc21hc3FDYXBzUHRyIGNhcHMsIGJvb2wgZm89CnJj ZSkKCiAgY2xlYW51cDoKICAgICB2aXJDb21tYW5kRnJlZShjbWQpOwotICAgIFZJUl9GUkVFKGhl bHApOwotICAgIFZJUl9GUkVFKHZlcnNpb24pOwotICAgIFZJUl9GUkVFKGNvbXBsZXRlKTsKICAg ICByZXR1cm4gcmV0OwogfQoKZGlmZiAtLWdpdCBhL3NyYy91dGlsL3ZpcmZpbGUuYyBiL3NyYy91 dGlsL3ZpcmZpbGUuYwppbmRleCBmNTcyNzJjYTJmLi4zODIwN2YxOTQ4IDEwMDY0NAotLS0gYS9z cmMvdXRpbC92aXJmaWxlLmMKKysrIGIvc3JjL3V0aWwvdmlyZmlsZS5jCkBAIC0zMzI4LDkgKzMz MjgsOSBAQCB2aXJGaWxlSXNTaGFyZWRGaXhGVVNFKGNvbnN0IGNoYXIgKnBhdGgsCiAgICAgRklM RSAqZiA9M0QgTlVMTDsKICAgICBzdHJ1Y3QgbW50ZW50IG1iOwogICAgIGNoYXIgbW50YnVmWzEw MjRdOwotICAgIGNoYXIgKm1udERpciA9M0QgTlVMTDsKLSAgICBjaGFyICptbnRUeXBlID0zRCBO VUxMOwotICAgIGNoYXIgKmNhbm9uUGF0aCA9M0QgTlVMTDsKKyAgICBnX2F1dG9mcmVlIGNoYXIg Km1udERpciA9M0QgTlVMTDsKKyAgICBnX2F1dG9mcmVlIGNoYXIgKm1udFR5cGUgPTNEIE5VTEw7 CisgICAgZ19hdXRvZnJlZSBjaGFyICpjYW5vblBhdGggPTNEIE5VTEw7CiAgICAgc2l6ZV90IG1h eE1hdGNoaW5nID0zRCAwOwogICAgIGludCByZXQgPTNEIC0xOwoKQEAgLTMzODEsOSArMzM4MSw2 IEBAIHZpckZpbGVJc1NoYXJlZEZpeEZVU0UoY29uc3QgY2hhciAqcGF0aCwKCiAgICAgcmV0ID0z RCAwOwogIGNsZWFudXA6Ci0gICAgVklSX0ZSRUUoY2Fub25QYXRoKTsKLSAgICBWSVJfRlJFRSht bnRUeXBlKTsKLSAgICBWSVJfRlJFRShtbnREaXIpOwogICAgIGVuZG1udGVudChmKTsKICAgICBy ZXR1cm4gcmV0OwogfQpkaWZmIC0tZ2l0IGEvc3JjL3V0aWwvdmlyaG9zdGNwdS5jIGIvc3JjL3V0 aWwvdmlyaG9zdGNwdS5jCmluZGV4IGM1MzFkNjVmODYuLjRmNmMzMzkwY2UgMTAwNjQ0Ci0tLSBh L3NyYy91dGlsL3Zpcmhvc3RjcHUuYworKysgYi9zcmMvdXRpbC92aXJob3N0Y3B1LmMKQEAgLTg3 LDcgKzg3LDcgQEAgdmlySG9zdENQVUdldFN0YXRzRnJlZUJTRChpbnQgY3B1TnVtLAogICAgICAg ICAgICAgICAgICAgICAgICAgICBpbnQgKm5wYXJhbXMpCiB7CiAgICAgY29uc3QgY2hhciAqc3lz Y3RsX25hbWU7Ci0gICAgbG9uZyAqY3B1X3RpbWVzOworICAgIGdfYXV0b2ZyZWUgbG9uZyAqY3B1 X3RpbWVzID0zRCBOVUxMOwogICAgIHN0cnVjdCBjbG9ja2luZm8gY2xraW5mbzsKICAgICBzaXpl X3QgaSwgaiwgY3B1X3RpbWVzX3NpemUsIGNsa2luZm9fc2l6ZTsKICAgICBpbnQgY3B1X3RpbWVz X251bSwgb2Zmc2V0LCBoeiwgc3RhdGh6LCByZXQgPTNEIC0xOwpAQCAtMTcyLDggKzE3Miw2IEBA IHZpckhvc3RDUFVHZXRTdGF0c0ZyZWVCU0QoaW50IGNwdU51bSwKICAgICByZXQgPTNEIDA7Cgog IGNsZWFudXA6Ci0gICAgVklSX0ZSRUUoY3B1X3RpbWVzKTsKLQogICAgIHJldHVybiByZXQ7CiB9 CgpkaWZmIC0tZ2l0IGEvc3JjL3V0aWwvdmlybG9ja3NwYWNlLmMgYi9zcmMvdXRpbC92aXJsb2Nr c3BhY2UuYwppbmRleCBiOTBlMTNmNTA2Li43MWQ1ZGZiODNlIDEwMDY0NAotLS0gYS9zcmMvdXRp bC92aXJsb2Nrc3BhY2UuYworKysgYi9zcmMvdXRpbC92aXJsb2Nrc3BhY2UuYwpAQCAtNTE1LDcg KzUxNSw3IEBAIGludCB2aXJMb2NrU3BhY2VDcmVhdGVSZXNvdXJjZSh2aXJMb2NrU3BhY2VQdHIg bG9ja3NwYWM9CmUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgY2hhciAq cmVzbmFtZSkKIHsKICAgICBpbnQgcmV0ID0zRCAtMTsKLSAgICBjaGFyICpyZXNwYXRoID0zRCBO VUxMOworICAgIGdfYXV0b2ZyZWUgY2hhciAqcmVzcGF0aCA9M0QgTlVMTDsKCiAgICAgVklSX0RF QlVHKCJsb2Nrc3BhY2U9M0QlcCByZXNuYW1lPTNEJXMiLCBsb2Nrc3BhY2UsIHJlc25hbWUpOwoK QEAgLTUzOCw3ICs1MzgsNiBAQCBpbnQgdmlyTG9ja1NwYWNlQ3JlYXRlUmVzb3VyY2UodmlyTG9j a1NwYWNlUHRyIGxvY2tzcGFjPQplLAoKICBjbGVhbnVwOgogICAgIHZpck11dGV4VW5sb2NrKCZs b2Nrc3BhY2UtPmxvY2spOwotICAgIFZJUl9GUkVFKHJlc3BhdGgpOwogICAgIHJldHVybiByZXQ7 CiB9CgpAQCAtNTQ3LDcgKzU0Niw3IEBAIGludCB2aXJMb2NrU3BhY2VEZWxldGVSZXNvdXJjZSh2 aXJMb2NrU3BhY2VQdHIgbG9ja3NwYWM9CmUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgY29uc3QgY2hhciAqcmVzbmFtZSkKIHsKICAgICBpbnQgcmV0ID0zRCAtMTsKLSAgICBjaGFy ICpyZXNwYXRoID0zRCBOVUxMOworICAgIGdfYXV0b2ZyZWUgY2hhciAqcmVzcGF0aCA9M0QgTlVM TDsKCiAgICAgVklSX0RFQlVHKCJsb2Nrc3BhY2U9M0QlcCByZXNuYW1lPTNEJXMiLCBsb2Nrc3Bh Y2UsIHJlc25hbWUpOwoKQEAgLTU3NSw3ICs1NzQsNiBAQCBpbnQgdmlyTG9ja1NwYWNlRGVsZXRl UmVzb3VyY2UodmlyTG9ja1NwYWNlUHRyIGxvY2tzcGFjPQplLAoKICBjbGVhbnVwOgogICAgIHZp ck11dGV4VW5sb2NrKCZsb2Nrc3BhY2UtPmxvY2spOwotICAgIFZJUl9GUkVFKHJlc3BhdGgpOwog ICAgIHJldHVybiByZXQ7CiB9CgpkaWZmIC0tZ2l0IGEvc3JjL3V0aWwvdmlybG9nLmMgYi9zcmMv dXRpbC92aXJsb2cuYwppbmRleCA2YjdhNDUxMmU5Li4yYmY2MDZiOGM1IDEwMDY0NAotLS0gYS9z cmMvdXRpbC92aXJsb2cuYworKysgYi9zcmMvdXRpbC92aXJsb2cuYwpAQCAtNTA1LDggKzUwNSw4 IEBAIHZpckxvZ1ZNZXNzYWdlKHZpckxvZ1NvdXJjZVB0ciBzb3VyY2UsCiAgICAgICAgICAgICAg ICB2YV9saXN0IHZhcmdzKQogewogICAgIHN0YXRpYyBib29sIGxvZ0luaXRNZXNzYWdlU3RkZXJy ID0zRCB0cnVlOwotICAgIGNoYXIgKnN0ciA9M0QgTlVMTDsKLSAgICBjaGFyICptc2cgPTNEIE5V TEw7CisgICAgZ19hdXRvZnJlZSBjaGFyICpzdHIgPTNEIE5VTEw7CisgICAgZ19hdXRvZnJlZSBj aGFyICptc2cgPTNEIE5VTEw7CiAgICAgY2hhciB0aW1lc3RhbXBbVklSX1RJTUVfU1RSSU5HX0JV RkxFTl07CiAgICAgc2l6ZV90IGk7CiAgICAgaW50IHNhdmVkX2Vycm5vID0zRCBlcnJubzsKQEAg LTUyOCw3ICs1MjgsOCBAQCB2aXJMb2dWTWVzc2FnZSh2aXJMb2dTb3VyY2VQdHIgc291cmNlLAog ICAgIGlmIChzb3VyY2UtPnNlcmlhbCA8IHZpckxvZ0ZpbHRlcnNTZXJpYWwpCiAgICAgICAgIHZp ckxvZ1NvdXJjZVVwZGF0ZShzb3VyY2UpOwogICAgIGlmIChwcmlvcml0eSA8IHNvdXJjZS0+cHJp b3JpdHkpCi0gICAgICAgIGdvdG8gY2xlYW51cDsKKyAgICAgICAgZXJybm8gPTNEIHNhdmVkX2Vy cm5vOworICAgICAgICByZXR1cm47CgogICAgIC8qCiAgICAgICogc2VyaWFsaXplIHRoZSBlcnJv ciBtZXNzYWdlLCBhZGQgbGV2ZWwgYW5kIHRpbWVzdGFtcApAQCAtNjAxLDExICs2MDIsNiBAQCB2 aXJMb2dWTWVzc2FnZSh2aXJMb2dTb3VyY2VQdHIgc291cmNlLAogICAgICAgICAgICAgICAgICAg ICAgICAgIHN0ciwgbXNnLCAodm9pZCAqKSBTVERFUlJfRklMRU5PKTsKICAgICB9CiAgICAgdmly TG9nVW5sb2NrKCk7Ci0KLSBjbGVhbnVwOgotICAgIFZJUl9GUkVFKHN0cik7Ci0gICAgVklSX0ZS RUUobXNnKTsKLSAgICBlcnJubyA9M0Qgc2F2ZWRfZXJybm87CiB9CgoKZGlmZiAtLWdpdCBhL3Ny Yy91dGlsL3Zpcm1hY21hcC5jIGIvc3JjL3V0aWwvdmlybWFjbWFwLmMKaW5kZXggZjkwNDdkMGZi MS4uZTY4NzQyZGUxMCAxMDA2NDQKLS0tIGEvc3JjL3V0aWwvdmlybWFjbWFwLmMKKysrIGIvc3Jj L3V0aWwvdmlybWFjbWFwLmMKQEAgLTEyOSw3ICsxMjksNyBAQCBzdGF0aWMgaW50CiB2aXJNYWNN YXBMb2FkRmlsZSh2aXJNYWNNYXBQdHIgbWdyLAogICAgICAgICAgICAgICAgICAgY29uc3QgY2hh ciAqZmlsZSkKIHsKLSAgICBjaGFyICptYXBfc3RyID0zRCBOVUxMOworICAgIGdfYXV0b2ZyZWUg Y2hhciAqbWFwX3N0ciA9M0QgTlVMTDsKICAgICB2aXJKU09OVmFsdWVQdHIgbWFwID0zRCBOVUxM OwogICAgIGludCBtYXBfc3RyX2xlbiA9M0QgMDsKICAgICBzaXplX3QgaTsKQEAgLTE4OSw3ICsx ODksNiBAQCB2aXJNYWNNYXBMb2FkRmlsZSh2aXJNYWNNYXBQdHIgbWdyLAoKICAgICByZXQgPTNE IDA7CiAgY2xlYW51cDoKLSAgICBWSVJfRlJFRShtYXBfc3RyKTsKICAgICB2aXJKU09OVmFsdWVG cmVlKG1hcCk7CiAgICAgcmV0dXJuIHJldDsKIH0KZGlmZiAtLWdpdCBhL3NyYy91dGlsL3Zpcm5l dGRldmJhbmR3aWR0aC5jIGIvc3JjL3V0aWwvdmlybmV0ZGV2YmFuZHdpZHRoLmMKaW5kZXggYzhl YjVjZmM3OS4uMmFlMDNlOGVkYyAxMDA2NDQKLS0tIGEvc3JjL3V0aWwvdmlybmV0ZGV2YmFuZHdp ZHRoLmMKKysrIGIvc3JjL3V0aWwvdmlybmV0ZGV2YmFuZHdpZHRoLmMKQEAgLTEwMiw3ICsxMDIs NyBAQCB2aXJOZXREZXZCYW5kd2lkdGhNYW5pcHVsYXRlRmlsdGVyKGNvbnN0IGNoYXIgKmlmbmFt ZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCBjcmVhdGVfbmV3KQog ewogICAgIGludCByZXQgPTNEIC0xOwotICAgIGNoYXIgKmZpbHRlcl9pZCA9M0QgTlVMTDsKKyAg ICBnX2F1dG9mcmVlIGNoYXIgKmZpbHRlcl9pZCA9M0QgTlVMTDsKICAgICB2aXJDb21tYW5kUHRy IGNtZCA9M0QgTlVMTDsKICAgICB1bnNpZ25lZCBjaGFyIGlmbWFjW1ZJUl9NQUNfQlVGTEVOXTsK ICAgICBjaGFyICptYWNbMl0gPTNEIHtOVUxMLCBOVUxMfTsKQEAgLTE1Nyw3ICsxNTcsNiBAQCB2 aXJOZXREZXZCYW5kd2lkdGhNYW5pcHVsYXRlRmlsdGVyKGNvbnN0IGNoYXIgKmlmbmFtZSwKICBj bGVhbnVwOgogICAgIFZJUl9GUkVFKG1hY1sxXSk7CiAgICAgVklSX0ZSRUUobWFjWzBdKTsKLSAg ICBWSVJfRlJFRShmaWx0ZXJfaWQpOwogICAgIHZpckNvbW1hbmRGcmVlKGNtZCk7CiAgICAgcmV0 dXJuIHJldDsKIH0KQEAgLTE5NSw5ICsxOTQsOSBAQCB2aXJOZXREZXZCYW5kd2lkdGhTZXQoY29u c3QgY2hhciAqaWZuYW1lLAogICAgIGludCByZXQgPTNEIC0xOwogICAgIHZpck5ldERldkJhbmR3 aWR0aFJhdGVQdHIgcnggPTNEIE5VTEwsIHR4ID0zRCBOVUxMOyAvKiBGcm9tIGRvbWFpbiBQT1Y9 CiAqLwogICAgIHZpckNvbW1hbmRQdHIgY21kID0zRCBOVUxMOwotICAgIGNoYXIgKmF2ZXJhZ2Ug PTNEIE5VTEw7Ci0gICAgY2hhciAqcGVhayA9M0QgTlVMTDsKLSAgICBjaGFyICpidXJzdCA9M0Qg TlVMTDsKKyAgICBnX2F1dG9mcmVlIGNoYXIgKmF2ZXJhZ2UgPTNEIE5VTEw7CisgICAgZ19hdXRv ZnJlZSBjaGFyICpwZWFrID0zRCBOVUxMOworICAgIGdfYXV0b2ZyZWUgY2hhciAqYnVyc3QgPTNE IE5VTEw7CgogICAgIGlmICghYmFuZHdpZHRoKSB7CiAgICAgICAgIC8qIG5vdGhpbmcgdG8gYmUg ZW5hYmxlZCAqLwpAQCAtMzg1LDkgKzM4NCw2IEBAIHZpck5ldERldkJhbmR3aWR0aFNldChjb25z dCBjaGFyICppZm5hbWUsCgogIGNsZWFudXA6CiAgICAgdmlyQ29tbWFuZEZyZWUoY21kKTsKLSAg ICBWSVJfRlJFRShhdmVyYWdlKTsKLSAgICBWSVJfRlJFRShwZWFrKTsKLSAgICBWSVJfRlJFRShi dXJzdCk7CiAgICAgcmV0dXJuIHJldDsKIH0KCkBAIC01MzMsMTAgKzUyOSwxMCBAQCB2aXJOZXRE ZXZCYW5kd2lkdGhQbHVnKGNvbnN0IGNoYXIgKmJybmFtZSwKIHsKICAgICBpbnQgcmV0ID0zRCAt MTsKICAgICB2aXJDb21tYW5kUHRyIGNtZCA9M0QgTlVMTDsKLSAgICBjaGFyICpjbGFzc19pZCA9 M0QgTlVMTDsKLSAgICBjaGFyICpxZGlzY19pZCA9M0QgTlVMTDsKLSAgICBjaGFyICpmbG9vciA9 M0QgTlVMTDsKLSAgICBjaGFyICpjZWlsID0zRCBOVUxMOworICAgIGdfYXV0b2ZyZWUgY2hhciAq Y2xhc3NfaWQgPTNEIE5VTEw7CisgICAgZ19hdXRvZnJlZSBjaGFyICpxZGlzY19pZCA9M0QgTlVM TDsKKyAgICBnX2F1dG9mcmVlIGNoYXIgKmZsb29yID0zRCBOVUxMOworICAgIGdfYXV0b2ZyZWUg Y2hhciAqY2VpbCA9M0QgTlVMTDsKICAgICBjaGFyIGlmbWFjU3RyW1ZJUl9NQUNfU1RSSU5HX0JV RkxFTl07CgogICAgIGlmIChpZCA8PTNEIDIpIHsKQEAgLTU4NiwxMCArNTgyLDYgQEAgdmlyTmV0 RGV2QmFuZHdpZHRoUGx1Zyhjb25zdCBjaGFyICpicm5hbWUsCiAgICAgcmV0ID0zRCAwOwoKICBj bGVhbnVwOgotICAgIFZJUl9GUkVFKGNlaWwpOwotICAgIFZJUl9GUkVFKGZsb29yKTsKLSAgICBW SVJfRlJFRShxZGlzY19pZCk7Ci0gICAgVklSX0ZSRUUoY2xhc3NfaWQpOwogICAgIHZpckNvbW1h bmRGcmVlKGNtZCk7CiAgICAgcmV0dXJuIHJldDsKIH0KQEAgLTYxMCw4ICs2MDIsOCBAQCB2aXJO ZXREZXZCYW5kd2lkdGhVbnBsdWcoY29uc3QgY2hhciAqYnJuYW1lLAogICAgIGludCByZXQgPTNE IC0xOwogICAgIGludCBjbWRfcmV0ID0zRCAwOwogICAgIHZpckNvbW1hbmRQdHIgY21kID0zRCBO VUxMOwotICAgIGNoYXIgKmNsYXNzX2lkID0zRCBOVUxMOwotICAgIGNoYXIgKnFkaXNjX2lkID0z RCBOVUxMOworICAgIGdfYXV0b2ZyZWUgY2hhciAqY2xhc3NfaWQgPTNEIE5VTEw7CisgICAgZ19h dXRvZnJlZSBjaGFyICpxZGlzY19pZCA9M0QgTlVMTDsKCiAgICAgaWYgKGlkIDw9M0QgMikgewog ICAgICAgICB2aXJSZXBvcnRFcnJvcihWSVJfRVJSX0lOVEVSTkFMX0VSUk9SLCBfKCJJbnZhbGlk IGNsYXNzIElEICVkIiksIGk9CmQpOwpAQCAtNjQ1LDggKzYzNyw2IEBAIHZpck5ldERldkJhbmR3 aWR0aFVucGx1Zyhjb25zdCBjaGFyICpicm5hbWUsCiAgICAgcmV0ID0zRCAwOwoKICBjbGVhbnVw OgotICAgIFZJUl9GUkVFKHFkaXNjX2lkKTsKLSAgICBWSVJfRlJFRShjbGFzc19pZCk7CiAgICAg dmlyQ29tbWFuZEZyZWUoY21kKTsKICAgICByZXR1cm4gcmV0OwogfQpAQCAtNjczLDkgKzY2Myw5 IEBAIHZpck5ldERldkJhbmR3aWR0aFVwZGF0ZVJhdGUoY29uc3QgY2hhciAqaWZuYW1lLAogewog ICAgIGludCByZXQgPTNEIC0xOwogICAgIHZpckNvbW1hbmRQdHIgY21kID0zRCBOVUxMOwotICAg IGNoYXIgKmNsYXNzX2lkID0zRCBOVUxMOwotICAgIGNoYXIgKnJhdGUgPTNEIE5VTEw7Ci0gICAg Y2hhciAqY2VpbCA9M0QgTlVMTDsKKyAgICBnX2F1dG9mcmVlIGNoYXIgKmNsYXNzX2lkID0zRCBO VUxMOworICAgIGdfYXV0b2ZyZWUgY2hhciAqcmF0ZSA9M0QgTlVMTDsKKyAgICBnX2F1dG9mcmVl IGNoYXIgKmNlaWwgPTNEIE5VTEw7CgogICAgIGNsYXNzX2lkID0zRCBnX3N0cmR1cF9wcmludGYo IjE6JXgiLCBpZCk7CiAgICAgcmF0ZSA9M0QgZ19zdHJkdXBfcHJpbnRmKCIlbGx1a2JwcyIsIG5l d19yYXRlKTsKQEAgLTY5Niw5ICs2ODYsNiBAQCB2aXJOZXREZXZCYW5kd2lkdGhVcGRhdGVSYXRl KGNvbnN0IGNoYXIgKmlmbmFtZSwKCiAgY2xlYW51cDoKICAgICB2aXJDb21tYW5kRnJlZShjbWQp OwotICAgIFZJUl9GUkVFKGNsYXNzX2lkKTsKLSAgICBWSVJfRlJFRShyYXRlKTsKLSAgICBWSVJf RlJFRShjZWlsKTsKICAgICByZXR1cm4gcmV0OwogfQoKQEAgLTcyNSwxNiArNzEyLDEzIEBAIHZp ck5ldERldkJhbmR3aWR0aFVwZGF0ZUZpbHRlcihjb25zdCBjaGFyICppZm5hbWUsCiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgaW50IGlkKQogewogICAgIGludCByZXQg PTNEIC0xOwotICAgIGNoYXIgKmNsYXNzX2lkID0zRCBOVUxMOworICAgIGdfYXV0b2ZyZWUgY2hh ciAqY2xhc3NfaWQgPTNEIE5VTEw7CgogICAgIGNsYXNzX2lkID0zRCBnX3N0cmR1cF9wcmludGYo IjE6JXgiLCBpZCk7CgogICAgIGlmICh2aXJOZXREZXZCYW5kd2lkdGhNYW5pcHVsYXRlRmlsdGVy KGlmbmFtZSwgaWZtYWNfcHRyLCBpZCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBjbGFzc19pZCwgdHJ1ZSwgdHJ1ZSkgPCAwKQotICAgICAgICBnb3RvIGNsZWFu dXA7CisgICAgICAgIHJldHVybiByZXQ7CgotICAgIHJldCA9M0QgMDsKLSBjbGVhbnVwOgotICAg IFZJUl9GUkVFKGNsYXNzX2lkKTsKLSAgICByZXR1cm4gcmV0OworICAgIHJldHVybiAwOwogfQpk aWZmIC0tZ2l0IGEvc3JjL3V0aWwvdmlycmVzY3RybC5jIGIvc3JjL3V0aWwvdmlycmVzY3RybC5j CmluZGV4IGQzMDg3Yjk4YzEuLjFjMmQxNzUyOTUgMTAwNjQ0Ci0tLSBhL3NyYy91dGlsL3ZpcnJl c2N0cmwuYworKysgYi9zcmMvdXRpbC92aXJyZXNjdHJsLmMKQEAgLTcwOSw3ICs3MDksNyBAQCB2 aXJSZXNjdHJsR2V0TW9uaXRvckluZm8odmlyUmVzY3RybEluZm9QdHIgcmVzY3RybCkKIHsKICAg ICBpbnQgcmV0ID0zRCAtMTsKICAgICBpbnQgcnYgPTNEIC0xOwotICAgIGNoYXIgKmZlYXR1cmVz dHIgPTNEIE5VTEw7CisgICAgZ19hdXRvZnJlZSBjaGFyICpmZWF0dXJlc3RyID0zRCBOVUxMOwog ICAgIGNoYXIgKipmZWF0dXJlcyA9M0QgTlVMTDsKICAgICBzaXplX3QgbmZlYXR1cmVzID0zRCAw OwogICAgIHZpclJlc2N0cmxJbmZvTW9uZ3JwUHRyIGluZm9fbW9uaXRvciA9M0QgTlVMTDsKQEAg LTc3MSw3ICs3NzEsNiBAQCB2aXJSZXNjdHJsR2V0TW9uaXRvckluZm8odmlyUmVzY3RybEluZm9Q dHIgcmVzY3RybCkKCiAgICAgcmV0ID0zRCAwOwogIGNsZWFudXA6Ci0gICAgVklSX0ZSRUUoZmVh dHVyZXN0cik7CiAgICAgZ19zdHJmcmVldihmZWF0dXJlcyk7CiAgICAgVklSX0ZSRUUoaW5mb19t b25pdG9yKTsKICAgICByZXR1cm4gcmV0OwpAQCAtMTczNiw3ICsxNzM1LDcgQEAgdmlyUmVzY3Ry bEFsbG9jR2V0R3JvdXAodmlyUmVzY3RybEluZm9QdHIgcmVzY3RybCwKICAgICAgICAgICAgICAg ICAgICAgICAgIGNvbnN0IGNoYXIgKmdyb3VwbmFtZSwKICAgICAgICAgICAgICAgICAgICAgICAg IHZpclJlc2N0cmxBbGxvY1B0ciAqYWxsb2MpCiB7Ci0gICAgY2hhciAqc2NoZW1hdGEgPTNEIE5V TEw7CisgICAgZ19hdXRvZnJlZSBjaGFyICpzY2hlbWF0YSA9M0QgTlVMTDsKICAgICBpbnQgcnYg PTNEIHZpckZpbGVSZWFkVmFsdWVTdHJpbmcoJnNjaGVtYXRhLAogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgU1lTRlNfUkVTQ1RSTF9QQVRIICIvJXMvc2NoZW1hdGEiLAogICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3JvdXBuYW1lKTsKQEAgLTE3NTMsMTEg KzE3NTIsOSBAQCB2aXJSZXNjdHJsQWxsb2NHZXRHcm91cCh2aXJSZXNjdHJsSW5mb1B0ciByZXNj dHJsLAogICAgIGlmICh2aXJSZXNjdHJsQWxsb2NQYXJzZShyZXNjdHJsLCAqYWxsb2MsIHNjaGVt YXRhKSA8IDApCiAgICAgICAgIGdvdG8gZXJyb3I7CgotICAgIFZJUl9GUkVFKHNjaGVtYXRhKTsK ICAgICByZXR1cm4gMDsKCiAgZXJyb3I6Ci0gICAgVklSX0ZSRUUoc2NoZW1hdGEpOwogICAgIHZp ck9iamVjdFVucmVmKCphbGxvYyk7CiAgICAgKmFsbG9jID0zRCBOVUxMOwogICAgIHJldHVybiAt MTsKQEAgLTIzNTQsOCArMjM1MSw4IEBAIHZpclJlc2N0cmxBbGxvY0NyZWF0ZSh2aXJSZXNjdHJs SW5mb1B0ciByZXNjdHJsLAogICAgICAgICAgICAgICAgICAgICAgIHZpclJlc2N0cmxBbGxvY1B0 ciBhbGxvYywKICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICptYWNoaW5lbmFtZSkK IHsKLSAgICBjaGFyICpzY2hlbWF0YV9wYXRoID0zRCBOVUxMOwotICAgIGNoYXIgKmFsbG9jX3N0 ciA9M0QgTlVMTDsKKyAgICBnX2F1dG9mcmVlIGNoYXIgKnNjaGVtYXRhX3BhdGggPTNEIE5VTEw7 CisgICAgZ19hdXRvZnJlZSBjaGFyICphbGxvY19zdHIgPTNEIE5VTEw7CiAgICAgaW50IHJldCA9 M0QgLTE7CiAgICAgaW50IGxvY2tmZCA9M0QgLTE7CgpAQCAtMjQwMyw4ICsyNDAwLDYgQEAgdmly UmVzY3RybEFsbG9jQ3JlYXRlKHZpclJlc2N0cmxJbmZvUHRyIHJlc2N0cmwsCiAgICAgcmV0ID0z RCAwOwogIGNsZWFudXA6CiAgICAgdmlyUmVzY3RybFVubG9jayhsb2NrZmQpOwotICAgIFZJUl9G UkVFKGFsbG9jX3N0cik7Ci0gICAgVklSX0ZSRUUoc2NoZW1hdGFfcGF0aCk7CiAgICAgcmV0dXJu IHJldDsKIH0KCkBAIC0yNDEzLDggKzI0MDgsOCBAQCBzdGF0aWMgaW50CiB2aXJSZXNjdHJsQWRk UElEKGNvbnN0IGNoYXIgKnBhdGgsCiAgICAgICAgICAgICAgICAgIHBpZF90IHBpZCkKIHsKLSAg ICBjaGFyICp0YXNrcyA9M0QgTlVMTDsKLSAgICBjaGFyICpwaWRzdHIgPTNEIE5VTEw7CisgICAg Z19hdXRvZnJlZSBjaGFyICp0YXNrcyA9M0QgTlVMTDsKKyAgICBnX2F1dG9mcmVlIGNoYXIgKnBp ZHN0ciA9M0QgTlVMTDsKICAgICBpbnQgcmV0ID0zRCAwOwoKICAgICBpZiAoIXBhdGgpIHsKQEAg LTI0MzYsOCArMjQzMSw2IEBAIHZpclJlc2N0cmxBZGRQSUQoY29uc3QgY2hhciAqcGF0aCwKCiAg ICAgcmV0ID0zRCAwOwogIGNsZWFudXA6Ci0gICAgVklSX0ZSRUUodGFza3MpOwotICAgIFZJUl9G UkVFKHBpZHN0cik7CiAgICAgcmV0dXJuIHJldDsKIH0KCkBAIC0yNjU3LDggKzI2NTAsOCBAQCB2 aXJSZXNjdHJsTW9uaXRvckdldFN0YXRzKHZpclJlc2N0cmxNb25pdG9yUHRyIG1vbml0bz0KciwK ICAgICBzaXplX3QgaSA9M0QgMDsKICAgICB1bnNpZ25lZCBsb25nIGxvbmcgdmFsID0zRCAwOwog ICAgIGdfYXV0b3B0cihESVIpIGRpcnAgPTNEIE5VTEw7Ci0gICAgY2hhciAqZGF0YXBhdGggPTNE IE5VTEw7Ci0gICAgY2hhciAqZmlsZXBhdGggPTNEIE5VTEw7CisgICAgZ19hdXRvZnJlZSBjaGFy ICpkYXRhcGF0aCA9M0QgTlVMTDsKKyAgICBnX2F1dG9mcmVlIGNoYXIgKmZpbGVwYXRoID0zRCBO VUxMOwogICAgIHN0cnVjdCBkaXJlbnQgKmVudCA9M0QgTlVMTDsKICAgICB2aXJSZXNjdHJsTW9u aXRvclN0YXRzUHRyIHN0YXQgPTNEIE5VTEw7CgpAQCAtMjczNyw4ICsyNzMwLDYgQEAgdmlyUmVz Y3RybE1vbml0b3JHZXRTdGF0cyh2aXJSZXNjdHJsTW9uaXRvclB0ciBtb25pdG89CnIsCgogICAg IHJldCA9M0QgMDsKICBjbGVhbnVwOgotICAgIFZJUl9GUkVFKGRhdGFwYXRoKTsKLSAgICBWSVJf RlJFRShmaWxlcGF0aCk7CiAgICAgdmlyUmVzY3RybE1vbml0b3JTdGF0c0ZyZWUoc3RhdCk7CiAg ICAgcmV0dXJuIHJldDsKIH0KZGlmZiAtLWdpdCBhL3NyYy91dGlsL3ZpcnJvdGF0aW5nZmlsZS5j IGIvc3JjL3V0aWwvdmlycm90YXRpbmdmaWxlLmMKaW5kZXggOWYxZWYxN2MzZS4uNmZlNWZhMzE1 NCAxMDA2NDQKLS0tIGEvc3JjL3V0aWwvdmlycm90YXRpbmdmaWxlLmMKKysrIGIvc3JjL3V0aWwv dmlycm90YXRpbmdmaWxlLmMKQEAgLTM2Miw4ICszNjIsOCBAQCBzdGF0aWMgaW50CiB2aXJSb3Rh dGluZ0ZpbGVXcml0ZXJSb2xsb3Zlcih2aXJSb3RhdGluZ0ZpbGVXcml0ZXJQdHIgZmlsZSkKIHsK ICAgICBzaXplX3QgaTsKLSAgICBjaGFyICpuZXh0cGF0aCA9M0QgTlVMTDsKLSAgICBjaGFyICp0 aGlzcGF0aCA9M0QgTlVMTDsKKyAgICBnX2F1dG9mcmVlIGNoYXIgKm5leHRwYXRoID0zRCBOVUxM OworICAgIGdfYXV0b2ZyZWUgY2hhciAqdGhpc3BhdGggPTNEIE5VTEw7CiAgICAgaW50IHJldCA9 M0QgLTE7CgogICAgIFZJUl9ERUJVRygiUm9sbG92ZXIgJXMiLCBmaWxlLT5iYXNlcGF0aCk7CkBA IC0zNzMsNyArMzczLDcgQEAgdmlyUm90YXRpbmdGaWxlV3JpdGVyUm9sbG92ZXIodmlyUm90YXRp bmdGaWxlV3JpdGVyUHRyID0KZmlsZSkKICAgICAgICAgICAgIHZpclJlcG9ydFN5c3RlbUVycm9y KGVycm5vLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXygiVW5hYmxlIHRvIHJl bW92ZSAlcyIpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZS0+YmFzZXBh dGgpOwotICAgICAgICAgICAgZ290byBjbGVhbnVwOworICAgICAgICAgICAgcmV0dXJuIHJldDsK ICAgICAgICAgfQogICAgIH0gZWxzZSB7CiAgICAgICAgIG5leHRwYXRoID0zRCBnX3N0cmR1cF9w cmludGYoIiVzLiV6dSIsIGZpbGUtPmJhc2VwYXRoLApmaWxlLT5tYXhiYWNrdXAgLSAxKTsKQEAg LTM5MSw3ICszOTEsNyBAQCB2aXJSb3RhdGluZ0ZpbGVXcml0ZXJSb2xsb3Zlcih2aXJSb3RhdGlu Z0ZpbGVXcml0ZXJQdHIgPQpmaWxlKQogICAgICAgICAgICAgICAgIHZpclJlcG9ydFN5c3RlbUVy cm9yKGVycm5vLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF8oIlVuYWJs ZSB0byByZW5hbWUgJXMgdG8gJXMiKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICB0aGlzcGF0aCwgbmV4dHBhdGgpOwotICAgICAgICAgICAgICAgIGdvdG8gY2xlYW51cDsK KyAgICAgICAgICAgICAgICByZXR1cm4gcmV0OwogICAgICAgICAgICAgfQoKICAgICAgICAgICAg IFZJUl9GUkVFKG5leHRwYXRoKTsKQEAgLTQwMiw5ICs0MDIsNiBAQCB2aXJSb3RhdGluZ0ZpbGVX cml0ZXJSb2xsb3Zlcih2aXJSb3RhdGluZ0ZpbGVXcml0ZXJQdHIgPQpmaWxlKQogICAgIFZJUl9E RUJVRygiUm9sbG92ZXIgZG9uZSAlcyIsIGZpbGUtPmJhc2VwYXRoKTsKCiAgICAgcmV0ID0zRCAw OwotIGNsZWFudXA6Ci0gICAgVklSX0ZSRUUobmV4dHBhdGgpOwotICAgIFZJUl9GUkVFKHRoaXNw YXRoKTsKICAgICByZXR1cm4gcmV0OwogfQoKZGlmZiAtLWdpdCBhL3NyYy91dGlsL3ZpcnNjc2lo b3N0LmMgYi9zcmMvdXRpbC92aXJzY3NpaG9zdC5jCmluZGV4IDk2OWNkZDlmNzkuLmNhZDQ4YjQw NTkgMTAwNjQ0Ci0tLSBhL3NyYy91dGlsL3ZpcnNjc2lob3N0LmMKKysrIGIvc3JjL3V0aWwvdmly c2NzaWhvc3QuYwpAQCAtOTUsMTIgKzk1LDEyIEBAIHZpclNDU0lIb3N0RmluZEJ5UENJKGNvbnN0 IGNoYXIgKnN5c2ZzX3ByZWZpeCwKICAgICBjb25zdCBjaGFyICpwcmVmaXggPTNEIHN5c2ZzX3By ZWZpeCA/IHN5c2ZzX3ByZWZpeCA6IFNZU0ZTX1NDU0lfSE9TVF9QPQpBVEg7CiAgICAgc3RydWN0 IGRpcmVudCAqZW50cnkgPTNEIE5VTEw7CiAgICAgZ19hdXRvcHRyKERJUikgZGlyID0zRCBOVUxM OwotICAgIGNoYXIgKmhvc3RfbGluayA9M0QgTlVMTDsKLSAgICBjaGFyICpob3N0X3BhdGggPTNE IE5VTEw7CisgICAgZ19hdXRvZnJlZSBjaGFyICpob3N0X2xpbmsgPTNEIE5VTEw7CisgICAgZ19h dXRvZnJlZSBjaGFyICpob3N0X3BhdGggPTNEIE5VTEw7CiAgICAgY2hhciAqcCA9M0QgTlVMTDsK ICAgICBjaGFyICpyZXQgPTNEIE5VTEw7Ci0gICAgY2hhciAqYnVmID0zRCBOVUxMOwotICAgIGNo YXIgKnVuaXF1ZV9wYXRoID0zRCBOVUxMOworICAgIGdfYXV0b2ZyZWUgY2hhciAqYnVmID0zRCBO VUxMOworICAgIGdfYXV0b2ZyZWUgY2hhciAqdW5pcXVlX3BhdGggPTNEIE5VTEw7CiAgICAgdW5z aWduZWQgaW50IHJlYWRfdW5pcXVlX2lkOwoKICAgICBpZiAodmlyRGlyT3BlbigmZGlyLCBwcmVm aXgpIDwgMCkKQEAgLTExMyw3ICsxMTMsNyBAQCB2aXJTQ1NJSG9zdEZpbmRCeVBDSShjb25zdCBj aGFyICpzeXNmc19wcmVmaXgsCiAgICAgICAgIGhvc3RfbGluayA9M0QgZ19zdHJkdXBfcHJpbnRm KCIlcy8lcyIsIHByZWZpeCwgZW50cnktPmRfbmFtZSk7CgogICAgICAgICBpZiAodmlyRmlsZVJl c29sdmVMaW5rKGhvc3RfbGluaywgJmhvc3RfcGF0aCkgPCAwKQotICAgICAgICAgICAgZ290byBj bGVhbnVwOworICAgICAgICAgICAgcmV0dXJuIHJldDsKCiAgICAgICAgIGlmICghc3Ryc3RyKGhv c3RfcGF0aCwgcGFyZW50YWRkcikpIHsKICAgICAgICAgICAgIFZJUl9GUkVFKGhvc3RfbGluayk7 CkBAIC0xMzEsMTMgKzEzMSwxMyBAQCB2aXJTQ1NJSG9zdEZpbmRCeVBDSShjb25zdCBjaGFyICpz eXNmc19wcmVmaXgsCiAgICAgICAgIH0KCiAgICAgICAgIGlmICh2aXJGaWxlUmVhZEFsbCh1bmlx dWVfcGF0aCwgMTAyNCwgJmJ1ZikgPCAwKQotICAgICAgICAgICAgZ290byBjbGVhbnVwOworICAg ICAgICAgICAgcmV0dXJuIHJldDsKCiAgICAgICAgIGlmICgocCA9M0Qgc3RyY2hyKGJ1ZiwgJ1xu JykpKQogICAgICAgICAgICAgKnAgPTNEICdcMCc7CgogICAgICAgICBpZiAodmlyU3RyVG9Mb25n X3VpKGJ1ZiwgTlVMTCwgMTAsICZyZWFkX3VuaXF1ZV9pZCkgPCAwKQotICAgICAgICAgICAgZ290 byBjbGVhbnVwOworICAgICAgICAgICAgcmV0dXJuIHJldDsKCiAgICAgICAgIFZJUl9GUkVFKGJ1 Zik7CgpAQCAtMTUwLDExICsxNTAsNiBAQCB2aXJTQ1NJSG9zdEZpbmRCeVBDSShjb25zdCBjaGFy ICpzeXNmc19wcmVmaXgsCiAgICAgICAgIGJyZWFrOwogICAgIH0KCi0gY2xlYW51cDoKLSAgICBW SVJfRlJFRSh1bmlxdWVfcGF0aCk7Ci0gICAgVklSX0ZSRUUoaG9zdF9saW5rKTsKLSAgICBWSVJf RlJFRShob3N0X3BhdGgpOwotICAgIFZJUl9GUkVFKGJ1Zik7CiAgICAgcmV0dXJuIHJldDsKIH0K CkBAIC0yMjYsNyArMjIxLDcgQEAgdmlyU0NTSUhvc3RHZXROYW1lQnlQYXJlbnRhZGRyKHVuc2ln bmVkIGludCBkb21haW4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQg aW50IHVuaXF1ZV9pZCkKIHsKICAgICBjaGFyICpuYW1lID0zRCBOVUxMOwotICAgIGNoYXIgKnBh cmVudGFkZHIgPTNEIE5VTEw7CisgICAgZ19hdXRvZnJlZSBjaGFyICpwYXJlbnRhZGRyID0zRCBO VUxMOwoKICAgICBwYXJlbnRhZGRyID0zRCBnX3N0cmR1cF9wcmludGYoIiUwNHg6JTAyeDolMDJ4 LiUwMXgiLCBkb21haW4sIGJ1cywgc2xvPQp0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgZnVuY3Rpb24pOwpAQCAtMjM1LDExICsyMzAsOSBAQCB2aXJTQ1NJSG9zdEdldE5hbWVC eVBhcmVudGFkZHIodW5zaWduZWQgaW50IGRvbWFpbiwKICAgICAgICAgICAgICAgICAgICAgICAg XygiRmFpbGVkIHRvIGZpbmQgc2NzaV9ob3N0IHVzaW5nIFBDSSAnJXMnICIKICAgICAgICAgICAg ICAgICAgICAgICAgICAiYW5kIHVuaXF1ZV9pZD0zRCcldSciKSwKICAgICAgICAgICAgICAgICAg ICAgICAgcGFyZW50YWRkciwgdW5pcXVlX2lkKTsKLSAgICAgICAgZ290byBjbGVhbnVwOworICAg ICAgICByZXR1cm4gbmFtZTsKICAgICB9CgotIGNsZWFudXA6Ci0gICAgVklSX0ZSRUUocGFyZW50 YWRkcik7CiAgICAgcmV0dXJuIG5hbWU7CiB9CgpkaWZmIC0tZ2l0IGEvc3JjL3V0aWwvdmlyc2Vj cmV0LmMgYi9zcmMvdXRpbC92aXJzZWNyZXQuYwppbmRleCA1NGQ2YmJjYjdjLi42N2M5YjY4MjE1 IDEwMDY0NAotLS0gYS9zcmMvdXRpbC92aXJzZWNyZXQuYworKysgYi9zcmMvdXRpbC92aXJzZWNy ZXQuYwpAQCAtNjUsOCArNjUsOCBAQCBpbnQKIHZpclNlY3JldExvb2t1cFBhcnNlU2VjcmV0KHht bE5vZGVQdHIgc2VjcmV0bm9kZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZpclNlY3Jl dExvb2t1cFR5cGVEZWZQdHIgZGVmKQogewotICAgIGNoYXIgKnV1aWQ7Ci0gICAgY2hhciAqdXNh Z2U7CisgICAgZ19hdXRvZnJlZSBjaGFyICp1dWlkID0zRCBOVUxMOworICAgIGdfYXV0b2ZyZWUg Y2hhciAqdXNhZ2UgPTNEIE5VTEw7CiAgICAgaW50IHJldCA9M0QgLTE7CgogICAgIHV1aWQgPTNE IHZpclhNTFByb3BTdHJpbmcoc2VjcmV0bm9kZSwgInV1aWQiKTsKQEAgLTc0LDIwICs3NCwyMCBA QCB2aXJTZWNyZXRMb29rdXBQYXJzZVNlY3JldCh4bWxOb2RlUHRyIHNlY3JldG5vZGUsCiAgICAg aWYgKHV1aWQgPTNEPTNEIE5VTEwgJiYgdXNhZ2UgPTNEPTNEIE5VTEwpIHsKICAgICAgICAgdmly UmVwb3J0RXJyb3IoVklSX0VSUl9YTUxfRVJST1IsICIlcyIsCiAgICAgICAgICAgICAgICAgICAg ICAgIF8oIm1pc3Npbmcgc2VjcmV0IHV1aWQgb3IgdXNhZ2UgYXR0cmlidXRlIikpOwotICAgICAg ICBnb3RvIGNsZWFudXA7CisgICAgICAgIHJldHVybiByZXQ7CiAgICAgfQoKICAgICBpZiAodXVp ZCAmJiB1c2FnZSkgewogICAgICAgICB2aXJSZXBvcnRFcnJvcihWSVJfRVJSX1hNTF9FUlJPUiwg IiVzIiwKICAgICAgICAgICAgICAgICAgICAgICAgXygiZWl0aGVyIHNlY3JldCB1dWlkIG9yIHVz YWdlIGV4cGVjdGVkIikpOwotICAgICAgICBnb3RvIGNsZWFudXA7CisgICAgICAgIHJldHVybiBy ZXQ7CiAgICAgfQoKICAgICBpZiAodXVpZCkgewogICAgICAgICBpZiAodmlyVVVJRFBhcnNlKHV1 aWQsIGRlZi0+dS51dWlkKSA8IDApIHsKICAgICAgICAgICAgIHZpclJlcG9ydEVycm9yKFZJUl9F UlJfWE1MX0VSUk9SLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgXygiaW52YWxpZCBzZWNy ZXQgdXVpZCAnJXMnIiksIHV1aWQpOwotICAgICAgICAgICAgZ290byBjbGVhbnVwOworICAgICAg ICAgICAgcmV0dXJuIHJldDsKICAgICAgICAgfQogICAgICAgICBkZWYtPnR5cGUgPTNEIFZJUl9T RUNSRVRfTE9PS1VQX1RZUEVfVVVJRDsKICAgICB9IGVsc2UgewpAQCAtOTYsMTAgKzk2LDYgQEAg dmlyU2VjcmV0TG9va3VwUGFyc2VTZWNyZXQoeG1sTm9kZVB0ciBzZWNyZXRub2RlLAogICAgICAg ICBkZWYtPnR5cGUgPTNEIFZJUl9TRUNSRVRfTE9PS1VQX1RZUEVfVVNBR0U7CiAgICAgfQogICAg IHJldCA9M0QgMDsKLQotIGNsZWFudXA6Ci0gICAgVklSX0ZSRUUodXVpZCk7Ci0gICAgVklSX0ZS RUUodXNhZ2UpOwogICAgIHJldHVybiByZXQ7CiB9CgpkaWZmIC0tZ2l0IGEvc3JjL3V0aWwvdmly c3RvcmFnZWVuY3J5cHRpb24uYyBiL3NyYy91dGlsL3ZpcnN0b3JhZ2VlbmNyeXB0aW89Cm4uYwpp bmRleCAzOTljNjkyNmJkLi5kYjg4NmMxZTc2IDEwMDY0NAotLS0gYS9zcmMvdXRpbC92aXJzdG9y YWdlZW5jcnlwdGlvbi5jCisrKyBiL3NyYy91dGlsL3ZpcnN0b3JhZ2VlbmNyeXB0aW9uLmMKQEAg LTE0Miw3ICsxNDIsNyBAQCB2aXJTdG9yYWdlRW5jcnlwdGlvblNlY3JldFBhcnNlKHhtbFhQYXRo Q29udGV4dFB0ciBjdHh0LAogewogICAgIFZJUl9YUEFUSF9OT0RFX0FVVE9SRVNUT1JFKGN0eHQp CiAgICAgdmlyU3RvcmFnZUVuY3J5cHRpb25TZWNyZXRQdHIgcmV0OwotICAgIGNoYXIgKnR5cGVf c3RyID0zRCBOVUxMOworICAgIGdfYXV0b2ZyZWUgY2hhciAqdHlwZV9zdHIgPTNEIE5VTEw7Cgog ICAgIHJldCA9M0QgZ19uZXcwKHZpclN0b3JhZ2VFbmNyeXB0aW9uU2VjcmV0LCAxKTsKCkBAIC0x NjQsMTIgKzE2NCw5IEBAIHZpclN0b3JhZ2VFbmNyeXB0aW9uU2VjcmV0UGFyc2UoeG1sWFBhdGhD b250ZXh0UHRyIGN0eD0KdCwKICAgICBpZiAodmlyU2VjcmV0TG9va3VwUGFyc2VTZWNyZXQobm9k ZSwgJnJldC0+c2VjbG9va3VwZGVmKSA8IDApCiAgICAgICAgIGdvdG8gY2xlYW51cDsKCi0gICAg VklSX0ZSRUUodHlwZV9zdHIpOwotCiAgICAgcmV0dXJuIHJldDsKCiAgY2xlYW51cDoKLSAgICBW SVJfRlJFRSh0eXBlX3N0cik7CiAgICAgdmlyU3RvcmFnZUVuY3J5cHRpb25TZWNyZXRGcmVlKHJl dCk7CiAgICAgcmV0dXJuIE5VTEw7CiB9CkBAIC0xODAsMTIgKzE3NywxMiBAQCB2aXJTdG9yYWdl RW5jcnlwdGlvbkluZm9QYXJzZUNpcGhlcih4bWxOb2RlUHRyIGluZm9fbj0Kb2RlLAogICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdmlyU3RvcmFnZUVuY3J5cHRpb25JbmZvRGVm UHRyIGluZm8pCiB7CiAgICAgaW50IHJldCA9M0QgLTE7Ci0gICAgY2hhciAqc2l6ZV9zdHIgPTNE IE5VTEw7CisgICAgZ19hdXRvZnJlZSBjaGFyICpzaXplX3N0ciA9M0QgTlVMTDsKCiAgICAgaWYg KCEoaW5mby0+Y2lwaGVyX25hbWUgPTNEIHZpclhNTFByb3BTdHJpbmcoaW5mb19ub2RlLCAibmFt ZSIpKSkgewogICAgICAgICB2aXJSZXBvcnRFcnJvcihWSVJfRVJSX1hNTF9FUlJPUiwgIiVzIiwK ICAgICAgICAgICAgICAgICAgICAgICAgXygiY2lwaGVyIGluZm8gbWlzc2luZyAnbmFtZScgYXR0 cmlidXRlIikpOwotICAgICAgICBnb3RvIGNsZWFudXA7CisgICAgICAgIHJldHVybiByZXQ7CiAg ICAgfQoKICAgICBpZiAoKHNpemVfc3RyID0zRCB2aXJYTUxQcm9wU3RyaW5nKGluZm9fbm9kZSwg InNpemUiKSkgJiYKQEAgLTE5MywyMiArMTkwLDE5IEBAIHZpclN0b3JhZ2VFbmNyeXB0aW9uSW5m b1BhcnNlQ2lwaGVyKHhtbE5vZGVQdHIgaW5mb19uPQpvZGUsCiAgICAgICAgIHZpclJlcG9ydEVy cm9yKFZJUl9FUlJfWE1MX0VSUk9SLAogICAgICAgICAgICAgICAgICAgICAgICBfKCJjYW5ub3Qg cGFyc2UgY2lwaGVyIHNpemU6ICclcyciKSwKICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV9z dHIpOwotICAgICAgICBnb3RvIGNsZWFudXA7CisgICAgICAgIHJldHVybiByZXQ7CiAgICAgfQoK ICAgICBpZiAoIXNpemVfc3RyKSB7CiAgICAgICAgIHZpclJlcG9ydEVycm9yKFZJUl9FUlJfWE1M X0VSUk9SLCAiJXMiLAogICAgICAgICAgICAgICAgICAgICAgICBfKCJjaXBoZXIgaW5mbyBtaXNz aW5nICdzaXplJyBhdHRyaWJ1dGUiKSk7Ci0gICAgICAgIGdvdG8gY2xlYW51cDsKKyAgICAgICAg cmV0dXJuIHJldDsKICAgICB9CgogICAgIGluZm8tPmNpcGhlcl9tb2RlID0zRCB2aXJYTUxQcm9w U3RyaW5nKGluZm9fbm9kZSwgIm1vZGUiKTsKICAgICBpbmZvLT5jaXBoZXJfaGFzaCA9M0Qgdmly WE1MUHJvcFN0cmluZyhpbmZvX25vZGUsICJoYXNoIik7CgogICAgIHJldCA9M0QgMDsKLQotIGNs ZWFudXA6Ci0gICAgVklSX0ZSRUUoc2l6ZV9zdHIpOwogICAgIHJldHVybiByZXQ7CiB9CgpAQCAt MjM3LDcgKzIzMSw3IEBAIHZpclN0b3JhZ2VFbmNyeXB0aW9uUGFyc2VOb2RlKHhtbE5vZGVQdHIg bm9kZSwKICAgICB4bWxOb2RlUHRyICpub2RlcyA9M0QgTlVMTDsKICAgICB2aXJTdG9yYWdlRW5j cnlwdGlvblB0ciBlbmNkZWYgPTNEIE5VTEw7CiAgICAgdmlyU3RvcmFnZUVuY3J5cHRpb25QdHIg cmV0ID0zRCBOVUxMOwotICAgIGNoYXIgKmZvcm1hdF9zdHIgPTNEIE5VTEw7CisgICAgZ19hdXRv ZnJlZSBjaGFyICpmb3JtYXRfc3RyID0zRCBOVUxMOwogICAgIGludCBuOwogICAgIHNpemVfdCBp OwoKQEAgLTI5Nyw3ICsyOTEsNiBAQCB2aXJTdG9yYWdlRW5jcnlwdGlvblBhcnNlTm9kZSh4bWxO b2RlUHRyIG5vZGUsCiAgICAgcmV0ID0zRCBnX3N0ZWFsX3BvaW50ZXIoJmVuY2RlZik7CgogIGNs ZWFudXA6Ci0gICAgVklSX0ZSRUUoZm9ybWF0X3N0cik7CiAgICAgVklSX0ZSRUUobm9kZXMpOwog ICAgIHZpclN0b3JhZ2VFbmNyeXB0aW9uRnJlZShlbmNkZWYpOwoKZGlmZiAtLWdpdCBhL3NyYy91 dGlsL3ZpcnN0b3JhZ2VmaWxlYmFja2VuZC5jIGIvc3JjL3V0aWwvdmlyc3RvcmFnZWZpbGViYWNr PQplbmQuYwppbmRleCAyNzc5YjVjMzA3Li41NWM2MmIwMjEyIDEwMDY0NAotLS0gYS9zcmMvdXRp bC92aXJzdG9yYWdlZmlsZWJhY2tlbmQuYworKysgYi9zcmMvdXRpbC92aXJzdG9yYWdlZmlsZWJh Y2tlbmQuYwpAQCAtNTEsNyArNTEsNyBAQCB2aXJTdG9yYWdlRmlsZUxvYWRCYWNrZW5kTW9kdWxl KGNvbnN0IGNoYXIgKm5hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0 IGNoYXIgKnJlZ2Z1bmMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgZm9y Y2Vsb2FkKQogewotICAgIGNoYXIgKm1vZGZpbGUgPTNEIE5VTEw7CisgICAgZ19hdXRvZnJlZSBj aGFyICptb2RmaWxlID0zRCBOVUxMOwogICAgIGludCByZXQ7CgogICAgIGlmICghKG1vZGZpbGUg PTNEIHZpckZpbGVGaW5kUmVzb3VyY2VGdWxsKG5hbWUsCkBAIC02NCw4ICs2NCw2IEBAIHZpclN0 b3JhZ2VGaWxlTG9hZEJhY2tlbmRNb2R1bGUoY29uc3QgY2hhciAqbmFtZSwKCiAgICAgcmV0ID0z RCB2aXJNb2R1bGVMb2FkKG1vZGZpbGUsIHJlZ2Z1bmMsIGZvcmNlbG9hZCk7CgotICAgIFZJUl9G UkVFKG1vZGZpbGUpOwotCiAgICAgcmV0dXJuIHJldDsKIH0KICNlbmRpZiAvKiBXSVRIX1NUT1JB R0VfRElSIHx8IFdJVEhfU1RPUkFHRV9GUyB8fCBXSVRIX1NUT1JBR0VfR0xVU1RFUiAqLwpkaWZm IC0tZ2l0IGEvc3JjL3V0aWwvdmlyc3lzaW5mby5jIGIvc3JjL3V0aWwvdmlyc3lzaW5mby5jCmlu ZGV4IDIxN2Y4NDJhMzcuLjQ1YTk1MGM4NWEgMTAwNjQ0Ci0tLSBhL3NyYy91dGlsL3ZpcnN5c2lu Zm8uYworKysgYi9zcmMvdXRpbC92aXJzeXNpbmZvLmMKQEAgLTM5Myw3ICszOTMsNyBAQCB2aXJT eXNpbmZvUGFyc2VBUk1Qcm9jZXNzb3IoY29uc3QgY2hhciAqYmFzZSwKdmlyU3lzaW5mb0RlZlB0 ciByZXQpCiAgICAgY29uc3QgY2hhciAqY3VyOwogICAgIGNoYXIgKmVvbCwgKnRtcF9iYXNlOwog ICAgIHZpclN5c2luZm9Qcm9jZXNzb3JEZWZQdHIgcHJvY2Vzc29yOwotICAgIGNoYXIgKnByb2Nl c3Nvcl90eXBlID0zRCBOVUxMOworICAgIGdfYXV0b2ZyZWUgY2hhciAqcHJvY2Vzc29yX3R5cGUg PTNEIE5VTEw7CgogICAgIGlmICghKHRtcF9iYXNlID0zRCBzdHJzdHIoYmFzZSwgIm1vZGVsIG5h bWUiKSkgJiYKICAgICAgICAgISh0bXBfYmFzZSA9M0Qgc3Ryc3RyKGJhc2UsICJQcm9jZXNzb3Ii KSkpCkBAIC00MTEsNyArNDExLDcgQEAgdmlyU3lzaW5mb1BhcnNlQVJNUHJvY2Vzc29yKGNvbnN0 IGNoYXIgKmJhc2UsCnZpclN5c2luZm9EZWZQdHIgcmV0KQogICAgICAgICBjdXIgPTNEIHN0cmNo cihiYXNlLCAnOicpICsgMTsKCiAgICAgICAgIGlmIChWSVJfRVhQQU5EX04ocmV0LT5wcm9jZXNz b3IsIHJldC0+bnByb2Nlc3NvciwgMSkgPCAwKQotICAgICAgICAgICAgZ290byBlcnJvcjsKKyAg ICAgICAgICAgIHJldHVybiAtMTsKICAgICAgICAgcHJvY2Vzc29yID0zRCAmcmV0LT5wcm9jZXNz b3JbcmV0LT5ucHJvY2Vzc29yIC0gMV07CgogICAgICAgICB2aXJTa2lwU3BhY2VzKCZjdXIpOwpA QCAtNDI0LDEyICs0MjQsNyBAQCB2aXJTeXNpbmZvUGFyc2VBUk1Qcm9jZXNzb3IoY29uc3QgY2hh ciAqYmFzZSwKdmlyU3lzaW5mb0RlZlB0ciByZXQpCiAgICAgICAgIGJhc2UgPTNEIGN1cjsKICAg ICB9CgotICAgIFZJUl9GUkVFKHByb2Nlc3Nvcl90eXBlKTsKICAgICByZXR1cm4gMDsKLQotIGVy cm9yOgotICAgIFZJUl9GUkVFKHByb2Nlc3Nvcl90eXBlKTsKLSAgICByZXR1cm4gLTE7CiB9Cgog LyogdmlyU3lzaW5mb1JlYWQgZm9yIEFSTXY3CkBAIC01MzIsOSArNTI3LDkgQEAgc3RhdGljIGlu dAogdmlyU3lzaW5mb1BhcnNlUzM5MFByb2Nlc3Nvcihjb25zdCBjaGFyICpiYXNlLCB2aXJTeXNp bmZvRGVmUHRyIHJldCkKIHsKICAgICBjb25zdCBjaGFyICp0bXBfYmFzZTsKLSAgICBjaGFyICpt YW51ZmFjdHVyZXIgPTNEIE5VTEw7Ci0gICAgY2hhciAqcHJvY2xpbmUgPTNEIE5VTEw7Ci0gICAg Y2hhciAqbmNwdSA9M0QgTlVMTDsKKyAgICBnX2F1dG9mcmVlIGNoYXIgKm1hbnVmYWN0dXJlciA9 M0QgTlVMTDsKKyAgICBnX2F1dG9mcmVlIGNoYXIgKnByb2NsaW5lID0zRCBOVUxMOworICAgIGdf YXV0b2ZyZWUgY2hhciAqbmNwdSA9M0QgTlVMTDsKICAgICBpbnQgcmVzdWx0ID0zRCAtMTsKICAg ICB2aXJTeXNpbmZvUHJvY2Vzc29yRGVmUHRyIHByb2Nlc3NvcjsKCkBAIC01OTMsOSArNTg4LDYg QEAgdmlyU3lzaW5mb1BhcnNlUzM5MFByb2Nlc3Nvcihjb25zdCBjaGFyICpiYXNlLAp2aXJTeXNp bmZvRGVmUHRyIHJldCkKICAgICByZXN1bHQgPTNEIDA7CgogIGVycm9yOgotICAgIFZJUl9GUkVF KG1hbnVmYWN0dXJlcik7Ci0gICAgVklSX0ZSRUUocHJvY2xpbmUpOwotICAgIFZJUl9GUkVFKG5j cHUpOwogICAgIHJldHVybiByZXN1bHQ7CiB9CgpkaWZmIC0tZ2l0IGEvc3JjL3V0aWwvdmlydXJp LmMgYi9zcmMvdXRpbC92aXJ1cmkuYwppbmRleCAxMTc1M2EwYWVmLi5kNDk4MjE0NTFlIDEwMDY0 NAotLS0gYS9zcmMvdXRpbC92aXJ1cmkuYworKysgYi9zcmMvdXRpbC92aXJ1cmkuYwpAQCAtMjA5 LDcgKzIwOSw3IEBAIGNoYXIgKgogdmlyVVJJRm9ybWF0KHZpclVSSVB0ciB1cmkpCiB7CiAgICAg eG1sVVJJIHhtbHVyaTsKLSAgICBjaGFyICp0bXBzZXJ2ZXIgPTNEIE5VTEw7CisgICAgZ19hdXRv ZnJlZSBjaGFyICp0bXBzZXJ2ZXIgPTNEIE5VTEw7CiAgICAgY2hhciAqcmV0OwoKICAgICBtZW1z ZXQoJnhtbHVyaSwgMCwgc2l6ZW9mKHhtbHVyaSkpOwpAQCAtMjQxLDEyICsyNDEsOSBAQCB2aXJV UklGb3JtYXQodmlyVVJJUHRyIHVyaSkKICAgICByZXQgPTNEIChjaGFyICopeG1sU2F2ZVVyaSgm eG1sdXJpKTsKICAgICBpZiAoIXJldCkgewogICAgICAgICB2aXJSZXBvcnRPT01FcnJvcigpOwot ICAgICAgICBnb3RvIGNsZWFudXA7CisgICAgICAgIHJldHVybiByZXQ7CiAgICAgfQoKLSBjbGVh bnVwOgotICAgIFZJUl9GUkVFKHRtcHNlcnZlcik7Ci0KICAgICByZXR1cm4gcmV0OwogfQoKZGlm ZiAtLWdpdCBhL3NyYy91dGlsL3ZpcnV0aWwuYyBiL3NyYy91dGlsL3ZpcnV0aWwuYwppbmRleCBh MGNkMGYxYmNkLi5hN2MxNjNhYjk0IDEwMDY0NAotLS0gYS9zcmMvdXRpbC92aXJ1dGlsLmMKKysr IGIvc3JjL3V0aWwvdmlydXRpbC5jCkBAIC01OTgsNyArNTk4LDcgQEAgY2hhciAqdmlyR2V0VXNl clJ1bnRpbWVEaXJlY3Rvcnkodm9pZCkKIHN0YXRpYyBpbnQKIHZpckdldFVzZXJFbnQodWlkX3Qg dWlkLCBjaGFyICoqbmFtZSwgZ2lkX3QgKmdyb3VwLCBjaGFyICoqZGlyLCBjaGFyCioqc2hlbGws IGJvb2wgcXVpZXQpCiB7Ci0gICAgY2hhciAqc3RyYnVmOworICAgIGdfYXV0b2ZyZWUgY2hhciAq c3RyYnVmID0zRCBOVUxMOwogICAgIHN0cnVjdCBwYXNzd2QgcHdidWY7CiAgICAgc3RydWN0IHBh c3N3ZCAqcHcgPTNEIE5VTEw7CiAgICAgbG9uZyB2YWwgPTNEIHN5c2NvbmYoX1NDX0dFVFBXX1Jf U0laRV9NQVgpOwpAQCAtNjY4LDEzICs2NjgsMTIgQEAgdmlyR2V0VXNlckVudCh1aWRfdCB1aWQs IGNoYXIgKipuYW1lLCBnaWRfdAoqZ3JvdXAsIGNoYXIgKipkaXIsIGNoYXIgKipzaGVsbCwgYm8K ICAgICAgICAgaWYgKHNoZWxsKQogICAgICAgICAgICAgVklSX0ZSRUUoKnNoZWxsKTsKICAgICB9 Ci0gICAgVklSX0ZSRUUoc3RyYnVmKTsKICAgICByZXR1cm4gcmV0OwogfQoKIHN0YXRpYyBjaGFy ICp2aXJHZXRHcm91cEVudChnaWRfdCBnaWQpCiB7Ci0gICAgY2hhciAqc3RyYnVmOworICAgIGdf YXV0b2ZyZWUgY2hhciAqc3RyYnVmID0zRCBOVUxMOwogICAgIGNoYXIgKnJldDsKICAgICBzdHJ1 Y3QgZ3JvdXAgZ3JidWY7CiAgICAgc3RydWN0IGdyb3VwICpnciA9M0QgTlVMTDsKQEAgLTcxNyw3 ICs3MTYsNiBAQCBzdGF0aWMgY2hhciAqdmlyR2V0R3JvdXBFbnQoZ2lkX3QgZ2lkKQogICAgIH0K CiAgICAgcmV0ID0zRCBnX3N0cmR1cChnci0+Z3JfbmFtZSk7Ci0gICAgVklSX0ZSRUUoc3RyYnVm KTsKICAgICByZXR1cm4gcmV0OwogfQoKQEAgLTc1OSw3ICs3NTcsNyBAQCBjaGFyICp2aXJHZXRH cm91cE5hbWUoZ2lkX3QgZ2lkKQogc3RhdGljIGludAogdmlyR2V0VXNlcklEQnlOYW1lKGNvbnN0 IGNoYXIgKm5hbWUsIHVpZF90ICp1aWQsIGJvb2wgbWlzc2luZ19vaykKIHsKLSAgICBjaGFyICpz dHJidWYgPTNEIE5VTEw7CisgICAgZ19hdXRvZnJlZSBjaGFyICpzdHJidWYgPTNEIE5VTEw7CiAg ICAgc3RydWN0IHBhc3N3ZCBwd2J1ZjsKICAgICBzdHJ1Y3QgcGFzc3dkICpwdyA9M0QgTlVMTDsK ICAgICBsb25nIHZhbCA9M0Qgc3lzY29uZihfU0NfR0VUUFdfUl9TSVpFX01BWCk7CkBAIC03NzUs NyArNzczLDcgQEAgdmlyR2V0VXNlcklEQnlOYW1lKGNvbnN0IGNoYXIgKm5hbWUsIHVpZF90ICp1 aWQsCmJvb2wgbWlzc2luZ19vaykKCiAgICAgd2hpbGUgKChyYyA9M0QgZ2V0cHduYW1fcihuYW1l LCAmcHdidWYsIHN0cmJ1Ziwgc3RyYnVmbGVuLCAmcHcpKSA9M0Q9Cj0zRCBFUkFOR0UpIHsKICAg ICAgICAgaWYgKFZJUl9SRVNJWkVfTihzdHJidWYsIHN0cmJ1Zmxlbiwgc3RyYnVmbGVuLCBzdHJi dWZsZW4pIDwgMCkKLSAgICAgICAgICAgIGdvdG8gY2xlYW51cDsKKyAgICAgICAgICAgIHJldHVy biByZXQ7CiAgICAgfQoKICAgICBpZiAoIXB3KSB7CkBAIC03ODgsMTYgKzc4NiwxMyBAQCB2aXJH ZXRVc2VySURCeU5hbWUoY29uc3QgY2hhciAqbmFtZSwgdWlkX3QgKnVpZCwKYm9vbCBtaXNzaW5n X29rKQogICAgICAgICB9CgogICAgICAgICByZXQgPTNEIDE7Ci0gICAgICAgIGdvdG8gY2xlYW51 cDsKKyAgICAgICAgcmV0dXJuIHJldDsKICAgICB9CgogICAgIGlmICh1aWQpCiAgICAgICAgICp1 aWQgPTNEIHB3LT5wd191aWQ7CiAgICAgcmV0ID0zRCAwOwoKLSBjbGVhbnVwOgotICAgIFZJUl9G UkVFKHN0cmJ1Zik7Ci0KICAgICByZXR1cm4gcmV0OwogfQoKQEAgLTg0MCw3ICs4MzUsNyBAQCB2 aXJHZXRVc2VySUQoY29uc3QgY2hhciAqdXNlciwgdWlkX3QgKnVpZCkKIHN0YXRpYyBpbnQKIHZp ckdldEdyb3VwSURCeU5hbWUoY29uc3QgY2hhciAqbmFtZSwgZ2lkX3QgKmdpZCwgYm9vbCBtaXNz aW5nX29rKQogewotICAgIGNoYXIgKnN0cmJ1ZiA9M0QgTlVMTDsKKyAgICBnX2F1dG9mcmVlIGNo YXIgKnN0cmJ1ZiA9M0QgTlVMTDsKICAgICBzdHJ1Y3QgZ3JvdXAgZ3JidWY7CiAgICAgc3RydWN0 IGdyb3VwICpnciA9M0QgTlVMTDsKICAgICBsb25nIHZhbCA9M0Qgc3lzY29uZihfU0NfR0VUR1Jf Ul9TSVpFX01BWCk7CkBAIC04NTYsNyArODUxLDcgQEAgdmlyR2V0R3JvdXBJREJ5TmFtZShjb25z dCBjaGFyICpuYW1lLCBnaWRfdCAqZ2lkLApib29sIG1pc3Npbmdfb2spCgogICAgIHdoaWxlICgo cmMgPTNEIGdldGdybmFtX3IobmFtZSwgJmdyYnVmLCBzdHJidWYsIHN0cmJ1ZmxlbiwgJmdyKSkg PTNEPQo9M0QgRVJBTkdFKSB7CiAgICAgICAgIGlmIChWSVJfUkVTSVpFX04oc3RyYnVmLCBzdHJi dWZsZW4sIHN0cmJ1Zmxlbiwgc3RyYnVmbGVuKSA8IDApCi0gICAgICAgICAgICBnb3RvIGNsZWFu dXA7CisgICAgICAgICAgICByZXR1cm4gcmV0OwogICAgIH0KCiAgICAgaWYgKCFncikgewpAQCAt ODY5LDE2ICs4NjQsMTMgQEAgdmlyR2V0R3JvdXBJREJ5TmFtZShjb25zdCBjaGFyICpuYW1lLCBn aWRfdAoqZ2lkLCBib29sIG1pc3Npbmdfb2spCiAgICAgICAgIH0KCiAgICAgICAgIHJldCA9M0Qg MTsKLSAgICAgICAgZ290byBjbGVhbnVwOworICAgICAgICByZXR1cm4gcmV0OwogICAgIH0KCiAg ICAgaWYgKGdpZCkKICAgICAgICAgKmdpZCA9M0QgZ3ItPmdyX2dpZDsKICAgICByZXQgPTNEIDA7 CgotIGNsZWFudXA6Ci0gICAgVklSX0ZSRUUoc3RyYnVmKTsKLQogICAgIHJldHVybiByZXQ7CiB9 CgpAQCAtOTQ5LDcgKzk0MSw3IEBAIGludAogdmlyR2V0R3JvdXBMaXN0KHVpZF90IHVpZCwgZ2lk X3QgZ2lkLCBnaWRfdCAqKmxpc3QpCiB7CiAgICAgaW50IHJldCA9M0QgMDsKLSAgICBjaGFyICp1 c2VyID0zRCBOVUxMOworICAgIGdfYXV0b2ZyZWUgY2hhciAqdXNlciA9M0QgTlVMTDsKICAgICBn aWRfdCBwcmltYXJ5OwoKICAgICAqbGlzdCA9M0QgTlVMTDsKQEAgLTk4NywxOSArOTc5LDE3IEBA IHZpckdldEdyb3VwTGlzdCh1aWRfdCB1aWQsIGdpZF90IGdpZCwgZ2lkX3QgKipsaXN0KQoKICAg ICAgICAgZm9yIChpID0zRCAwOyBpIDwgcmV0OyBpKyspIHsKICAgICAgICAgICAgIGlmICgoKmxp c3QpW2ldID0zRD0zRCBnaWQpCi0gICAgICAgICAgICAgICAgZ290byBjbGVhbnVwOworICAgICAg ICAgICAgICAgIHJldHVybiByZXQ7CiAgICAgICAgIH0KICAgICAgICAgaWYgKFZJUl9BUFBFTkRf RUxFTUVOVCgqbGlzdCwgaSwgZ2lkKSA8IDApIHsKICAgICAgICAgICAgIHJldCA9M0QgLTE7CiAg ICAgICAgICAgICBWSVJfRlJFRSgqbGlzdCk7Ci0gICAgICAgICAgICBnb3RvIGNsZWFudXA7Cisg ICAgICAgICAgICByZXR1cm4gcmV0OwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgcmV0 ID0zRCBpOwogICAgICAgICB9CiAgICAgfQoKLSBjbGVhbnVwOgotICAgIFZJUl9GUkVFKHVzZXIp OwogICAgIHJldHVybiByZXQ7CiB9CgpAQCAtMTQwNSw4ICsxMzk1LDggQEAgdmlyU2V0RGV2aWNl VW5wcml2U0dJTyhjb25zdCBjaGFyICpwYXRoLAogICAgICAgICAgICAgICAgICAgICAgICBjb25z dCBjaGFyICpzeXNmc19kaXIsCiAgICAgICAgICAgICAgICAgICAgICAgIGludCB1bnByaXZfc2dp bykKIHsKLSAgICBjaGFyICpzeXNmc19wYXRoID0zRCBOVUxMOwotICAgIGNoYXIgKnZhbCA9M0Qg TlVMTDsKKyAgICBnX2F1dG9mcmVlIGNoYXIgKnN5c2ZzX3BhdGggPTNEIE5VTEw7CisgICAgZ19h dXRvZnJlZSBjaGFyICp2YWwgPTNEIE5VTEw7CiAgICAgaW50IHJldCA9M0QgLTE7CiAgICAgaW50 IHJjOwoKQEAgLTE0MTYsMjAgKzE0MDYsMTcgQEAgdmlyU2V0RGV2aWNlVW5wcml2U0dJTyhjb25z dCBjaGFyICpwYXRoLAogICAgIGlmICghdmlyRmlsZUV4aXN0cyhzeXNmc19wYXRoKSkgewogICAg ICAgICB2aXJSZXBvcnRFcnJvcihWSVJfRVJSX09QRVJBVElPTl9JTlZBTElELCAiJXMiLAogICAg ICAgICAgICAgICAgICAgICAgICBfKCJ1bnByaXZfc2dpbyBpcyBub3Qgc3VwcG9ydGVkIGJ5IHRo aXMga2VybmVsIikpOwotICAgICAgICBnb3RvIGNsZWFudXA7CisgICAgICAgIHJldHVybiByZXQ7 CiAgICAgfQoKICAgICB2YWwgPTNEIGdfc3RyZHVwX3ByaW50ZigiJWQiLCB1bnByaXZfc2dpbyk7 CgogICAgIGlmICgocmMgPTNEIHZpckZpbGVXcml0ZVN0cihzeXNmc19wYXRoLCB2YWwsIDApKSA8 IDApIHsKICAgICAgICAgdmlyUmVwb3J0U3lzdGVtRXJyb3IoLXJjLCBfKCJmYWlsZWQgdG8gc2V0 ICVzIiksIHN5c2ZzX3BhdGgpOwotICAgICAgICBnb3RvIGNsZWFudXA7CisgICAgICAgIHJldHVy biByZXQ7CiAgICAgfQoKICAgICByZXQgPTNEIDA7Ci0gY2xlYW51cDoKLSAgICBWSVJfRlJFRShz eXNmc19wYXRoKTsKLSAgICBWSVJfRlJFRSh2YWwpOwogICAgIHJldHVybiByZXQ7CiB9CgpAQCAt MTQzOCw4ICsxNDI1LDggQEAgdmlyR2V0RGV2aWNlVW5wcml2U0dJTyhjb25zdCBjaGFyICpwYXRo LAogICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpzeXNmc19kaXIsCiAgICAgICAg ICAgICAgICAgICAgICAgIGludCAqdW5wcml2X3NnaW8pCiB7Ci0gICAgY2hhciAqc3lzZnNfcGF0 aCA9M0QgTlVMTDsKLSAgICBjaGFyICpidWYgPTNEIE5VTEw7CisgICAgZ19hdXRvZnJlZSBjaGFy ICpzeXNmc19wYXRoID0zRCBOVUxMOworICAgIGdfYXV0b2ZyZWUgY2hhciAqYnVmID0zRCBOVUxM OwogICAgIGNoYXIgKnRtcCA9M0QgTlVMTDsKICAgICBpbnQgcmV0ID0zRCAtMTsKCkBAIC0xNDQ5 LDExICsxNDM2LDExIEBAIHZpckdldERldmljZVVucHJpdlNHSU8oY29uc3QgY2hhciAqcGF0aCwK ICAgICBpZiAoIXZpckZpbGVFeGlzdHMoc3lzZnNfcGF0aCkpIHsKICAgICAgICAgdmlyUmVwb3J0 RXJyb3IoVklSX0VSUl9PUEVSQVRJT05fSU5WQUxJRCwgIiVzIiwKICAgICAgICAgICAgICAgICAg ICAgICAgXygidW5wcml2X3NnaW8gaXMgbm90IHN1cHBvcnRlZCBieSB0aGlzIGtlcm5lbCIpKTsK LSAgICAgICAgZ290byBjbGVhbnVwOworICAgICAgICByZXR1cm4gcmV0OwogICAgIH0KCiAgICAg aWYgKHZpckZpbGVSZWFkQWxsKHN5c2ZzX3BhdGgsIDEwMjQsICZidWYpIDwgMCkKLSAgICAgICAg Z290byBjbGVhbnVwOworICAgICAgICByZXR1cm4gcmV0OwoKICAgICBpZiAoKHRtcCA9M0Qgc3Ry Y2hyKGJ1ZiwgJ1xuJykpKQogICAgICAgICAqdG1wID0zRCAnXDAnOwpAQCAtMTQ2MSwxMyArMTQ0 OCwxMCBAQCB2aXJHZXREZXZpY2VVbnByaXZTR0lPKGNvbnN0IGNoYXIgKnBhdGgsCiAgICAgaWYg KHZpclN0clRvTG9uZ19pKGJ1ZiwgTlVMTCwgMTAsIHVucHJpdl9zZ2lvKSA8IDApIHsKICAgICAg ICAgdmlyUmVwb3J0RXJyb3IoVklSX0VSUl9JTlRFUk5BTF9FUlJPUiwKICAgICAgICAgICAgICAg ICAgICAgICAgXygiZmFpbGVkIHRvIHBhcnNlIHZhbHVlIG9mICVzIiksIHN5c2ZzX3BhdGgpOwot ICAgICAgICBnb3RvIGNsZWFudXA7CisgICAgICAgIHJldHVybiByZXQ7CiAgICAgfQoKICAgICBy ZXQgPTNEIDA7Ci0gY2xlYW51cDoKLSAgICBWSVJfRlJFRShzeXNmc19wYXRoKTsKLSAgICBWSVJf RlJFRShidWYpOwogICAgIHJldHVybiByZXQ7CiB9CgpAQCAtMTQ4OCw3ICsxNDcyLDcgQEAgdmly UGFyc2VPd25lcnNoaXBJZHMoY29uc3QgY2hhciAqbGFiZWwsIHVpZF90Cip1aWRQdHIsIGdpZF90 ICpnaWRQdHIpCiAgICAgaW50IHJjID0zRCAtMTsKICAgICB1aWRfdCB0aGV1aWQ7CiAgICAgZ2lk X3QgdGhlZ2lkOwotICAgIGNoYXIgKnRtcF9sYWJlbCA9M0QgTlVMTDsKKyAgICBnX2F1dG9mcmVl IGNoYXIgKnRtcF9sYWJlbCA9M0QgTlVMTDsKICAgICBjaGFyICpzZXAgPTNEIE5VTEw7CiAgICAg Y2hhciAqb3duZXIgPTNEIE5VTEw7CiAgICAgY2hhciAqZ3JvdXAgPTNEIE5VTEw7CkBAIC0xNTAx LDcgKzE0ODUsNyBAQCB2aXJQYXJzZU93bmVyc2hpcElkcyhjb25zdCBjaGFyICpsYWJlbCwgdWlk X3QKKnVpZFB0ciwgZ2lkX3QgKmdpZFB0cikKICAgICAgICAgdmlyUmVwb3J0RXJyb3IoVklSX0VS Ul9JTlZBTElEX0FSRywKICAgICAgICAgICAgICAgICAgICAgICAgXygiRmFpbGVkIHRvIHBhcnNl IHVpZCBhbmQgZ2lkIGZyb20gJyVzJyIpLAogICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCk7 Ci0gICAgICAgIGdvdG8gY2xlYW51cDsKKyAgICAgICAgcmV0dXJuIHJjOwogICAgIH0KICAgICAq c2VwID0zRCAnXDAnOwogICAgIG93bmVyID0zRCB0bXBfbGFiZWw7CkBAIC0xNTEyLDcgKzE0OTYs NyBAQCB2aXJQYXJzZU93bmVyc2hpcElkcyhjb25zdCBjaGFyICpsYWJlbCwgdWlkX3QKKnVpZFB0 ciwgZ2lkX3QgKmdpZFB0cikKICAgICAgKi8KICAgICBpZiAodmlyR2V0VXNlcklEKG93bmVyLCAm dGhldWlkKSA8IDAgfHwKICAgICAgICAgdmlyR2V0R3JvdXBJRChncm91cCwgJnRoZWdpZCkgPCAw KQotICAgICAgICBnb3RvIGNsZWFudXA7CisgICAgICAgIHJldHVybiByYzsKCiAgICAgaWYgKHVp ZFB0cikKICAgICAgICAgKnVpZFB0ciA9M0QgdGhldWlkOwpAQCAtMTUyMCwxMCArMTUwNCw2IEBA IHZpclBhcnNlT3duZXJzaGlwSWRzKGNvbnN0IGNoYXIgKmxhYmVsLCB1aWRfdAoqdWlkUHRyLCBn aWRfdCAqZ2lkUHRyKQogICAgICAgICAqZ2lkUHRyID0zRCB0aGVnaWQ7CgogICAgIHJjID0zRCAw OwotCi0gY2xlYW51cDoKLSAgICBWSVJfRlJFRSh0bXBfbGFiZWwpOwotCiAgICAgcmV0dXJuIHJj OwogfQoKZGlmZiAtLWdpdCBhL3NyYy91dGlsL3ZpcnZoYmEuYyBiL3NyYy91dGlsL3ZpcnZoYmEu YwppbmRleCBhNGU4ODAyNGQxLi5kODY0MmVhMDQxIDEwMDY0NAotLS0gYS9zcmMvdXRpbC92aXJ2 aGJhLmMKKysrIGIvc3JjL3V0aWwvdmlydmhiYS5jCkBAIC00OSw3ICs0OSw3IEBAIGJvb2wKIHZp clZIQkFQYXRoRXhpc3RzKGNvbnN0IGNoYXIgKnN5c2ZzX3ByZWZpeCwKICAgICAgICAgICAgICAg ICAgIGludCBob3N0KQogewotICAgIGNoYXIgKnN5c2ZzX3BhdGggPTNEIE5VTEw7CisgICAgZ19h dXRvZnJlZSBjaGFyICpzeXNmc19wYXRoID0zRCBOVUxMOwogICAgIGJvb2wgcmV0ID0zRCBmYWxz ZTsKCiAgICAgc3lzZnNfcGF0aCA9M0QgZ19zdHJkdXBfcHJpbnRmKCIlcy9ob3N0JWQiLApAQCAt NTgsNyArNTgsNiBAQCB2aXJWSEJBUGF0aEV4aXN0cyhjb25zdCBjaGFyICpzeXNmc19wcmVmaXgs CiAgICAgaWYgKHZpckZpbGVFeGlzdHMoc3lzZnNfcGF0aCkpCiAgICAgICAgIHJldCA9M0QgdHJ1 ZTsKCi0gICAgVklSX0ZSRUUoc3lzZnNfcGF0aCk7CiAgICAgcmV0dXJuIHJldDsKIH0KCkBAIC03 OSw4ICs3OCw4IEBAIGJvb2wKIHZpclZIQkFJc1Zwb3J0Q2FwYWJsZShjb25zdCBjaGFyICpzeXNm c19wcmVmaXgsCiAgICAgICAgICAgICAgICAgICAgICAgaW50IGhvc3QpCiB7Ci0gICAgY2hhciAq c2NzaV9ob3N0X3BhdGggPTNEIE5VTEw7Ci0gICAgY2hhciAqZmNfaG9zdF9wYXRoID0zRCBOVUxM OworICAgIGdfYXV0b2ZyZWUgY2hhciAqc2NzaV9ob3N0X3BhdGggPTNEIE5VTEw7CisgICAgZ19h dXRvZnJlZSBjaGFyICpmY19ob3N0X3BhdGggPTNEIE5VTEw7CiAgICAgYm9vbCByZXQgPTNEIGZh bHNlOwoKICAgICBmY19ob3N0X3BhdGggPTNEIGdfc3RyZHVwX3ByaW50ZigiJXMvaG9zdCVkLyVz IiwKQEAgLTk0LDggKzkzLDYgQEAgdmlyVkhCQUlzVnBvcnRDYXBhYmxlKGNvbnN0IGNoYXIgKnN5 c2ZzX3ByZWZpeCwKICAgICBpZiAodmlyRmlsZUV4aXN0cyhmY19ob3N0X3BhdGgpIHx8IHZpckZp bGVFeGlzdHMoc2NzaV9ob3N0X3BhdGgpKQogICAgICAgICByZXQgPTNEIHRydWU7CgotICAgIFZJ Ul9GUkVFKGZjX2hvc3RfcGF0aCk7Ci0gICAgVklSX0ZSRUUoc2NzaV9ob3N0X3BhdGgpOwogICAg IHJldHVybiByZXQ7CiB9CgpAQCAtMTE1LDE5ICsxMTIsMTkgQEAgdmlyVkhCQUdldENvbmZpZyhj b25zdCBjaGFyICpzeXNmc19wcmVmaXgsCiAgICAgICAgICAgICAgICAgIGludCBob3N0LAogICAg ICAgICAgICAgICAgICBjb25zdCBjaGFyICplbnRyeSkKIHsKLSAgICBjaGFyICpzeXNmc19wYXRo ID0zRCBOVUxMOworICAgIGdfYXV0b2ZyZWUgY2hhciAqc3lzZnNfcGF0aCA9M0QgTlVMTDsKICAg ICBjaGFyICpwID0zRCBOVUxMOwotICAgIGNoYXIgKmJ1ZiA9M0QgTlVMTDsKKyAgICBnX2F1dG9m cmVlIGNoYXIgKmJ1ZiA9M0QgTlVMTDsKICAgICBjaGFyICpyZXN1bHQgPTNEIE5VTEw7CgogICAg IHN5c2ZzX3BhdGggPTNEIGdfc3RyZHVwX3ByaW50ZigiJXMvaG9zdCVkLyVzIiwKICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHN5c2ZzX3ByZWZpeCA/IHN5c2ZzX3ByZWZpeCA6ClNZ U0ZTX0ZDX0hPU1RfUEFUSCwgaG9zdCwgZW50cnkpOwoKICAgICBpZiAoIXZpckZpbGVFeGlzdHMo c3lzZnNfcGF0aCkpCi0gICAgICAgIGdvdG8gY2xlYW51cDsKKyAgICAgICAgcmV0dXJuIHJlc3Vs dDsKCiAgICAgaWYgKHZpckZpbGVSZWFkQWxsKHN5c2ZzX3BhdGgsIDEwMjQsICZidWYpIDwgMCkK LSAgICAgICAgZ290byBjbGVhbnVwOworICAgICAgICByZXR1cm4gcmVzdWx0OwoKICAgICBpZiAo KHAgPTNEIHN0cmNocihidWYsICdcbicpKSkKICAgICAgICAgKnAgPTNEICdcMCc7CkBAIC0xMzks OSArMTM2LDYgQEAgdmlyVkhCQUdldENvbmZpZyhjb25zdCBjaGFyICpzeXNmc19wcmVmaXgsCgog ICAgIHJlc3VsdCA9M0QgZ19zdHJkdXAocCk7CgotIGNsZWFudXA6Ci0gICAgVklSX0ZSRUUoc3lz ZnNfcGF0aCk7Ci0gICAgVklSX0ZSRUUoYnVmKTsKICAgICByZXR1cm4gcmVzdWx0OwogfQoKQEAg LTE2MCw4ICsxNTQsOCBAQCB2aXJWSEJBRmluZFZwb3J0SG9zdChjb25zdCBjaGFyICpzeXNmc19w cmVmaXgpCiAgICAgY29uc3QgY2hhciAqcHJlZml4ID0zRCBzeXNmc19wcmVmaXggPyBzeXNmc19w cmVmaXggOiBTWVNGU19GQ19IT1NUX1BBVD0KSDsKICAgICBnX2F1dG9wdHIoRElSKSBkaXIgPTNE IE5VTEw7CiAgICAgc3RydWN0IGRpcmVudCAqZW50cnkgPTNEIE5VTEw7Ci0gICAgY2hhciAqbWF4 X3Zwb3J0cyA9M0QgTlVMTDsKLSAgICBjaGFyICp2cG9ydHMgPTNEIE5VTEw7CisgICAgZ19hdXRv ZnJlZSBjaGFyICptYXhfdnBvcnRzID0zRCBOVUxMOworICAgIGdfYXV0b2ZyZWUgY2hhciAqdnBv cnRzID0zRCBOVUxMOwogICAgIGNoYXIgKnN0YXRlID0zRCBOVUxMOwogICAgIGNoYXIgKnJldCA9 M0QgTlVMTDsKCkBAIC0yMTIsMTYgKzIwNiwxMyBAQCB2aXJWSEJBRmluZFZwb3J0SG9zdChjb25z dCBjaGFyICpzeXNmc19wcmVmaXgpCiAgICAgICAgICAgICAoKHN0cmxlbihtYXhfdnBvcnRzKSA9 M0Q9M0Qgc3RybGVuKHZwb3J0cykpICYmCiAgICAgICAgICAgICAgc3RyY21wKG1heF92cG9ydHMs IHZwb3J0cykgPiAwKSkgewogICAgICAgICAgICAgcmV0ID0zRCBnX3N0cmR1cChlbnRyeS0+ZF9u YW1lKTsKLSAgICAgICAgICAgIGdvdG8gY2xlYW51cDsKKyAgICAgICAgICAgIHJldHVybiByZXQ7 CiAgICAgICAgIH0KCiAgICAgICAgIFZJUl9GUkVFKG1heF92cG9ydHMpOwogICAgICAgICBWSVJf RlJFRSh2cG9ydHMpOwogICAgIH0KCi0gY2xlYW51cDoKLSAgICBWSVJfRlJFRShtYXhfdnBvcnRz KTsKLSAgICBWSVJfRlJFRSh2cG9ydHMpOwogICAgIHJldHVybiByZXQ7CiB9CgpAQCAtMjQxLDcg KzIzMiw4IEBAIHZpclZIQkFNYW5hZ2VWcG9ydChjb25zdCBpbnQgcGFyZW50X2hvc3QsCiAgICAg ICAgICAgICAgICAgICAgaW50IG9wZXJhdGlvbikKIHsKICAgICBpbnQgcmV0ID0zRCAtMTsKLSAg ICBjaGFyICpvcGVyYXRpb25fcGF0aCA9M0QgTlVMTCwgKnZwb3J0X25hbWUgPTNEIE5VTEw7Cisg ICAgZ19hdXRvZnJlZSBjaGFyICpvcGVyYXRpb25fcGF0aCA9M0QgTlVMTDsKKyAgICBnX2F1dG9m cmVlIGNoYXIgKnZwb3J0X25hbWUgPTNEIE5VTEw7CiAgICAgY29uc3QgY2hhciAqb3BlcmF0aW9u X2ZpbGUgPTNEIE5VTEw7CgogICAgIHN3aXRjaCAob3BlcmF0aW9uKSB7CkBAIC0yNTQsNyArMjQ2 LDcgQEAgdmlyVkhCQU1hbmFnZVZwb3J0KGNvbnN0IGludCBwYXJlbnRfaG9zdCwKICAgICBkZWZh dWx0OgogICAgICAgICB2aXJSZXBvcnRFcnJvcihWSVJfRVJSX09QRVJBVElPTl9JTlZBTElELAog ICAgICAgICAgICAgICAgICAgICAgICBfKCJJbnZhbGlkIHZwb3J0IG9wZXJhdGlvbiAoJWQpIiks IG9wZXJhdGlvbik7Ci0gICAgICAgIGdvdG8gY2xlYW51cDsKKyAgICAgICAgcmV0dXJuIHJldDsK ICAgICB9CgogICAgIG9wZXJhdGlvbl9wYXRoID0zRCBnX3N0cmR1cF9wcmludGYoIiVzL2hvc3Ql ZC8lcyIsIFNZU0ZTX0ZDX0hPU1RfUEFUSCwKQEAgLTI3MCw3ICsyNjIsNyBAQCB2aXJWSEJBTWFu YWdlVnBvcnQoY29uc3QgaW50IHBhcmVudF9ob3N0LAogICAgICAgICAgICAgICAgICAgICAgICAg ICAgXygidnBvcnQgb3BlcmF0aW9uICclcycgaXMgbm90IHN1cHBvcnRlZCAiCiAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICJmb3IgaG9zdCVkIiksCiAgICAgICAgICAgICAgICAgICAgICAg ICAgICBvcGVyYXRpb25fZmlsZSwgcGFyZW50X2hvc3QpOwotICAgICAgICAgICAgZ290byBjbGVh bnVwOworICAgICAgICAgICAgcmV0dXJuIHJldDsKICAgICAgICAgfQogICAgIH0KCkBAIC0yOTAs OSArMjgyLDYgQEAgdmlyVkhCQU1hbmFnZVZwb3J0KGNvbnN0IGludCBwYXJlbnRfaG9zdCwKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAidnBvcnQgY3JlYXRlL2RlbGV0ZSBmYWlsZWQi KSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdnBvcnRfbmFtZSwgb3BlcmF0aW9uX3Bh dGgpOwoKLSBjbGVhbnVwOgotICAgIFZJUl9GUkVFKHZwb3J0X25hbWUpOwotICAgIFZJUl9GUkVF KG9wZXJhdGlvbl9wYXRoKTsKICAgICByZXR1cm4gcmV0OwogfQoKQEAgLTMxNSw4ICszMDQsOCBA QCB2aGJhUmVhZENvbXBhcmVXV04oY29uc3QgY2hhciAqcHJlZml4LAogICAgICAgICAgICAgICAg ICAgIGNvbnN0IGNoYXIgKmZfbmFtZSwKICAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICp3 d24pCiB7Ci0gICAgY2hhciAqcGF0aDsKLSAgICBjaGFyICpidWYgPTNEIE5VTEw7CisgICAgZ19h dXRvZnJlZSBjaGFyICpwYXRoID0zRCBOVUxMOworICAgIGdfYXV0b2ZyZWUgY2hhciAqYnVmID0z RCBOVUxMOwogICAgIGNoYXIgKnA7CiAgICAgaW50IHJldCA9M0QgLTE7CgpAQCAtMzI0LDExICsz MTMsMTEgQEAgdmhiYVJlYWRDb21wYXJlV1dOKGNvbnN0IGNoYXIgKnByZWZpeCwKCiAgICAgaWYg KCF2aXJGaWxlRXhpc3RzKHBhdGgpKSB7CiAgICAgICAgIHJldCA9M0QgMDsKLSAgICAgICAgZ290 byBjbGVhbnVwOworICAgICAgICByZXR1cm4gcmV0OwogICAgIH0KCiAgICAgaWYgKHZpckZpbGVS ZWFkQWxsKHBhdGgsIDEwMjQsICZidWYpIDwgMCkKLSAgICAgICAgZ290byBjbGVhbnVwOworICAg ICAgICByZXR1cm4gcmV0OwoKICAgICBpZiAoKHAgPTNEIHN0cmNocihidWYsICdcbicpKSkKICAg ICAgICAgKnAgPTNEICdcMCc7CkBAIC0zNDIsMTAgKzMzMSw2IEBAIHZoYmFSZWFkQ29tcGFyZVdX Tihjb25zdCBjaGFyICpwcmVmaXgsCiAgICAgZWxzZQogICAgICAgICByZXQgPTNEIDE7CgotIGNs ZWFudXA6Ci0gICAgVklSX0ZSRUUocGF0aCk7Ci0gICAgVklSX0ZSRUUoYnVmKTsKLQogICAgIHJl dHVybiByZXQ7CiB9CgpAQCAtNDA3LDcgKzM5Miw3IEBAIHZpclZIQkFHZXRIb3N0QnlGYWJyaWNX V04oY29uc3QgY2hhciAqc3lzZnNfcHJlZml4LAogICAgIGNvbnN0IGNoYXIgKnByZWZpeCA9M0Qg c3lzZnNfcHJlZml4ID8gc3lzZnNfcHJlZml4IDogU1lTRlNfRkNfSE9TVF9QQVQ9Ckg7CiAgICAg c3RydWN0IGRpcmVudCAqZW50cnkgPTNEIE5VTEw7CiAgICAgZ19hdXRvcHRyKERJUikgZGlyID0z RCBOVUxMOwotICAgIGNoYXIgKnZwb3J0X2NyZWF0ZV9wYXRoID0zRCBOVUxMOworICAgIGdfYXV0 b2ZyZWUgY2hhciAqdnBvcnRfY3JlYXRlX3BhdGggPTNEIE5VTEw7CiAgICAgY2hhciAqcmV0ID0z RCBOVUxMOwoKICAgICBpZiAodmlyRGlyT3BlbigmZGlyLCBwcmVmaXgpIDwgMCkKQEAgLTQyOCw3 ICs0MTMsNyBAQCB2aXJWSEJBR2V0SG9zdEJ5RmFicmljV1dOKGNvbnN0IGNoYXIgKnN5c2ZzX3By ZWZpeCwKCiAgICAgICAgIGlmICgocmMgPTNEIHZoYmFSZWFkQ29tcGFyZVdXTihwcmVmaXgsIGVu dHJ5LT5kX25hbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImZhYnJp Y19uYW1lIiwgZmFicmljX3d3bikpIDwgMCkKLSAgICAgICAgICAgIGdvdG8gY2xlYW51cDsKKyAg ICAgICAgICAgIHJldHVybiByZXQ7CgogICAgICAgICBpZiAocmMgPTNEPTNEIDApCiAgICAgICAg ICAgICBjb250aW51ZTsKQEAgLTQzNyw4ICs0MjIsNiBAQCB2aXJWSEJBR2V0SG9zdEJ5RmFicmlj V1dOKGNvbnN0IGNoYXIgKnN5c2ZzX3ByZWZpeCwKICAgICAgICAgYnJlYWs7CiAgICAgfQoKLSBj bGVhbnVwOgotICAgIFZJUl9GUkVFKHZwb3J0X2NyZWF0ZV9wYXRoKTsKICAgICByZXR1cm4gcmV0 OwogfQoKZGlmZiAtLWdpdCBhL3NyYy91dGlsL3ZpcnhtbC5jIGIvc3JjL3V0aWwvdmlyeG1sLmMK aW5kZXggYTNiODE5ZDg1Yy4uN2RmNTBlNGI0ZCAxMDA2NDQKLS0tIGEvc3JjL3V0aWwvdmlyeG1s LmMKKysrIGIvc3JjL3V0aWwvdmlyeG1sLmMKQEAgLTY5Niw4ICs2OTYsOCBAQCBjYXRjaFhNTEVy cm9yKHZvaWQgKmN0eCwgY29uc3QgY2hhciAqbXNnIEdfR05VQ19VTlVTRUQsPQogLi4uKQogICAg IHVuc2lnbmVkIGludCBuLCBjb2w7ICAgICAgICAvKiBHQ0Mgd2FybnMgaWYgc2lnbmVkLCBiZWNh dXNlCmNvbXBhcmVkIHdpdGggc2l6ZW9mKCkgKi8KICAgICBpbnQgZG9tY29kZSA9M0QgVklSX0ZS T01fWE1MOwogICAgIGdfYXV0byh2aXJCdWZmZXIpIGJ1ZiA9M0QgVklSX0JVRkZFUl9JTklUSUFM SVpFUjsKLSAgICBjaGFyICpjb250ZXh0c3RyID0zRCBOVUxMOwotICAgIGNoYXIgKnBvaW50ZXJz dHIgPTNEIE5VTEw7CisgICAgZ19hdXRvZnJlZSBjaGFyICpjb250ZXh0c3RyID0zRCBOVUxMOwor ICAgIGdfYXV0b2ZyZWUgY2hhciAqcG9pbnRlcnN0ciA9M0QgTlVMTDsKCgogICAgIC8qIGNvbmRp dGlvbnMgZm9yIGVycm9yIHByaW50aW5nICovCkBAIC03NjMsOSArNzYzLDYgQEAgY2F0Y2hYTUxF cnJvcih2b2lkICpjdHgsIGNvbnN0IGNoYXIgKm1zZyBHX0dOVUNfVU5VU0VELD0KIC4uLikKICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHRzdHIsCiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBwb2ludGVyc3RyKTsKICAgICB9Ci0KLSAgICBWSVJfRlJFRShjb250ZXh0 c3RyKTsKLSAgICBWSVJfRlJFRShwb2ludGVyc3RyKTsKIH0KCiAvKioKLS09MjAKR2l0TGFi --00000000000081844b05b45393e7 Content-Type: text/html; charset="UTF-8"
From 82f992c7ff4ef59682f42c863fca242dd84208f9 Mon Sep 17 00:00:00 2001
From: Barrett Schonefeld <bschoney@utexas.edu>
Date: Mon, 9 Nov 2020 16:07:25 -0600
Subject: [PATCH] util: convert char pointers to use g_autofree

additional conversions to the GLib API in src/util per issue #11.

Related issue: https://gitlab.com/libvirt/libvirt/-/issues/11

Signed-off-by: Barrett Schonefeld <bschoney@utexas.edu>
---
 src/util/vircgroupv1.c           |  3 +-
 src/util/virdnsmasq.c            | 43 ++++++++-------------
 src/util/virfile.c               |  9 ++---
 src/util/virhostcpu.c            |  4 +-
 src/util/virlockspace.c          |  6 +--
 src/util/virlog.c                | 12 ++----
 src/util/virmacmap.c             |  3 +-
 src/util/virnetdevbandwidth.c    | 48 ++++++++---------------
 src/util/virresctrl.c            | 25 ++++--------
 src/util/virrotatingfile.c       | 11 ++----
 src/util/virscsihost.c           | 25 +++++-------
 src/util/virsecret.c             | 14 +++----
 src/util/virstorageencryption.c  | 19 +++------
 src/util/virstoragefilebackend.c |  4 +-
 src/util/virsysinfo.c            | 18 +++------
 src/util/viruri.c                |  7 +---
 src/util/virutil.c               | 66 +++++++++++---------------------
 src/util/virvhba.c               | 57 ++++++++++-----------------
 src/util/virxml.c                |  7 +---
 19 files changed, 130 insertions(+), 251 deletions(-)

diff --git a/src/util/vircgroupv1.c b/src/util/vircgroupv1.c
index 731e9d61d4..984cd50409 100644
--- a/src/util/vircgroupv1.c
+++ b/src/util/vircgroupv1.c
@@ -1549,7 +1549,7 @@ virCgroupV1GetMemoryStat(virCgroupPtr group,
                          unsigned long long *unevictable)
 {
     int ret = -1;
-    char *stat = NULL;
+    g_autofree char *stat = NULL;
     char *line = NULL;
     unsigned long long cacheVal = 0;
     unsigned long long activeAnonVal = 0;
@@ -1614,7 +1614,6 @@ virCgroupV1GetMemoryStat(virCgroupPtr group,
     ret = 0;
 
  cleanup:
-    VIR_FREE(stat);
     return ret;
 }
 
diff --git a/src/util/virdnsmasq.c b/src/util/virdnsmasq.c
index 9030f9218a..93bc4a129f 100644
--- a/src/util/virdnsmasq.c
+++ b/src/util/virdnsmasq.c
@@ -164,7 +164,7 @@ addnhostsWrite(const char *path,
                dnsmasqAddnHost *hosts,
                unsigned int nhosts)
 {
-    char *tmp;
+    g_autofree char *tmp = NULL;
     FILE *f;
     bool istmp = true;
     size_t i, j;
@@ -180,7 +180,7 @@ addnhostsWrite(const char *path,
         istmp = false;
         if (!(f = fopen(path, "w"))) {
             rc = -errno;
-            goto cleanup;
+            return rc;
         }
     }
 
@@ -192,7 +192,7 @@ addnhostsWrite(const char *path,
             if (istmp)
                 unlink(tmp);
 
-            goto cleanup;
+            return rc;
         }
 
         for (j = 0; j < hosts[i].nhostnames; j++) {
@@ -203,7 +203,7 @@ addnhostsWrite(const char *path,
                 if (istmp)
                     unlink(tmp);
 
-                goto cleanup;
+                return rc;
             }
         }
 
@@ -214,24 +214,21 @@ addnhostsWrite(const char *path,
             if (istmp)
                 unlink(tmp);
 
-            goto cleanup;
+            return rc;
         }
     }
 
     if (VIR_FCLOSE(f) == EOF) {
         rc = -errno;
-        goto cleanup;
+        return rc;
     }
 
     if (istmp && rename(tmp, path) < 0) {
         rc = -errno;
         unlink(tmp);
-        goto cleanup;
+        return rc;
     }
 
- cleanup:
-    VIR_FREE(tmp);
-
     return rc;
 }
 
@@ -364,7 +361,7 @@ hostsfileWrite(const char *path,
                dnsmasqDhcpHost *hosts,
                unsigned int nhosts)
 {
-    char *tmp;
+    g_autofree char *tmp = NULL;
     FILE *f;
     bool istmp = true;
     size_t i;
@@ -380,7 +377,7 @@ hostsfileWrite(const char *path,
         istmp = false;
         if (!(f = fopen(path, "w"))) {
             rc = -errno;
-            goto cleanup;
+            return rc;
         }
     }
 
@@ -392,24 +389,21 @@ hostsfileWrite(const char *path,
             if (istmp)
                 unlink(tmp);
 
-            goto cleanup;
+            return rc;
         }
     }
 
     if (VIR_FCLOSE(f) == EOF) {
         rc = -errno;
-        goto cleanup;
+        return rc;
     }
 
     if (istmp && rename(tmp, path) < 0) {
         rc = -errno;
         unlink(tmp);
-        goto cleanup;
+        return rc;
     }
 
- cleanup:
-    VIR_FREE(tmp);
-
     return rc;
 }
 
@@ -686,15 +680,13 @@ static int
 dnsmasqCapsSetFromFile(dnsmasqCapsPtr caps, const char *path)
 {
     int ret = -1;
-    char *buf = NULL;
+    g_autofree char *buf = NULL;
 
     if (virFileReadAll(path, 1024 * 1024, &buf) < 0)
-        goto cleanup;
+        return ret;
 
     ret = dnsmasqCapsSetFromBuffer(caps, buf);
 
- cleanup:
-    VIR_FREE(buf);
     return ret;
 }
 
@@ -704,7 +696,9 @@ dnsmasqCapsRefreshInternal(dnsmasqCapsPtr caps, bool force)
     int ret = -1;
     struct stat sb;
     virCommandPtr cmd = NULL;
-    char *help = NULL, *version = NULL, *complete = NULL;
+    g_autofree char *help = NULL;
+    g_autofree char *version = NULL;
+    g_autofree char *complete = NULL;
 
     if (!caps || caps->noRefresh)
         return 0;
@@ -749,9 +743,6 @@ dnsmasqCapsRefreshInternal(dnsmasqCapsPtr caps, bool force)
 
  cleanup:
     virCommandFree(cmd);
-    VIR_FREE(help);
-    VIR_FREE(version);
-    VIR_FREE(complete);
     return ret;
 }
 
diff --git a/src/util/virfile.c b/src/util/virfile.c
index f57272ca2f..38207f1948 100644
--- a/src/util/virfile.c
+++ b/src/util/virfile.c
@@ -3328,9 +3328,9 @@ virFileIsSharedFixFUSE(const char *path,
     FILE *f = NULL;
     struct mntent mb;
     char mntbuf[1024];
-    char *mntDir = NULL;
-    char *mntType = NULL;
-    char *canonPath = NULL;
+    g_autofree char *mntDir = NULL;
+    g_autofree char *mntType = NULL;
+    g_autofree char *canonPath = NULL;
     size_t maxMatching = 0;
     int ret = -1;
 
@@ -3381,9 +3381,6 @@ virFileIsSharedFixFUSE(const char *path,
 
     ret = 0;
  cleanup:
-    VIR_FREE(canonPath);
-    VIR_FREE(mntType);
-    VIR_FREE(mntDir);
     endmntent(f);
     return ret;
 }
diff --git a/src/util/virhostcpu.c b/src/util/virhostcpu.c
index c531d65f86..4f6c3390ce 100644
--- a/src/util/virhostcpu.c
+++ b/src/util/virhostcpu.c
@@ -87,7 +87,7 @@ virHostCPUGetStatsFreeBSD(int cpuNum,
                           int *nparams)
 {
     const char *sysctl_name;
-    long *cpu_times;
+    g_autofree long *cpu_times = NULL;
     struct clockinfo clkinfo;
     size_t i, j, cpu_times_size, clkinfo_size;
     int cpu_times_num, offset, hz, stathz, ret = -1;
@@ -172,8 +172,6 @@ virHostCPUGetStatsFreeBSD(int cpuNum,
     ret = 0;
 
  cleanup:
-    VIR_FREE(cpu_times);
-
     return ret;
 }
 
diff --git a/src/util/virlockspace.c b/src/util/virlockspace.c
index b90e13f506..71d5dfb83e 100644
--- a/src/util/virlockspace.c
+++ b/src/util/virlockspace.c
@@ -515,7 +515,7 @@ int virLockSpaceCreateResource(virLockSpacePtr lockspace,
                                const char *resname)
 {
     int ret = -1;
-    char *respath = NULL;
+    g_autofree char *respath = NULL;
 
     VIR_DEBUG("lockspace=%p resname=%s", lockspace, resname);
 
@@ -538,7 +538,6 @@ int virLockSpaceCreateResource(virLockSpacePtr lockspace,
 
  cleanup:
     virMutexUnlock(&lockspace->lock);
-    VIR_FREE(respath);
     return ret;
 }
 
@@ -547,7 +546,7 @@ int virLockSpaceDeleteResource(virLockSpacePtr lockspace,
                                const char *resname)
 {
     int ret = -1;
-    char *respath = NULL;
+    g_autofree char *respath = NULL;
 
     VIR_DEBUG("lockspace=%p resname=%s", lockspace, resname);
 
@@ -575,7 +574,6 @@ int virLockSpaceDeleteResource(virLockSpacePtr lockspace,
 
  cleanup:
     virMutexUnlock(&lockspace->lock);
-    VIR_FREE(respath);
     return ret;
 }
 
diff --git a/src/util/virlog.c b/src/util/virlog.c
index 6b7a4512e9..2bf606b8c5 100644
--- a/src/util/virlog.c
+++ b/src/util/virlog.c
@@ -505,8 +505,8 @@ virLogVMessage(virLogSourcePtr source,
                va_list vargs)
 {
     static bool logInitMessageStderr = true;
-    char *str = NULL;
-    char *msg = NULL;
+    g_autofree char *str = NULL;
+    g_autofree char *msg = NULL;
     char timestamp[VIR_TIME_STRING_BUFLEN];
     size_t i;
     int saved_errno = errno;
@@ -528,7 +528,8 @@ virLogVMessage(virLogSourcePtr source,
     if (source->serial < virLogFiltersSerial)
         virLogSourceUpdate(source);
     if (priority < source->priority)
-        goto cleanup;
+        errno = saved_errno;
+        return;
 
     /*
      * serialize the error message, add level and timestamp
@@ -601,11 +602,6 @@ virLogVMessage(virLogSourcePtr source,
                          str, msg, (void *) STDERR_FILENO);
     }
     virLogUnlock();
-
- cleanup:
-    VIR_FREE(str);
-    VIR_FREE(msg);
-    errno = saved_errno;
 }
 
 
diff --git a/src/util/virmacmap.c b/src/util/virmacmap.c
index f9047d0fb1..e68742de10 100644
--- a/src/util/virmacmap.c
+++ b/src/util/virmacmap.c
@@ -129,7 +129,7 @@ static int
 virMacMapLoadFile(virMacMapPtr mgr,
                   const char *file)
 {
-    char *map_str = NULL;
+    g_autofree char *map_str = NULL;
     virJSONValuePtr map = NULL;
     int map_str_len = 0;
     size_t i;
@@ -189,7 +189,6 @@ virMacMapLoadFile(virMacMapPtr mgr,
 
     ret = 0;
  cleanup:
-    VIR_FREE(map_str);
     virJSONValueFree(map);
     return ret;
 }
diff --git a/src/util/virnetdevbandwidth.c b/src/util/virnetdevbandwidth.c
index c8eb5cfc79..2ae03e8edc 100644
--- a/src/util/virnetdevbandwidth.c
+++ b/src/util/virnetdevbandwidth.c
@@ -102,7 +102,7 @@ virNetDevBandwidthManipulateFilter(const char *ifname,
                                    bool create_new)
 {
     int ret = -1;
-    char *filter_id = NULL;
+    g_autofree char *filter_id = NULL;
     virCommandPtr cmd = NULL;
     unsigned char ifmac[VIR_MAC_BUFLEN];
     char *mac[2] = {NULL, NULL};
@@ -157,7 +157,6 @@ virNetDevBandwidthManipulateFilter(const char *ifname,
  cleanup:
     VIR_FREE(mac[1]);
     VIR_FREE(mac[0]);
-    VIR_FREE(filter_id);
     virCommandFree(cmd);
     return ret;
 }
@@ -195,9 +194,9 @@ virNetDevBandwidthSet(const char *ifname,
     int ret = -1;
     virNetDevBandwidthRatePtr rx = NULL, tx = NULL; /* From domain POV */
     virCommandPtr cmd = NULL;
-    char *average = NULL;
-    char *peak = NULL;
-    char *burst = NULL;
+    g_autofree char *average = NULL;
+    g_autofree char *peak = NULL;
+    g_autofree char *burst = NULL;
 
     if (!bandwidth) {
         /* nothing to be enabled */
@@ -385,9 +384,6 @@ virNetDevBandwidthSet(const char *ifname,
 
  cleanup:
     virCommandFree(cmd);
-    VIR_FREE(average);
-    VIR_FREE(peak);
-    VIR_FREE(burst);
     return ret;
 }
 
@@ -533,10 +529,10 @@ virNetDevBandwidthPlug(const char *brname,
 {
     int ret = -1;
     virCommandPtr cmd = NULL;
-    char *class_id = NULL;
-    char *qdisc_id = NULL;
-    char *floor = NULL;
-    char *ceil = NULL;
+    g_autofree char *class_id = NULL;
+    g_autofree char *qdisc_id = NULL;
+    g_autofree char *floor = NULL;
+    g_autofree char *ceil = NULL;
     char ifmacStr[VIR_MAC_STRING_BUFLEN];
 
     if (id <= 2) {
@@ -586,10 +582,6 @@ virNetDevBandwidthPlug(const char *brname,
     ret = 0;
 
  cleanup:
-    VIR_FREE(ceil);
-    VIR_FREE(floor);
-    VIR_FREE(qdisc_id);
-    VIR_FREE(class_id);
     virCommandFree(cmd);
     return ret;
 }
@@ -610,8 +602,8 @@ virNetDevBandwidthUnplug(const char *brname,
     int ret = -1;
     int cmd_ret = 0;
     virCommandPtr cmd = NULL;
-    char *class_id = NULL;
-    char *qdisc_id = NULL;
+    g_autofree char *class_id = NULL;
+    g_autofree char *qdisc_id = NULL;
 
     if (id <= 2) {
         virReportError(VIR_ERR_INTERNAL_ERROR, _("Invalid class ID %d"), id);
@@ -645,8 +637,6 @@ virNetDevBandwidthUnplug(const char *brname,
     ret = 0;
 
  cleanup:
-    VIR_FREE(qdisc_id);
-    VIR_FREE(class_id);
     virCommandFree(cmd);
     return ret;
 }
@@ -673,9 +663,9 @@ virNetDevBandwidthUpdateRate(const char *ifname,
 {
     int ret = -1;
     virCommandPtr cmd = NULL;
-    char *class_id = NULL;
-    char *rate = NULL;
-    char *ceil = NULL;
+    g_autofree char *class_id = NULL;
+    g_autofree char *rate = NULL;
+    g_autofree char *ceil = NULL;
 
     class_id = g_strdup_printf("1:%x", id);
     rate = g_strdup_printf("%llukbps", new_rate);
@@ -696,9 +686,6 @@ virNetDevBandwidthUpdateRate(const char *ifname,
 
  cleanup:
     virCommandFree(cmd);
-    VIR_FREE(class_id);
-    VIR_FREE(rate);
-    VIR_FREE(ceil);
     return ret;
 }
 
@@ -725,16 +712,13 @@ virNetDevBandwidthUpdateFilter(const char *ifname,
                                unsigned int id)
 {
     int ret = -1;
-    char *class_id = NULL;
+    g_autofree char *class_id = NULL;
 
     class_id = g_strdup_printf("1:%x", id);
 
     if (virNetDevBandwidthManipulateFilter(ifname, ifmac_ptr, id,
                                            class_id, true, true) < 0)
-        goto cleanup;
+        return ret;
 
-    ret = 0;
- cleanup:
-    VIR_FREE(class_id);
-    return ret;
+    return 0;
 }
diff --git a/src/util/virresctrl.c b/src/util/virresctrl.c
index d3087b98c1..1c2d175295 100644
--- a/src/util/virresctrl.c
+++ b/src/util/virresctrl.c
@@ -709,7 +709,7 @@ virResctrlGetMonitorInfo(virResctrlInfoPtr resctrl)
 {
     int ret = -1;
     int rv = -1;
-    char *featurestr = NULL;
+    g_autofree char *featurestr = NULL;
     char **features = NULL;
     size_t nfeatures = 0;
     virResctrlInfoMongrpPtr info_monitor = NULL;
@@ -771,7 +771,6 @@ virResctrlGetMonitorInfo(virResctrlInfoPtr resctrl)
 
     ret = 0;
  cleanup:
-    VIR_FREE(featurestr);
     g_strfreev(features);
     VIR_FREE(info_monitor);
     return ret;
@@ -1736,7 +1735,7 @@ virResctrlAllocGetGroup(virResctrlInfoPtr resctrl,
                         const char *groupname,
                         virResctrlAllocPtr *alloc)
 {
-    char *schemata = NULL;
+    g_autofree char *schemata = NULL;
     int rv = virFileReadValueString(&schemata,
                                     SYSFS_RESCTRL_PATH "/%s/schemata",
                                     groupname);
@@ -1753,11 +1752,9 @@ virResctrlAllocGetGroup(virResctrlInfoPtr resctrl,
     if (virResctrlAllocParse(resctrl, *alloc, schemata) < 0)
         goto error;
 
-    VIR_FREE(schemata);
     return 0;
 
  error:
-    VIR_FREE(schemata);
     virObjectUnref(*alloc);
     *alloc = NULL;
     return -1;
@@ -2354,8 +2351,8 @@ virResctrlAllocCreate(virResctrlInfoPtr resctrl,
                       virResctrlAllocPtr alloc,
                       const char *machinename)
 {
-    char *schemata_path = NULL;
-    char *alloc_str = NULL;
+    g_autofree char *schemata_path = NULL;
+    g_autofree char *alloc_str = NULL;
     int ret = -1;
     int lockfd = -1;
 
@@ -2403,8 +2400,6 @@ virResctrlAllocCreate(virResctrlInfoPtr resctrl,
     ret = 0;
  cleanup:
     virResctrlUnlock(lockfd);
-    VIR_FREE(alloc_str);
-    VIR_FREE(schemata_path);
     return ret;
 }
 
@@ -2413,8 +2408,8 @@ static int
 virResctrlAddPID(const char *path,
                  pid_t pid)
 {
-    char *tasks = NULL;
-    char *pidstr = NULL;
+    g_autofree char *tasks = NULL;
+    g_autofree char *pidstr = NULL;
     int ret = 0;
 
     if (!path) {
@@ -2436,8 +2431,6 @@ virResctrlAddPID(const char *path,
 
     ret = 0;
  cleanup:
-    VIR_FREE(tasks);
-    VIR_FREE(pidstr);
     return ret;
 }
 
@@ -2657,8 +2650,8 @@ virResctrlMonitorGetStats(virResctrlMonitorPtr monitor,
     size_t i = 0;
     unsigned long long val = 0;
     g_autoptr(DIR) dirp = NULL;
-    char *datapath = NULL;
-    char *filepath = NULL;
+    g_autofree char *datapath = NULL;
+    g_autofree char *filepath = NULL;
     struct dirent *ent = NULL;
     virResctrlMonitorStatsPtr stat = NULL;
 
@@ -2737,8 +2730,6 @@ virResctrlMonitorGetStats(virResctrlMonitorPtr monitor,
 
     ret = 0;
  cleanup:
-    VIR_FREE(datapath);
-    VIR_FREE(filepath);
     virResctrlMonitorStatsFree(stat);
     return ret;
 }
diff --git a/src/util/virrotatingfile.c b/src/util/virrotatingfile.c
index 9f1ef17c3e..6fe5fa3154 100644
--- a/src/util/virrotatingfile.c
+++ b/src/util/virrotatingfile.c
@@ -362,8 +362,8 @@ static int
 virRotatingFileWriterRollover(virRotatingFileWriterPtr file)
 {
     size_t i;
-    char *nextpath = NULL;
-    char *thispath = NULL;
+    g_autofree char *nextpath = NULL;
+    g_autofree char *thispath = NULL;
     int ret = -1;
 
     VIR_DEBUG("Rollover %s", file->basepath);
@@ -373,7 +373,7 @@ virRotatingFileWriterRollover(virRotatingFileWriterPtr file)
             virReportSystemError(errno,
                                  _("Unable to remove %s"),
                                  file->basepath);
-            goto cleanup;
+            return ret;
         }
     } else {
         nextpath = g_strdup_printf("%s.%zu", file->basepath, file->maxbackup - 1);
@@ -391,7 +391,7 @@ virRotatingFileWriterRollover(virRotatingFileWriterPtr file)
                 virReportSystemError(errno,
                                      _("Unable to rename %s to %s"),
                                      thispath, nextpath);
-                goto cleanup;
+                return ret;
             }
 
             VIR_FREE(nextpath);
@@ -402,9 +402,6 @@ virRotatingFileWriterRollover(virRotatingFileWriterPtr file)
     VIR_DEBUG("Rollover done %s", file->basepath);
 
     ret = 0;
- cleanup:
-    VIR_FREE(nextpath);
-    VIR_FREE(thispath);
     return ret;
 }
 
diff --git a/src/util/virscsihost.c b/src/util/virscsihost.c
index 969cdd9f79..cad48b4059 100644
--- a/src/util/virscsihost.c
+++ b/src/util/virscsihost.c
@@ -95,12 +95,12 @@ virSCSIHostFindByPCI(const char *sysfs_prefix,
     const char *prefix = sysfs_prefix ? sysfs_prefix : SYSFS_SCSI_HOST_PATH;
     struct dirent *entry = NULL;
     g_autoptr(DIR) dir = NULL;
-    char *host_link = NULL;
-    char *host_path = NULL;
+    g_autofree char *host_link = NULL;
+    g_autofree char *host_path = NULL;
     char *p = NULL;
     char *ret = NULL;
-    char *buf = NULL;
-    char *unique_path = NULL;
+    g_autofree char *buf = NULL;
+    g_autofree char *unique_path = NULL;
     unsigned int read_unique_id;
 
     if (virDirOpen(&dir, prefix) < 0)
@@ -113,7 +113,7 @@ virSCSIHostFindByPCI(const char *sysfs_prefix,
         host_link = g_strdup_printf("%s/%s", prefix, entry->d_name);
 
         if (virFileResolveLink(host_link, &host_path) < 0)
-            goto cleanup;
+            return ret;
 
         if (!strstr(host_path, parentaddr)) {
             VIR_FREE(host_link);
@@ -131,13 +131,13 @@ virSCSIHostFindByPCI(const char *sysfs_prefix,
         }
 
         if (virFileReadAll(unique_path, 1024, &buf) < 0)
-            goto cleanup;
+            return ret;
 
         if ((p = strchr(buf, '\n')))
             *p = '\0';
 
         if (virStrToLong_ui(buf, NULL, 10, &read_unique_id) < 0)
-            goto cleanup;
+            return ret;
 
         VIR_FREE(buf);
 
@@ -150,11 +150,6 @@ virSCSIHostFindByPCI(const char *sysfs_prefix,
         break;
     }
 
- cleanup:
-    VIR_FREE(unique_path);
-    VIR_FREE(host_link);
-    VIR_FREE(host_path);
-    VIR_FREE(buf);
     return ret;
 }
 
@@ -226,7 +221,7 @@ virSCSIHostGetNameByParentaddr(unsigned int domain,
                                unsigned int unique_id)
 {
     char *name = NULL;
-    char *parentaddr = NULL;
+    g_autofree char *parentaddr = NULL;
 
     parentaddr = g_strdup_printf("%04x:%02x:%02x.%01x", domain, bus, slot,
                                  function);
@@ -235,11 +230,9 @@ virSCSIHostGetNameByParentaddr(unsigned int domain,
                        _("Failed to find scsi_host using PCI '%s' "
                          "and unique_id='%u'"),
                        parentaddr, unique_id);
-        goto cleanup;
+        return name;
     }
 
- cleanup:
-    VIR_FREE(parentaddr);
     return name;
 }
 
diff --git a/src/util/virsecret.c b/src/util/virsecret.c
index 54d6bbcb7c..67c9b68215 100644
--- a/src/util/virsecret.c
+++ b/src/util/virsecret.c
@@ -65,8 +65,8 @@ int
 virSecretLookupParseSecret(xmlNodePtr secretnode,
                            virSecretLookupTypeDefPtr def)
 {
-    char *uuid;
-    char *usage;
+    g_autofree char *uuid = NULL;
+    g_autofree char *usage = NULL;
     int ret = -1;
 
     uuid = virXMLPropString(secretnode, "uuid");
@@ -74,20 +74,20 @@ virSecretLookupParseSecret(xmlNodePtr secretnode,
     if (uuid == NULL && usage == NULL) {
         virReportError(VIR_ERR_XML_ERROR, "%s",
                        _("missing secret uuid or usage attribute"));
-        goto cleanup;
+        return ret;
     }
 
     if (uuid && usage) {
         virReportError(VIR_ERR_XML_ERROR, "%s",
                        _("either secret uuid or usage expected"));
-        goto cleanup;
+        return ret;
     }
 
     if (uuid) {
         if (virUUIDParse(uuid, def->u.uuid) < 0) {
             virReportError(VIR_ERR_XML_ERROR,
                            _("invalid secret uuid '%s'"), uuid);
-            goto cleanup;
+            return ret;
         }
         def->type = VIR_SECRET_LOOKUP_TYPE_UUID;
     } else {
@@ -96,10 +96,6 @@ virSecretLookupParseSecret(xmlNodePtr secretnode,
         def->type = VIR_SECRET_LOOKUP_TYPE_USAGE;
     }
     ret = 0;
-
- cleanup:
-    VIR_FREE(uuid);
-    VIR_FREE(usage);
     return ret;
 }
 
diff --git a/src/util/virstorageencryption.c b/src/util/virstorageencryption.c
index 399c6926bd..db886c1e76 100644
--- a/src/util/virstorageencryption.c
+++ b/src/util/virstorageencryption.c
@@ -142,7 +142,7 @@ virStorageEncryptionSecretParse(xmlXPathContextPtr ctxt,
 {
     VIR_XPATH_NODE_AUTORESTORE(ctxt)
     virStorageEncryptionSecretPtr ret;
-    char *type_str = NULL;
+    g_autofree char *type_str = NULL;
 
     ret = g_new0(virStorageEncryptionSecret, 1);
 
@@ -164,12 +164,9 @@ virStorageEncryptionSecretParse(xmlXPathContextPtr ctxt,
     if (virSecretLookupParseSecret(node, &ret->seclookupdef) < 0)
         goto cleanup;
 
-    VIR_FREE(type_str);
-
     return ret;
 
  cleanup:
-    VIR_FREE(type_str);
     virStorageEncryptionSecretFree(ret);
     return NULL;
 }
@@ -180,12 +177,12 @@ virStorageEncryptionInfoParseCipher(xmlNodePtr info_node,
                                     virStorageEncryptionInfoDefPtr info)
 {
     int ret = -1;
-    char *size_str = NULL;
+    g_autofree char *size_str = NULL;
 
     if (!(info->cipher_name = virXMLPropString(info_node, "name"))) {
         virReportError(VIR_ERR_XML_ERROR, "%s",
                        _("cipher info missing 'name' attribute"));
-        goto cleanup;
+        return ret;
     }
 
     if ((size_str = virXMLPropString(info_node, "size")) &&
@@ -193,22 +190,19 @@ virStorageEncryptionInfoParseCipher(xmlNodePtr info_node,
         virReportError(VIR_ERR_XML_ERROR,
                        _("cannot parse cipher size: '%s'"),
                        size_str);
-        goto cleanup;
+        return ret;
     }
 
     if (!size_str) {
         virReportError(VIR_ERR_XML_ERROR, "%s",
                        _("cipher info missing 'size' attribute"));
-        goto cleanup;
+        return ret;
     }
 
     info->cipher_mode = virXMLPropString(info_node, "mode");
     info->cipher_hash = virXMLPropString(info_node, "hash");
 
     ret = 0;
-
- cleanup:
-    VIR_FREE(size_str);
     return ret;
 }
 
@@ -237,7 +231,7 @@ virStorageEncryptionParseNode(xmlNodePtr node,
     xmlNodePtr *nodes = NULL;
     virStorageEncryptionPtr encdef = NULL;
     virStorageEncryptionPtr ret = NULL;
-    char *format_str = NULL;
+    g_autofree char *format_str = NULL;
     int n;
     size_t i;
 
@@ -297,7 +291,6 @@ virStorageEncryptionParseNode(xmlNodePtr node,
     ret = g_steal_pointer(&encdef);
 
  cleanup:
-    VIR_FREE(format_str);
     VIR_FREE(nodes);
     virStorageEncryptionFree(encdef);
 
diff --git a/src/util/virstoragefilebackend.c b/src/util/virstoragefilebackend.c
index 2779b5c307..55c62b0212 100644
--- a/src/util/virstoragefilebackend.c
+++ b/src/util/virstoragefilebackend.c
@@ -51,7 +51,7 @@ virStorageFileLoadBackendModule(const char *name,
                                 const char *regfunc,
                                 bool forceload)
 {
-    char *modfile = NULL;
+    g_autofree char *modfile = NULL;
     int ret;
 
     if (!(modfile = virFileFindResourceFull(name,
@@ -64,8 +64,6 @@ virStorageFileLoadBackendModule(const char *name,
 
     ret = virModuleLoad(modfile, regfunc, forceload);
 
-    VIR_FREE(modfile);
-
     return ret;
 }
 #endif /* WITH_STORAGE_DIR || WITH_STORAGE_FS || WITH_STORAGE_GLUSTER */
diff --git a/src/util/virsysinfo.c b/src/util/virsysinfo.c
index 217f842a37..45a950c85a 100644
--- a/src/util/virsysinfo.c
+++ b/src/util/virsysinfo.c
@@ -393,7 +393,7 @@ virSysinfoParseARMProcessor(const char *base, virSysinfoDefPtr ret)
     const char *cur;
     char *eol, *tmp_base;
     virSysinfoProcessorDefPtr processor;
-    char *processor_type = NULL;
+    g_autofree char *processor_type = NULL;
 
     if (!(tmp_base = strstr(base, "model name")) &&
         !(tmp_base = strstr(base, "Processor")))
@@ -411,7 +411,7 @@ virSysinfoParseARMProcessor(const char *base, virSysinfoDefPtr ret)
         cur = strchr(base, ':') + 1;
 
         if (VIR_EXPAND_N(ret->processor, ret->nprocessor, 1) < 0)
-            goto error;
+            return -1;
         processor = &ret->processor[ret->nprocessor - 1];
 
         virSkipSpaces(&cur);
@@ -424,12 +424,7 @@ virSysinfoParseARMProcessor(const char *base, virSysinfoDefPtr ret)
         base = cur;
     }
 
-    VIR_FREE(processor_type);
     return 0;
-
- error:
-    VIR_FREE(processor_type);
-    return -1;
 }
 
 /* virSysinfoRead for ARMv7
@@ -532,9 +527,9 @@ static int
 virSysinfoParseS390Processor(const char *base, virSysinfoDefPtr ret)
 {
     const char *tmp_base;
-    char *manufacturer = NULL;
-    char *procline = NULL;
-    char *ncpu = NULL;
+    g_autofree char *manufacturer = NULL;
+    g_autofree char *procline = NULL;
+    g_autofree char *ncpu = NULL;
     int result = -1;
     virSysinfoProcessorDefPtr processor;
 
@@ -593,9 +588,6 @@ virSysinfoParseS390Processor(const char *base, virSysinfoDefPtr ret)
     result = 0;
 
  error:
-    VIR_FREE(manufacturer);
-    VIR_FREE(procline);
-    VIR_FREE(ncpu);
     return result;
 }
 
diff --git a/src/util/viruri.c b/src/util/viruri.c
index 11753a0aef..d49821451e 100644
--- a/src/util/viruri.c
+++ b/src/util/viruri.c
@@ -209,7 +209,7 @@ char *
 virURIFormat(virURIPtr uri)
 {
     xmlURI xmluri;
-    char *tmpserver = NULL;
+    g_autofree char *tmpserver = NULL;
     char *ret;
 
     memset(&xmluri, 0, sizeof(xmluri));
@@ -241,12 +241,9 @@ virURIFormat(virURIPtr uri)
     ret = (char *)xmlSaveUri(&xmluri);
     if (!ret) {
         virReportOOMError();
-        goto cleanup;
+        return ret;
     }
 
- cleanup:
-    VIR_FREE(tmpserver);
-
     return ret;
 }
 
diff --git a/src/util/virutil.c b/src/util/virutil.c
index a0cd0f1bcd..a7c163ab94 100644
--- a/src/util/virutil.c
+++ b/src/util/virutil.c
@@ -598,7 +598,7 @@ char *virGetUserRuntimeDirectory(void)
 static int
 virGetUserEnt(uid_t uid, char **name, gid_t *group, char **dir, char **shell, bool quiet)
 {
-    char *strbuf;
+    g_autofree char *strbuf = NULL;
     struct passwd pwbuf;
     struct passwd *pw = NULL;
     long val = sysconf(_SC_GETPW_R_SIZE_MAX);
@@ -668,13 +668,12 @@ virGetUserEnt(uid_t uid, char **name, gid_t *group, char **dir, char **shell, bo
         if (shell)
             VIR_FREE(*shell);
     }
-    VIR_FREE(strbuf);
     return ret;
 }
 
 static char *virGetGroupEnt(gid_t gid)
 {
-    char *strbuf;
+    g_autofree char *strbuf = NULL;
     char *ret;
     struct group grbuf;
     struct group *gr = NULL;
@@ -717,7 +716,6 @@ static char *virGetGroupEnt(gid_t gid)
     }
 
     ret = g_strdup(gr->gr_name);
-    VIR_FREE(strbuf);
     return ret;
 }
 
@@ -759,7 +757,7 @@ char *virGetGroupName(gid_t gid)
 static int
 virGetUserIDByName(const char *name, uid_t *uid, bool missing_ok)
 {
-    char *strbuf = NULL;
+    g_autofree char *strbuf = NULL;
     struct passwd pwbuf;
     struct passwd *pw = NULL;
     long val = sysconf(_SC_GETPW_R_SIZE_MAX);
@@ -775,7 +773,7 @@ virGetUserIDByName(const char *name, uid_t *uid, bool missing_ok)
 
     while ((rc = getpwnam_r(name, &pwbuf, strbuf, strbuflen, &pw)) == ERANGE) {
         if (VIR_RESIZE_N(strbuf, strbuflen, strbuflen, strbuflen) < 0)
-            goto cleanup;
+            return ret;
     }
 
     if (!pw) {
@@ -788,16 +786,13 @@ virGetUserIDByName(const char *name, uid_t *uid, bool missing_ok)
         }
 
         ret = 1;
-        goto cleanup;
+        return ret;
     }
 
     if (uid)
         *uid = pw->pw_uid;
     ret = 0;
 
- cleanup:
-    VIR_FREE(strbuf);
-
     return ret;
 }
 
@@ -840,7 +835,7 @@ virGetUserID(const char *user, uid_t *uid)
 static int
 virGetGroupIDByName(const char *name, gid_t *gid, bool missing_ok)
 {
-    char *strbuf = NULL;
+    g_autofree char *strbuf = NULL;
     struct group grbuf;
     struct group *gr = NULL;
     long val = sysconf(_SC_GETGR_R_SIZE_MAX);
@@ -856,7 +851,7 @@ virGetGroupIDByName(const char *name, gid_t *gid, bool missing_ok)
 
     while ((rc = getgrnam_r(name, &grbuf, strbuf, strbuflen, &gr)) == ERANGE) {
         if (VIR_RESIZE_N(strbuf, strbuflen, strbuflen, strbuflen) < 0)
-            goto cleanup;
+            return ret;
     }
 
     if (!gr) {
@@ -869,16 +864,13 @@ virGetGroupIDByName(const char *name, gid_t *gid, bool missing_ok)
         }
 
         ret = 1;
-        goto cleanup;
+        return ret;
     }
 
     if (gid)
         *gid = gr->gr_gid;
     ret = 0;
 
- cleanup:
-    VIR_FREE(strbuf);
-
     return ret;
 }
 
@@ -949,7 +941,7 @@ int
 virGetGroupList(uid_t uid, gid_t gid, gid_t **list)
 {
     int ret = 0;
-    char *user = NULL;
+    g_autofree char *user = NULL;
     gid_t primary;
 
     *list = NULL;
@@ -987,19 +979,17 @@ virGetGroupList(uid_t uid, gid_t gid, gid_t **list)
 
         for (i = 0; i < ret; i++) {
             if ((*list)[i] == gid)
-                goto cleanup;
+                return ret;
         }
         if (VIR_APPEND_ELEMENT(*list, i, gid) < 0) {
             ret = -1;
             VIR_FREE(*list);
-            goto cleanup;
+            return ret;
         } else {
             ret = i;
         }
     }
 
- cleanup:
-    VIR_FREE(user);
     return ret;
 }
 
@@ -1405,8 +1395,8 @@ virSetDeviceUnprivSGIO(const char *path,
                        const char *sysfs_dir,
                        int unpriv_sgio)
 {
-    char *sysfs_path = NULL;
-    char *val = NULL;
+    g_autofree char *sysfs_path = NULL;
+    g_autofree char *val = NULL;
     int ret = -1;
     int rc;
 
@@ -1416,20 +1406,17 @@ virSetDeviceUnprivSGIO(const char *path,
     if (!virFileExists(sysfs_path)) {
         virReportError(VIR_ERR_OPERATION_INVALID, "%s",
                        _("unpriv_sgio is not supported by this kernel"));
-        goto cleanup;
+        return ret;
     }
 
     val = g_strdup_printf("%d", unpriv_sgio);
 
     if ((rc = virFileWriteStr(sysfs_path, val, 0)) < 0) {
         virReportSystemError(-rc, _("failed to set %s"), sysfs_path);
-        goto cleanup;
+        return ret;
     }
 
     ret = 0;
- cleanup:
-    VIR_FREE(sysfs_path);
-    VIR_FREE(val);
     return ret;
 }
 
@@ -1438,8 +1425,8 @@ virGetDeviceUnprivSGIO(const char *path,
                        const char *sysfs_dir,
                        int *unpriv_sgio)
 {
-    char *sysfs_path = NULL;
-    char *buf = NULL;
+    g_autofree char *sysfs_path = NULL;
+    g_autofree char *buf = NULL;
     char *tmp = NULL;
     int ret = -1;
 
@@ -1449,11 +1436,11 @@ virGetDeviceUnprivSGIO(const char *path,
     if (!virFileExists(sysfs_path)) {
         virReportError(VIR_ERR_OPERATION_INVALID, "%s",
                        _("unpriv_sgio is not supported by this kernel"));
-        goto cleanup;
+        return ret;
     }
 
     if (virFileReadAll(sysfs_path, 1024, &buf) < 0)
-        goto cleanup;
+        return ret;
 
     if ((tmp = strchr(buf, '\n')))
         *tmp = '\0';
@@ -1461,13 +1448,10 @@ virGetDeviceUnprivSGIO(const char *path,
     if (virStrToLong_i(buf, NULL, 10, unpriv_sgio) < 0) {
         virReportError(VIR_ERR_INTERNAL_ERROR,
                        _("failed to parse value of %s"), sysfs_path);
-        goto cleanup;
+        return ret;
     }
 
     ret = 0;
- cleanup:
-    VIR_FREE(sysfs_path);
-    VIR_FREE(buf);
     return ret;
 }
 
@@ -1488,7 +1472,7 @@ virParseOwnershipIds(const char *label, uid_t *uidPtr, gid_t *gidPtr)
     int rc = -1;
     uid_t theuid;
     gid_t thegid;
-    char *tmp_label = NULL;
+    g_autofree char *tmp_label = NULL;
     char *sep = NULL;
     char *owner = NULL;
     char *group = NULL;
@@ -1501,7 +1485,7 @@ virParseOwnershipIds(const char *label, uid_t *uidPtr, gid_t *gidPtr)
         virReportError(VIR_ERR_INVALID_ARG,
                        _("Failed to parse uid and gid from '%s'"),
                        label);
-        goto cleanup;
+        return rc;
     }
     *sep = '\0';
     owner = tmp_label;
@@ -1512,7 +1496,7 @@ virParseOwnershipIds(const char *label, uid_t *uidPtr, gid_t *gidPtr)
      */
     if (virGetUserID(owner, &theuid) < 0 ||
         virGetGroupID(group, &thegid) < 0)
-        goto cleanup;
+        return rc;
 
     if (uidPtr)
         *uidPtr = theuid;
@@ -1520,10 +1504,6 @@ virParseOwnershipIds(const char *label, uid_t *uidPtr, gid_t *gidPtr)
         *gidPtr = thegid;
 
     rc = 0;
-
- cleanup:
-    VIR_FREE(tmp_label);
-
     return rc;
 }
 
diff --git a/src/util/virvhba.c b/src/util/virvhba.c
index a4e88024d1..d8642ea041 100644
--- a/src/util/virvhba.c
+++ b/src/util/virvhba.c
@@ -49,7 +49,7 @@ bool
 virVHBAPathExists(const char *sysfs_prefix,
                   int host)
 {
-    char *sysfs_path = NULL;
+    g_autofree char *sysfs_path = NULL;
     bool ret = false;
 
     sysfs_path = g_strdup_printf("%s/host%d",
@@ -58,7 +58,6 @@ virVHBAPathExists(const char *sysfs_prefix,
     if (virFileExists(sysfs_path))
         ret = true;
 
-    VIR_FREE(sysfs_path);
     return ret;
 }
 
@@ -79,8 +78,8 @@ bool
 virVHBAIsVportCapable(const char *sysfs_prefix,
                       int host)
 {
-    char *scsi_host_path = NULL;
-    char *fc_host_path = NULL;
+    g_autofree char *scsi_host_path = NULL;
+    g_autofree char *fc_host_path = NULL;
     bool ret = false;
 
     fc_host_path = g_strdup_printf("%s/host%d/%s",
@@ -94,8 +93,6 @@ virVHBAIsVportCapable(const char *sysfs_prefix,
     if (virFileExists(fc_host_path) || virFileExists(scsi_host_path))
         ret = true;
 
-    VIR_FREE(fc_host_path);
-    VIR_FREE(scsi_host_path);
     return ret;
 }
 
@@ -115,19 +112,19 @@ virVHBAGetConfig(const char *sysfs_prefix,
                  int host,
                  const char *entry)
 {
-    char *sysfs_path = NULL;
+    g_autofree char *sysfs_path = NULL;
     char *p = NULL;
-    char *buf = NULL;
+    g_autofree char *buf = NULL;
     char *result = NULL;
 
     sysfs_path = g_strdup_printf("%s/host%d/%s",
                                  sysfs_prefix ? sysfs_prefix : SYSFS_FC_HOST_PATH, host, entry);
 
     if (!virFileExists(sysfs_path))
-        goto cleanup;
+        return result;
 
     if (virFileReadAll(sysfs_path, 1024, &buf) < 0)
-        goto cleanup;
+        return result;
 
     if ((p = strchr(buf, '\n')))
         *p = '\0';
@@ -139,9 +136,6 @@ virVHBAGetConfig(const char *sysfs_prefix,
 
     result = g_strdup(p);
 
- cleanup:
-    VIR_FREE(sysfs_path);
-    VIR_FREE(buf);
     return result;
 }
 
@@ -160,8 +154,8 @@ virVHBAFindVportHost(const char *sysfs_prefix)
     const char *prefix = sysfs_prefix ? sysfs_prefix : SYSFS_FC_HOST_PATH;
     g_autoptr(DIR) dir = NULL;
     struct dirent *entry = NULL;
-    char *max_vports = NULL;
-    char *vports = NULL;
+    g_autofree char *max_vports = NULL;
+    g_autofree char *vports = NULL;
     char *state = NULL;
     char *ret = NULL;
 
@@ -212,16 +206,13 @@ virVHBAFindVportHost(const char *sysfs_prefix)
             ((strlen(max_vports) == strlen(vports)) &&
              strcmp(max_vports, vports) > 0)) {
             ret = g_strdup(entry->d_name);
-            goto cleanup;
+            return ret;
         }
 
         VIR_FREE(max_vports);
         VIR_FREE(vports);
     }
 
- cleanup:
-    VIR_FREE(max_vports);
-    VIR_FREE(vports);
     return ret;
 }
 
@@ -241,7 +232,8 @@ virVHBAManageVport(const int parent_host,
                    int operation)
 {
     int ret = -1;
-    char *operation_path = NULL, *vport_name = NULL;
+    g_autofree char *operation_path = NULL;
+    g_autofree char *vport_name = NULL;
     const char *operation_file = NULL;
 
     switch (operation) {
@@ -254,7 +246,7 @@ virVHBAManageVport(const int parent_host,
     default:
         virReportError(VIR_ERR_OPERATION_INVALID,
                        _("Invalid vport operation (%d)"), operation);
-        goto cleanup;
+        return ret;
     }
 
     operation_path = g_strdup_printf("%s/host%d/%s", SYSFS_FC_HOST_PATH,
@@ -270,7 +262,7 @@ virVHBAManageVport(const int parent_host,
                            _("vport operation '%s' is not supported "
                              "for host%d"),
                            operation_file, parent_host);
-            goto cleanup;
+            return ret;
         }
     }
 
@@ -290,9 +282,6 @@ virVHBAManageVport(const int parent_host,
                                "vport create/delete failed"),
                              vport_name, operation_path);
 
- cleanup:
-    VIR_FREE(vport_name);
-    VIR_FREE(operation_path);
     return ret;
 }
 
@@ -315,8 +304,8 @@ vhbaReadCompareWWN(const char *prefix,
                    const char *f_name,
                    const char *wwn)
 {
-    char *path;
-    char *buf = NULL;
+    g_autofree char *path = NULL;
+    g_autofree char *buf = NULL;
     char *p;
     int ret = -1;
 
@@ -324,11 +313,11 @@ vhbaReadCompareWWN(const char *prefix,
 
     if (!virFileExists(path)) {
         ret = 0;
-        goto cleanup;
+        return ret;
     }
 
     if (virFileReadAll(path, 1024, &buf) < 0)
-        goto cleanup;
+        return ret;
 
     if ((p = strchr(buf, '\n')))
         *p = '\0';
@@ -342,10 +331,6 @@ vhbaReadCompareWWN(const char *prefix,
     else
         ret = 1;
 
- cleanup:
-    VIR_FREE(path);
-    VIR_FREE(buf);
-
     return ret;
 }
 
@@ -407,7 +392,7 @@ virVHBAGetHostByFabricWWN(const char *sysfs_prefix,
     const char *prefix = sysfs_prefix ? sysfs_prefix : SYSFS_FC_HOST_PATH;
     struct dirent *entry = NULL;
     g_autoptr(DIR) dir = NULL;
-    char *vport_create_path = NULL;
+    g_autofree char *vport_create_path = NULL;
     char *ret = NULL;
 
     if (virDirOpen(&dir, prefix) < 0)
@@ -428,7 +413,7 @@ virVHBAGetHostByFabricWWN(const char *sysfs_prefix,
 
         if ((rc = vhbaReadCompareWWN(prefix, entry->d_name,
                                      "fabric_name", fabric_wwn)) < 0)
-            goto cleanup;
+            return ret;
 
         if (rc == 0)
             continue;
@@ -437,8 +422,6 @@ virVHBAGetHostByFabricWWN(const char *sysfs_prefix,
         break;
     }
 
- cleanup:
-    VIR_FREE(vport_create_path);
     return ret;
 }
 
diff --git a/src/util/virxml.c b/src/util/virxml.c
index a3b819d85c..7df50e4b4d 100644
--- a/src/util/virxml.c
+++ b/src/util/virxml.c
@@ -696,8 +696,8 @@ catchXMLError(void *ctx, const char *msg G_GNUC_UNUSED, ...)
     unsigned int n, col;        /* GCC warns if signed, because compared with sizeof() */
     int domcode = VIR_FROM_XML;
     g_auto(virBuffer) buf = VIR_BUFFER_INITIALIZER;
-    char *contextstr = NULL;
-    char *pointerstr = NULL;
+    g_autofree char *contextstr = NULL;
+    g_autofree char *pointerstr = NULL;
 
 
     /* conditions for error printing */
@@ -763,9 +763,6 @@ catchXMLError(void *ctx, const char *msg G_GNUC_UNUSED, ...)
                               contextstr,
                               pointerstr);
     }
-
-    VIR_FREE(contextstr);
-    VIR_FREE(pointerstr);
 }
 
 /**
-- 
GitLab
--00000000000081844b05b45393e7--