Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1u8J3r-000fIC-Ey for pgsql-hackers@arkaria.postgresql.org; Fri, 25 Apr 2025 13:25:48 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.94.2) (envelope-from ) id 1u8J3o-00B0tG-Bq for pgsql-hackers@arkaria.postgresql.org; Fri, 25 Apr 2025 13:25:45 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.94.2) (envelope-from ) id 1u8J3n-00B0t8-Pt for pgsql-hackers@lists.postgresql.org; Fri, 25 Apr 2025 13:25:44 +0000 Received: from mail-vk1-xa2a.google.com ([2607:f8b0:4864:20::a2a]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.96) (envelope-from ) id 1u8J3m-001tXJ-1W for pgsql-hackers@lists.postgresql.org; Fri, 25 Apr 2025 13:25:43 +0000 Received: by mail-vk1-xa2a.google.com with SMTP id 71dfb90a1353d-52410fb2afeso2149690e0c.3 for ; Fri, 25 Apr 2025 06:25:42 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1745587542; x=1746192342; darn=lists.postgresql.org; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:from:to:cc:subject:date:message-id:reply-to; bh=520IlHH4ECocXOhXDvT8X2010OBG0MWCRu3lOxThKLY=; b=Qpbi3GlUcMzhsG/6ixvtOW5ulUFLdgUxDon6o5S4Y0b6PyYnZIoRQ8XFpKVg4oUwHx nUmHPQnCsoqLUar5eQ3ARzxqszzqMOo4zcztqymBGjVtqRaczNVOgPm7/oK8VozDlryl Gx/srONwjoHoCzr7vAuWHsHjGQe6ekkjhl7Ez1agUnMIa6lnGGIMkAMtzRNEmqBd0Lwr vWbCx8MmYyPFLPCLqJu89ptA5nNMPpxHa0JRwGcguakSwVgRofEUqLVjVByuYbtcO3h3 y3pYwv8DW1ygdWd1ODlXzgoWXZeev7fikDHMWKs6gS4+fWru1PfM0aswULqvs9Klb02O OAzg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1745587542; x=1746192342; h=cc:to:subject:message-id:date:from:in-reply-to:references :mime-version:x-gm-message-state:from:to:cc:subject:date:message-id :reply-to; bh=520IlHH4ECocXOhXDvT8X2010OBG0MWCRu3lOxThKLY=; b=XVBvulTqyBE0ncqqCf8Ov6IkC/VrcHmsLRnn4Lu04E3QURTWZkLikB0gswt3SrpqKC S7Xqtqu2vlH0qLWEjp0u6QZJk6EE4RRcnjcN13eFsTxlIyPwwVgtGJRAIGotx1pEAyrX wnwDDTHPP/V1vBI18UbxTcWQVkc7hR3tlUiCiGztDAfzZBRx3v+LhiizXzQC9/8e+3HJ TJOSy6SLCKnH1TLTxAZLi6tmUoKKQ0ElUGuSJ99Fm9Xc7dFAPTLi1iTTAHNuatRTCW0L Oa+IXumJvKjiF055jCy47q+3VJ6GyUz4GYaCYQn0d4dlfodOfGxT5ELbJ1iiJU0mIrrI wQnA== X-Forwarded-Encrypted: i=1; AJvYcCVhYTrpBjovInEAqIReeJI6tUQhAEludDTO2gPGiUobO+zn2WLdzp7MoZANTKhalokmYg+f53fVcLJwQfRR@lists.postgresql.org X-Gm-Message-State: AOJu0Yw2oGAhpAfIns7HUxgVP2XsuV5B5ic2PpXLG7OubPSTMJ+ObktJ xqr1D2uimtwr3+TcC2cT3Rf5yYBlU6ddFMf/QwQnHiNbXB8wLyN2bic2HcSTtTMfccR0F0CSGEK m9BYPRocga+ikaLpNwCGGc0NSawg= X-Gm-Gg: ASbGncu8NXsZ+O+xZTiEe1kDqjVjIhmqB1+0HOTvoXIt1OzFUsqAWjOEBsNpmePOhdM kNItLXtVzmyCFhKeta/myyYWfNoQBs1qotggePznm0mxTKviAFdE54ghPWbvI25OoE5TkAG6uqk Z2w/hrmoitCSKaf40TRYr64BivlInpSXAsQcq1Rr2gyZt2fkTjntFAnVo= X-Google-Smtp-Source: AGHT+IFh9NGUt/UpihTwWqJxvDgwMlUlTuvFm6SMfD51Q/k5WF5CReQz5B5tfqU6m+q1IuQ7wo/tBxWB0LDUWldbigw= X-Received: by 2002:a05:6122:218d:b0:52a:79fd:34bd with SMTP id 71dfb90a1353d-52a89d6ca46mr1458200e0c.4.1745587541886; Fri, 25 Apr 2025 06:25:41 -0700 (PDT) MIME-Version: 1.0 References: <3C304C9E-976C-4FB9-A883-707E0B90756A@justatheory.com> <546E7C54-D2F4-4DBB-9A06-EBBF90265A2C@justatheory.com> In-Reply-To: <546E7C54-D2F4-4DBB-9A06-EBBF90265A2C@justatheory.com> From: Matheus Alcantara Date: Fri, 25 Apr 2025 10:25:14 -0300 X-Gm-Features: ATxdqUETwp7aRIS7ZBQzVDO5hiN8urr4_AfP9QRoOrdEQdzjPN10k6SDmYPp0zc Message-ID: Subject: Re: extension_control_path and "directory" To: "David E. Wheeler" Cc: Christoph Berg , Peter Eisentraut , pgsql-hackers@lists.postgresql.org Content-Type: multipart/mixed; boundary="0000000000005bfc3806339a4585" List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk --0000000000005bfc3806339a4585 Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: quoted-printable On Thu, Apr 24, 2025 at 7:27=E2=80=AFPM David E. Wheeler wrote: > > On Apr 24, 2025, at 11:18, Matheus Alcantara w= rote: > > > In v2 I've moved the logic to remove the /extension to > > parse_extension_control_file(), do you think that this Assert on this > > function would still be wrong? IIUC we should always have /extension at > > the end of "control_dir" at this place, because the > > extension_control_path GUC will omit the /extension at the end and we > > will force it to have the suffix on the path at > > find_extension_control_filename() and > > get_extension_control_directories() functions. I'm missing something > > here? > > I took this patch for a spin and managed to make it core dump. How? Well = I installed semver with this command: > > ```sh > make prefix=3D/Users/david/Downloads install > ``` > > Then set the search paths and restarted: > > ```ini > extension_control_path =3D '/Users/david/Downloads/share/extension:$syste= m' > dynamic_library_path =3D '/Users/david/Downloads/lib:$libdir' > ``` > > Then I connected and ran `CREATE EXTENSION semver` and it segfaulted. I p= oked around for a few minutes and realized that my prefix is not what I exp= ected. Because it doesn=E2=80=99t contain the string =E2=80=9Cpostgres=E2= =80=9D, PGXS helpfully adds it. The actual paths are: > > ```ini > extension_control_path =3D '/Users/david/Downloads/share/postgresql/exten= sion:$system' > dynamic_library_path =3D '/Users/david/Downloads/lib/postgresql:$libdir' > ``` > > With that fix it no longer segafulted. > > So I presume something crashes when a directory or file doesn=E2=80=99t e= xist. > Yes, you are right. The problem was where I was asserting control->control_dir !=3D NULL. I've moved the assert after the "if (!filename)" check that returns an error if the extension was not found. Attached v3 with this fix and also a TAP test for this scenario. I'm just a bit confused how you get it working using /extension at the end of extension_control_path since with this patch this suffix is not necessary and since we hard coded append this it should return an error when trying to search on something like /Users/david/Downloads/share/postgresql/extension/extension --=20 Matheus Alcantara --0000000000005bfc3806339a4585 Content-Type: application/octet-stream; name="v3-0001-Make-directory-work-with-extension-control-path.patch" Content-Disposition: attachment; filename="v3-0001-Make-directory-work-with-extension-control-path.patch" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_m9wtoyez0 RnJvbSAwYTE5MDc2OTU4YjY4NGZkOThkNjVmYjk3ZjRiMjI4ZDJkZGQ4YjJjIE1vbiBTZXAgMTcg MDA6MDA6MDAgMjAwMQpGcm9tOiBNYXRoZXVzIEFsY2FudGFyYSA8bXRocy5kZXZAcG0ubWU+CkRh dGU6IFdlZCwgMjMgQXByIDIwMjUgMTY6MTE6MjQgLTAzMDAKU3ViamVjdDogW1BBVENIIHYzXSBN YWtlICJkaXJlY3RvcnkiIHdvcmsgd2l0aCBleHRlbnNpb24gY29udHJvbCBwYXRoCgpQcmV2aW91 c2x5IGV4dGVuc2lvbnMgaW5zdGFsbGVkIG9uIGEgY3VzdG9tIHBhdGggdGhhdCBpcyBhdmFpbGFi bGUgdmlhCmV4dGVuc2lvbl9jb250cm9sX3BhdGggR1VDIHRoYXQgc2V0IHRoZSAiZGlyZWN0b3J5 IiBmaWVsZCBvbiAuY29udHJvbApmaWxlIHdhcyBub3QgYmVpbmcgYWJsZSB0byBDUkVBVEUuIFRo aXMgd2FzIGhhcHBlbmluZyBiZWNhdXNlIG9uCmdldF9leHRlbnNpb25fc2NyaXB0X2RpcmVjdG9y eSB3YXMgaGFyZCBjb2RlZCB0byBzZWFyY2ggZm9yIHRoZSBzY3JpcHQKZmlsZXMgb25seSBvbiB0 aGUgc2hhcmUgc3lzdGVtIGRpci4KClRoaXMgY29tbWl0IGZpeCB0aGlzIGlzc3VlIGJ5IHVzaW5n IHRoZSBjb250cm9sLT5jb250cm9sX2RpciBhcyBhIHNoYXJlCmRpciB0byByZXR1cm4gdGhlIHBh dGggb2YgdGhlIGV4dGVuc2lvbiBzY3JpcHQgZmlsZXMuCi0tLQogc3JjL2JhY2tlbmQvY29tbWFu ZHMvZXh0ZW5zaW9uLmMgICAgICAgICAgICAgIHwgMzEgKysrKystLQogLi4uL3QvMDAxX2V4dGVu c2lvbl9jb250cm9sX3BhdGgucGwgICAgICAgICAgIHwgOTMgKysrKysrKysrKysrKystLS0tLQog MiBmaWxlcyBjaGFuZ2VkLCA5MiBpbnNlcnRpb25zKCspLCAzMiBkZWxldGlvbnMoLSkKCmRpZmYg LS1naXQgYS9zcmMvYmFja2VuZC9jb21tYW5kcy9leHRlbnNpb24uYyBiL3NyYy9iYWNrZW5kL2Nv bW1hbmRzL2V4dGVuc2lvbi5jCmluZGV4IDE4MGY0YWY5YmUzLi5jZTUzZWQ4NTQwMSAxMDA2NDQK LS0tIGEvc3JjL2JhY2tlbmQvY29tbWFuZHMvZXh0ZW5zaW9uLmMKKysrIGIvc3JjL2JhY2tlbmQv Y29tbWFuZHMvZXh0ZW5zaW9uLmMKQEAgLTgzLDYgKzgzLDggQEAgT2lkCQkJQ3VycmVudEV4dGVu c2lvbk9iamVjdCA9IEludmFsaWRPaWQ7CiB0eXBlZGVmIHN0cnVjdCBFeHRlbnNpb25Db250cm9s RmlsZQogewogCWNoYXIJICAgKm5hbWU7CQkJLyogbmFtZSBvZiB0aGUgZXh0ZW5zaW9uICovCisJ Y2hhcgkgICAqYmFzZWRpcjsJCS8qIGJhc2UgZGlyZWN0b3J5IHdoZXJlIGNvbnRyb2wgYW5kIHNj cmlwdAorCQkJCQkJCQkgKiBmaWxlcyBhcmUgbG9jYXRlZCAqLwogCWNoYXIJICAgKmNvbnRyb2xf ZGlyOwkvKiBkaXJlY3Rvcnkgd2hlcmUgY29udHJvbCBmaWxlIHdhcyBmb3VuZCAqLwogCWNoYXIJ ICAgKmRpcmVjdG9yeTsJCS8qIGRpcmVjdG9yeSBmb3Igc2NyaXB0IGZpbGVzICovCiAJY2hhcgkg ICAqZGVmYXVsdF92ZXJzaW9uOwkvKiBkZWZhdWx0IGluc3RhbGwgdGFyZ2V0IHZlcnNpb24sIGlm IGFueSAqLwpAQCAtMzc2LDYgKzM3OCwxNCBAQCBnZXRfZXh0ZW5zaW9uX2NvbnRyb2xfZGlyZWN0 b3JpZXModm9pZCkKIAogCQkJLyogU3Vic3RpdHV0ZSB0aGUgcGF0aCBtYWNybyBpZiBuZWVkZWQg Ki8KIAkJCW1hbmdsZWQgPSBzdWJzdGl0dXRlX3BhdGhfbWFjcm8ocGllY2UsICIkc3lzdGVtIiwg c3lzdGVtX2Rpcik7CisKKwkJCS8qCisJCQkgKiBBcHBlbmQgImV4dGVuc2lvbiIgc3VmZml4IGlu IGNhc2UgaXMgYSBjdXN0b20gZXh0ZW5zaW9uIGNvbnRyb2wKKwkJCSAqIHBhdGguCisJCQkgKi8K KwkJCWlmIChzdHJjbXAocGllY2UsICIkc3lzdGVtIikgIT0gMCkKKwkJCQltYW5nbGVkID0gcHNw cmludGYoIiVzL2V4dGVuc2lvbiIsIG1hbmdsZWQpOworCiAJCQlwZnJlZShwaWVjZSk7CiAKIAkJ CS8qIENhbm9uaWNhbGl6ZSB0aGUgcGF0aCBiYXNlZCBvbiB0aGUgT1MgYW5kIGFkZCB0byB0aGUg bGlzdCAqLwpAQCAtNDIyLDYgKzQzMiw5IEBAIGZpbmRfZXh0ZW5zaW9uX2NvbnRyb2xfZmlsZW5h bWUoRXh0ZW5zaW9uQ29udHJvbEZpbGUgKmNvbnRyb2wpCiAJZWNwID0gRXh0ZW5zaW9uX2NvbnRy b2xfcGF0aDsKIAlpZiAoc3RybGVuKGVjcCkgPT0gMCkKIAkJZWNwID0gIiRzeXN0ZW0iOworCWVs c2UgaWYgKHN0cmNtcChlY3AsICIkc3lzdGVtIikgIT0gMCkKKwkJZWNwID0gcHNwcmludGYoIiVz L2V4dGVuc2lvbiIsIGVjcCk7CisKIAlyZXN1bHQgPSBmaW5kX2luX3BhdGgoYmFzZW5hbWUsIGVj cCwgImV4dGVuc2lvbl9jb250cm9sX3BhdGgiLCAiJHN5c3RlbSIsIHN5c3RlbV9kaXIpOwogCiAJ aWYgKHJlc3VsdCkKQEAgLTQzOSw5ICs0NTIsNiBAQCBmaW5kX2V4dGVuc2lvbl9jb250cm9sX2Zp bGVuYW1lKEV4dGVuc2lvbkNvbnRyb2xGaWxlICpjb250cm9sKQogc3RhdGljIGNoYXIgKgogZ2V0 X2V4dGVuc2lvbl9zY3JpcHRfZGlyZWN0b3J5KEV4dGVuc2lvbkNvbnRyb2xGaWxlICpjb250cm9s KQogewotCWNoYXIJCXNoYXJlcGF0aFtNQVhQR1BBVEhdOwotCWNoYXIJICAgKnJlc3VsdDsKLQog CS8qCiAJICogVGhlIGRpcmVjdG9yeSBwYXJhbWV0ZXIgY2FuIGJlIG9taXR0ZWQsIGFic29sdXRl LCBvciByZWxhdGl2ZSB0byB0aGUKIAkgKiBpbnN0YWxsYXRpb24ncyBzaGFyZSBkaXJlY3Rvcnku CkBAIC00NTIsMTEgKzQ2Miw4IEBAIGdldF9leHRlbnNpb25fc2NyaXB0X2RpcmVjdG9yeShFeHRl bnNpb25Db250cm9sRmlsZSAqY29udHJvbCkKIAlpZiAoaXNfYWJzb2x1dGVfcGF0aChjb250cm9s LT5kaXJlY3RvcnkpKQogCQlyZXR1cm4gcHN0cmR1cChjb250cm9sLT5kaXJlY3RvcnkpOwogCi0J Z2V0X3NoYXJlX3BhdGgobXlfZXhlY19wYXRoLCBzaGFyZXBhdGgpOwotCXJlc3VsdCA9IChjaGFy ICopIHBhbGxvYyhNQVhQR1BBVEgpOwotCXNucHJpbnRmKHJlc3VsdCwgTUFYUEdQQVRILCAiJXMv JXMiLCBzaGFyZXBhdGgsIGNvbnRyb2wtPmRpcmVjdG9yeSk7Ci0KLQlyZXR1cm4gcmVzdWx0Owor CUFzc2VydChjb250cm9sLT5iYXNlZGlyICE9IE5VTEwpOworCXJldHVybiBwc3ByaW50ZigiJXMv JXMiLCBjb250cm9sLT5iYXNlZGlyLCBjb250cm9sLT5kaXJlY3RvcnkpOwogfQogCiBzdGF0aWMg Y2hhciAqCkBAIC01NTAsNiArNTU3LDE0IEBAIHBhcnNlX2V4dGVuc2lvbl9jb250cm9sX2ZpbGUo RXh0ZW5zaW9uQ29udHJvbEZpbGUgKmNvbnRyb2wsCiAJCQkJIGVycmhpbnQoIlRoZSBleHRlbnNp b24gbXVzdCBmaXJzdCBiZSBpbnN0YWxsZWQgb24gdGhlIHN5c3RlbSB3aGVyZSBQb3N0Z3JlU1FM IGlzIHJ1bm5pbmcuIikpKTsKIAl9CiAKKwkvKiBBc3NlcnQgdGhhdCB0aGUgY29udHJvbF9kaXIg ZW5kcyB3aXRoIC9leHRlbnNpb24gKi8KKwlBc3NlcnQoY29udHJvbC0+Y29udHJvbF9kaXIgIT0g TlVMTCk7CisJQXNzZXJ0KHN0cmNtcChjb250cm9sLT5jb250cm9sX2RpciArIHN0cmxlbihjb250 cm9sLT5jb250cm9sX2RpcikgLSBzdHJsZW4oIi9leHRlbnNpb24iKSwgIi9leHRlbnNpb24iKSA9 PSAwKTsKKworCWNvbnRyb2wtPmJhc2VkaXIgPSBwbnN0cmR1cCgKKwkJCQkJCQkJY29udHJvbC0+ Y29udHJvbF9kaXIsCisJCQkJCQkJCXN0cmxlbihjb250cm9sLT5jb250cm9sX2RpcikgLSBzdHJs ZW4oIi9leHRlbnNpb24iKSk7CisKIAlpZiAoKGZpbGUgPSBBbGxvY2F0ZUZpbGUoZmlsZW5hbWUs ICJyIikpID09IE5VTEwpCiAJewogCQkvKiBubyBjb21wbGFpbnQgZm9yIG1pc3NpbmcgYXV4aWxp YXJ5IGZpbGUgKi8KZGlmZiAtLWdpdCBhL3NyYy90ZXN0L21vZHVsZXMvdGVzdF9leHRlbnNpb25z L3QvMDAxX2V4dGVuc2lvbl9jb250cm9sX3BhdGgucGwgYi9zcmMvdGVzdC9tb2R1bGVzL3Rlc3Rf ZXh0ZW5zaW9ucy90LzAwMV9leHRlbnNpb25fY29udHJvbF9wYXRoLnBsCmluZGV4IGMxODZjMTQ3 MGY3Li4xZWY3OWQ3NTc0ZiAxMDA2NDQKLS0tIGEvc3JjL3Rlc3QvbW9kdWxlcy90ZXN0X2V4dGVu c2lvbnMvdC8wMDFfZXh0ZW5zaW9uX2NvbnRyb2xfcGF0aC5wbAorKysgYi9zcmMvdGVzdC9tb2R1 bGVzL3Rlc3RfZXh0ZW5zaW9ucy90LzAwMV9leHRlbnNpb25fY29udHJvbF9wYXRoLnBsCkBAIC01 LDYgKzUsNyBAQCB1c2Ugd2FybmluZ3MgRkFUQUwgPT4gJ2FsbCc7CiB1c2UgUG9zdGdyZVNRTDo6 VGVzdDo6Q2x1c3RlcjsKIHVzZSBQb3N0Z3JlU1FMOjpUZXN0OjpVdGlsczsKIHVzZSBUZXN0OjpN b3JlOwordXNlIEZpbGU6OlBhdGggcXcoIG1ha2VfcGF0aCApOwogCiBteSAkbm9kZSA9IFBvc3Rn cmVTUUw6OlRlc3Q6OkNsdXN0ZXItPm5ldygnbm9kZScpOwogCkBAIC0xMiwyNSArMTMsMTQgQEAg JG5vZGUtPmluaXQ7CiAKICMgQ3JlYXRlIGEgdGVtcG9yYXJ5IGRpcmVjdG9yeSBmb3IgdGhlIGV4 dGVuc2lvbiBjb250cm9sIGZpbGUKIG15ICRleHRfZGlyID0gUG9zdGdyZVNRTDo6VGVzdDo6VXRp bHM6OnRlbXBkaXIoKTsKK21ha2VfcGF0aCgiJGV4dF9kaXIvZXh0ZW5zaW9uIik7CisKIG15ICRl eHRfbmFtZSA9ICJ0ZXN0X2N1c3RvbV9leHRfcGF0aHMiOwotbXkgJGNvbnRyb2xfZmlsZSA9ICIk ZXh0X2Rpci8kZXh0X25hbWUuY29udHJvbCI7Ci1teSAkc3FsX2ZpbGUgPSAiJGV4dF9kaXIvJGV4 dF9uYW1lLS0xLjAuc3FsIjsKLQotIyBDcmVhdGUgLmNvbnRyb2wgLnNxbCBmaWxlCi1vcGVuIG15 ICRjZiwgJz4nLCAkY29udHJvbF9maWxlIG9yIGRpZSAiQ291bGQgbm90IGNyZWF0ZSBjb250cm9s IGZpbGU6ICQhIjsKLXByaW50ICRjZiAiY29tbWVudCA9ICdUZXN0IGV4dGVuc2lvbl9jb250cm9s X3BhdGgnXG4iOwotcHJpbnQgJGNmICJkZWZhdWx0X3ZlcnNpb24gPSAnMS4wJ1xuIjsKLXByaW50 ICRjZiAicmVsb2NhdGFibGUgPSB0cnVlXG4iOwotY2xvc2UgJGNmOwotCi0jIENyZWF0ZSAtLTEu MC5zcWwgZmlsZQotb3BlbiBteSAkc3FsZiwgJz4nLCAkc3FsX2ZpbGUgb3IgZGllICJDb3VsZCBu b3QgY3JlYXRlIHNxbCBmaWxlOiAkISI7Ci1wcmludCAkc3FsZiAiLyogJHNxbF9maWxlICovXG4i OwotcHJpbnQgJHNxbGYKLSAgIi0tIGNvbXBsYWluIGlmIHNjcmlwdCBpcyBzb3VyY2VkIGluIHBz cWwsIHJhdGhlciB0aGFuIHZpYSBDUkVBVEUgRVhURU5TSU9OXG4iOwotcHJpbnQgJHNxbGYKLSAg cXEnXFxlY2hvIFVzZSAiQ1JFQVRFIEVYVEVOU0lPTiAkZXh0X25hbWUiIHRvIGxvYWQgdGhpcyBm aWxlLiBcXHF1aXRcbic7Ci1jbG9zZSAkc3FsZjsKK2NyZWF0ZV9leHRlbnNpb24oJGV4dF9uYW1l LCAkZXh0X2Rpcik7CisKK215ICRleHRfbmFtZTIgPSAidGVzdF9jdXN0b21fZXh0X3BhdGhzX3Vz aW5nX2RpcmVjdG9yeSI7CittYWtlX3BhdGgoIiRleHRfZGlyLyRleHRfbmFtZTIiKTsKK2NyZWF0 ZV9leHRlbnNpb24oJGV4dF9uYW1lMiwgJGV4dF9kaXIsICRleHRfbmFtZTIpOwogCiAjIFVzZSB0 aGUgY29ycmVjdCBzZXBhcmF0b3IgYW5kIGVzY2FwZSBcIHdoZW4gcnVubmluZyBvbiBXaW5kb3dz LgogbXkgJHNlcCA9ICR3aW5kb3dzX29zID8gIjsiIDogIjoiOwpAQCAtNDgsNiArMzgsNyBAQCBp cygkZWNwLCAiXCRzeXN0ZW0kc2VwJGV4dF9kaXIiLAogCSJjdXN0b20gZXh0ZW5zaW9uIGNvbnRy b2wgZGlyZWN0b3J5IHBhdGggY29uZmlndXJlZCIpOwogCiAkbm9kZS0+c2FmZV9wc3FsKCdwb3N0 Z3JlcycsICJDUkVBVEUgRVhURU5TSU9OICRleHRfbmFtZSIpOworJG5vZGUtPnNhZmVfcHNxbCgn cG9zdGdyZXMnLCAiQ1JFQVRFIEVYVEVOU0lPTiAkZXh0X25hbWUyIik7CiAKIG15ICRyZXQgPSAk bm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCiAJInNlbGVjdCAqIGZyb20gcGdfYXZhaWxhYmxl X2V4dGVuc2lvbnMgd2hlcmUgbmFtZSA9ICckZXh0X25hbWUnIik7CkBAIC01NSwyNiArNDYsODAg QEAgaXMoICRyZXQsCiAJInRlc3RfY3VzdG9tX2V4dF9wYXRoc3wxLjB8MS4wfFRlc3QgZXh0ZW5z aW9uX2NvbnRyb2xfcGF0aCIsCiAJImV4dGVuc2lvbiBpcyBpbnN0YWxsZWQgY29ycmVjdGx5IG9u IHBnX2F2YWlsYWJsZV9leHRlbnNpb25zIik7CiAKLW15ICRyZXQyID0gJG5vZGUtPnNhZmVfcHNx bCgncG9zdGdyZXMnLAorJHJldCA9ICRub2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKIAkic2Vs ZWN0ICogZnJvbSBwZ19hdmFpbGFibGVfZXh0ZW5zaW9uX3ZlcnNpb25zIHdoZXJlIG5hbWUgPSAn JGV4dF9uYW1lJyIpOwotaXMoICRyZXQyLAoraXMoICRyZXQsCiAJInRlc3RfY3VzdG9tX2V4dF9w YXRoc3wxLjB8dHx0fGZ8dHx8fFRlc3QgZXh0ZW5zaW9uX2NvbnRyb2xfcGF0aCIsCiAJImV4dGVu c2lvbiBpcyBpbnN0YWxsZWQgY29ycmVjdGx5IG9uIHBnX2F2YWlsYWJsZV9leHRlbnNpb25fdmVy c2lvbnMiKTsKIAorJHJldCA9ICRub2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVzJywKKwkic2VsZWN0 ICogZnJvbSBwZ19hdmFpbGFibGVfZXh0ZW5zaW9ucyB3aGVyZSBuYW1lID0gJyRleHRfbmFtZTIn Iik7CitpcyggJHJldCwKKwkidGVzdF9jdXN0b21fZXh0X3BhdGhzX3VzaW5nX2RpcmVjdG9yeXwx LjB8MS4wfFRlc3QgZXh0ZW5zaW9uX2NvbnRyb2xfcGF0aCIsCisJImV4dGVuc2lvbiBpcyBpbnN0 YWxsZWQgY29ycmVjdGx5IG9uIHBnX2F2YWlsYWJsZV9leHRlbnNpb25zIik7CisKKyRyZXQgPSAk bm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCisJInNlbGVjdCAqIGZyb20gcGdfYXZhaWxhYmxl X2V4dGVuc2lvbl92ZXJzaW9ucyB3aGVyZSBuYW1lID0gJyRleHRfbmFtZTInIik7CitpcyggJHJl dCwKKwkidGVzdF9jdXN0b21fZXh0X3BhdGhzX3VzaW5nX2RpcmVjdG9yeXwxLjB8dHx0fGZ8dHx8 fFRlc3QgZXh0ZW5zaW9uX2NvbnRyb2xfcGF0aCIsCisJImV4dGVuc2lvbiBpcyBpbnN0YWxsZWQg Y29ycmVjdGx5IG9uIHBnX2F2YWlsYWJsZV9leHRlbnNpb25fdmVyc2lvbnMiKTsKKwogIyBFbnN1 cmUgdGhhdCBleHRlbnNpb25zIGluc3RhbGxlZCBvbiAkc3lzdGVtIGlzIHN0aWxsIHZpc2libGUg d2hlbiB1c2luZyB3aXRoCiAjIGN1c3RvbSBleHRlbnNpb24gY29udHJvbCBwYXRoLgotbXkgJHJl dDMgPSAkbm9kZS0+c2FmZV9wc3FsKCdwb3N0Z3JlcycsCiskcmV0ID0gJG5vZGUtPnNhZmVfcHNx bCgncG9zdGdyZXMnLAogCSJzZWxlY3QgY291bnQoKikgPiAwIGFzIG9rIGZyb20gcGdfYXZhaWxh YmxlX2V4dGVuc2lvbnMgd2hlcmUgbmFtZSA9ICdwbHBnc3FsJyIKICk7Ci1pcygkcmV0MywgInQi LAoraXMoJHJldCwgInQiLAogCSJcJHN5c3RlbSBleHRlbnNpb24gaXMgaW5zdGFsbGVkIGNvcnJl Y3RseSBvbiBwZ19hdmFpbGFibGVfZXh0ZW5zaW9ucyIpOwogCiAKLW15ICRyZXQ0ID0gJG5vZGUt PnNhZmVfcHNxbCgncG9zdGdyZXMnLAorJHJldCA9ICRub2RlLT5zYWZlX3BzcWwoJ3Bvc3RncmVz JywKIAkic2V0IGV4dGVuc2lvbl9jb250cm9sX3BhdGggPSAnJzsgc2VsZWN0IGNvdW50KCopID4g MCBhcyBvayBmcm9tIHBnX2F2YWlsYWJsZV9leHRlbnNpb25zIHdoZXJlIG5hbWUgPSAncGxwZ3Nx bCciCiApOwotaXMoJHJldDQsICJ0IiwKK2lzKCRyZXQsICJ0IiwKIAkiXCRzeXN0ZW0gZXh0ZW5z aW9uIGlzIGluc3RhbGxlZCBjb3JyZWN0bHkgb24gcGdfYXZhaWxhYmxlX2V4dGVuc2lvbnMgd2l0 aCBlbXB0eSBleHRlbnNpb25fY29udHJvbF9wYXRoIgogKTsKIAorIyBUZXN0IHdpdGggYW4gZXh0 ZW5zaW9uIHRoYXQgZG9lcyBub3QgZXhpc3RzCitteSAoJGNvZGUsICRzdGRvdXQsICRzdGRlcnIp ID0gICRub2RlLT5wc3FsKCdwb3N0Z3JlcycsICJDUkVBVEUgRVhURU5TSU9OIGludmFsaWQiKTsK K2lzKCRjb2RlLCAzLCAnZXJyb3IgdG8gY3JlYXRlIGFuIGV4dGVuc2lvbiB0aGF0IGRvZXMgbm90 IGV4aXN0cycpOworbGlrZSgkc3RkZXJyLCBxci9FUlJPUjogIGV4dGVuc2lvbiAiaW52YWxpZCIg aXMgbm90IGF2YWlsYWJsZS8pOworCitzdWIgY3JlYXRlX2V4dGVuc2lvbgoreworCW15ICgkZXh0 X25hbWUsICRleHRfZGlyLCAkZGlyZWN0b3J5KSA9IEBfOworCisJbXkgJGNvbnRyb2xfZmlsZSA9 ICIkZXh0X2Rpci9leHRlbnNpb24vJGV4dF9uYW1lLmNvbnRyb2wiOworCW15ICRzcWxfZmlsZTsK KworCWlmIChkZWZpbmVkICRkaXJlY3RvcnkpCisJeworCQkkc3FsX2ZpbGUgPSAiJGV4dF9kaXIv JGRpcmVjdG9yeS8kZXh0X25hbWUtLTEuMC5zcWwiOworCX0KKwllbHNlCisJeworCQkkc3FsX2Zp bGUgPSAiJGV4dF9kaXIvZXh0ZW5zaW9uLyRleHRfbmFtZS0tMS4wLnNxbCI7CisJfQorCisJIyBD cmVhdGUgLmNvbnRyb2wgLnNxbCBmaWxlCisJb3BlbiBteSAkY2YsICc+JywgJGNvbnRyb2xfZmls ZSBvciBkaWUgIkNvdWxkIG5vdCBjcmVhdGUgY29udHJvbCBmaWxlOiAkISI7CisJcHJpbnQgJGNm ICJjb21tZW50ID0gJ1Rlc3QgZXh0ZW5zaW9uX2NvbnRyb2xfcGF0aCdcbiI7CisJcHJpbnQgJGNm ICJkZWZhdWx0X3ZlcnNpb24gPSAnMS4wJ1xuIjsKKwlwcmludCAkY2YgInJlbG9jYXRhYmxlID0g dHJ1ZVxuIjsKKwlpZiAoZGVmaW5lZCAkZGlyZWN0b3J5KQorCXsKKwkJcHJpbnQgJGNmICJkaXJl Y3RvcnkgPSAkZGlyZWN0b3J5IjsKKwl9CisJY2xvc2UgJGNmOworCisJIyBDcmVhdGUgLS0xLjAu c3FsIGZpbGUKKwlvcGVuIG15ICRzcWxmLCAnPicsICRzcWxfZmlsZSBvciBkaWUgIkNvdWxkIG5v dCBjcmVhdGUgc3FsIGZpbGU6ICQhIjsKKwlwcmludCAkc3FsZiAiLyogJHNxbF9maWxlICovXG4i OworCXByaW50ICRzcWxmCisJICAiLS0gY29tcGxhaW4gaWYgc2NyaXB0IGlzIHNvdXJjZWQgaW4g cHNxbCwgcmF0aGVyIHRoYW4gdmlhIENSRUFURSBFWFRFTlNJT05cbiI7CisJcHJpbnQgJHNxbGYK KwkgIHFxJ1xcZWNobyBVc2UgIkNSRUFURSBFWFRFTlNJT04gJGV4dF9uYW1lIiB0byBsb2FkIHRo aXMgZmlsZS4gXFxxdWl0XG4nOworCWNsb3NlICRzcWxmOworfQorCiBkb25lX3Rlc3RpbmcoKTsK LS0gCjIuMzkuNSAoQXBwbGUgR2l0LTE1NCkKCg== --0000000000005bfc3806339a4585--