From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mail-pg1-x532.google.com (mail-pg1-x532.google.com [IPv6:2607:f8b0:4864:20::532]) by sourceware.org (Postfix) with ESMTPS id 9A6AE3858C42; Sun, 12 May 2024 11:27:32 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 9A6AE3858C42 Authentication-Results: sourceware.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=gmail.com ARC-Filter: OpenARC Filter v1.0.0 sourceware.org 9A6AE3858C42 Authentication-Results: server2.sourceware.org; arc=none smtp.remote-ip=2607:f8b0:4864:20::532 ARC-Seal: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1715513255; cv=none; b=Yd7Z/nmWBYtOegWIqjeFyRSlz/CHWdIx+Dw3EB8qDX2DpnehMMvPrmpsEJZSpTIFv5OzIB4R1elq+n15VqmsQZ623JZZ3kIqai60l+9ckvQqcQ1+mo3oMM2TegURJudhvq2WcLNPJdVafMeBu9ShRDcVtJkHyizmxB3oOYACXQI= ARC-Message-Signature: i=1; a=rsa-sha256; d=sourceware.org; s=key; t=1715513255; c=relaxed/simple; bh=mRFun19OcGu0tn4pLszXh4cqX+k9QLLvIMGJxdlaQDs=; h=DKIM-Signature:MIME-Version:From:Date:Message-ID:Subject:To; b=BrQ0W7+uSctRUm6mYlokYBN1/qQrRg4xWzVZ2qvl6oW9OcXXy7O+HIe0M+ngoD8TMqIX0STDyWBqwc3NUMyQas/R4Dymcga2IMQ08Exg9d4IX1XAKQG03OMhi91a6P3kRLfmUerk9wpiahn2lGk6vX5yxy29e+4ff00Pxp6I1YY= ARC-Authentication-Results: i=1; server2.sourceware.org Received: by mail-pg1-x532.google.com with SMTP id 41be03b00d2f7-61eba9f9c5dso2674014a12.0; Sun, 12 May 2024 04:27:32 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1715513251; x=1716118051; darn=gcc.gnu.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=bEmFVsTHYbgWPirkZabb/+14BV1fbaPgIo52xD+zDCg=; b=WPfOcVzWjY7IBAvt6L4Kwyv7qm6YwNCYUmsQfBxIv17g6V46R60rcTrMsS9Z2MD/Md xRXSyHhJY6Wq1HbIhEqNPOLtii/TQfV3HHANV4WspgSmZO5WoSUNo6cA9E2LwQmTS6ay dKI6OsEIbIJbLl6UEEL39LWjOgcXIAxJK5d5n6shxdfZ8JWENep21yNmLn1ivk/irUoC nk+AM6FncBwcrmZ1kluQue3cbKShJdc+ArDaFRbQUGw0eeJbrkPR2/Wkpie5LzfhktOL XX6O9gEwJRVlockTIRTX1bSGhjHmatzIIkllkkQJ51+9HMn0II/jeHdRquMmwg9jHTIq qXBg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1715513251; x=1716118051; 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=bEmFVsTHYbgWPirkZabb/+14BV1fbaPgIo52xD+zDCg=; b=CfdFN+NODtuOOjL7uN9IHtSXnQL+BIYtDNP9b+NUugertD/GpeDKi/678os1vKkdEy 6gH7/sTDH7ScB9dT3oqJxUcxM4twSDMeHmJVPAkeWGcEA9+o5wm8pioXemEcGhsp91M2 vmZXxjxnoonNJziILdOIMiFAXa4jgc6/QzwDhFB0HDgj+eBX98Ny/U8awLl5LTf6USNs ADx3dmXwrOO3K2elv53RKf21J9ux1nBd3ExcTTpg6Po4aTKCDcKj/UFgmvDCgwv29NcD Sq2wLBahnH3bHhEGcW2XhEHKJZox0BjXfxxy82HZRIwRLJUSB5DI4POO/HK4rYZdjOhV 7XuQ== X-Forwarded-Encrypted: i=1; AJvYcCX6D9+YpcOdi7BsZw9QMm8F4nwtq95ZfOpW0ldwaWA3GyUkO5FjIsjTp0BAuJnBrFTGuwrmf82tTZGAhXQQza8rIVDpPbxXoA== X-Gm-Message-State: AOJu0YxgDZkOgPTzF0UTokhdxs08ZIB076r81N5f2dxtbNH2TcBdM+ZN aI300RgXcTp0DyUzYCLVJQugat51mBHYYH4oxg9Elj+8qbE8xqKjSXBaDCKPTgzbnidgH6rhaUd GHNhp1Y7Mql0o63EUDeLTWwktxSA= X-Google-Smtp-Source: AGHT+IEEwYC/F9hE5fhTI7g3424wE/4I4SjYnSIWTe6cCLxKv2iUz3YfQRaSvQVVafmoXaQVoRwX4XGVQs+kOyM1GGs= X-Received: by 2002:a05:6a20:101a:b0:1af:a4bc:1f71 with SMTP id adf61e73a8af0-1afde10de4amr6139585637.26.1715513251089; Sun, 12 May 2024 04:27:31 -0700 (PDT) MIME-Version: 1.0 References: <1c17a1be-7c40-451d-baa1-652cc40a16b4@gmx.de> In-Reply-To: <1c17a1be-7c40-451d-baa1-652cc40a16b4@gmx.de> From: Paul Richard Thomas Date: Sun, 12 May 2024 12:27:19 +0100 Message-ID: Subject: Re: [Patch, fortran] PR113363 - ICE on ASSOCIATE and unlimited polymorphic function To: Harald Anlauf Cc: "fortran@gcc.gnu.org" , gcc-patches Content-Type: multipart/mixed; boundary="000000000000f06c410618400d3a" X-Spam-Status: No, score=-7.8 required=5.0 tests=BAYES_00,DKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FREEMAIL_FROM,GIT_PATCH_0,HTML_MESSAGE,RCVD_IN_DNSWL_NONE,SPF_HELO_NONE,SPF_PASS,TXREP autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: --000000000000f06c410618400d3a Content-Type: multipart/alternative; boundary="000000000000f06c3f0618400d38" --000000000000f06c3f0618400d38 Content-Type: text/plain; charset="UTF-8" Hi Harald, Please find attached my resubmission for pr113363. The changes are as follows: (i) The chunk in gfc_conv_procedure_call is new. This was the source of one of the memory leaks; (ii) The incorporation of the _len field in trans_class_assignment was done for the pr84006 patch; (iii) The source of all the invalid memory accesses and so on was down to the use of realloc. I tried all sorts of workarounds such as testing the vptrs and the sizes but only free followed by malloc worked. I have no idea at all why this is the case; and (iv) I took account of your remarks about the chunk in trans-array.cc by removing it and that the chunk in trans-stmt.cc would leak frontend memory. OK for mainline (and -14 branch after a few-weeks)? Regards Paul Fortran: Fix wrong code in unlimited polymorphic assignment [PR113363] 2024-05-12 Paul Thomas gcc/fortran PR fortran/113363 * trans-array.cc (gfc_array_init_size): Use the expr3 dtype so that the correct element size is used. * trans-expr.cc (gfc_conv_procedure_call): Remove restriction that ss and ss->loop be present for the finalization of class array function results. (trans_class_assignment): Use free and malloc, rather than realloc, for character expressions assigned to unlimited poly entities. * trans-stmt.cc (gfc_trans_allocate): Build a correct rhs for the assignment of an unlimited polymorphic 'source'. gcc/testsuite/ PR fortran/113363 * gfortran.dg/pr113363.f90: New test. > > The first chunk in trans-array.cc ensures that the array dtype is set to > > the source dtype. The second chunk ensures that the lhs _len field does > not > > default to zero and so is specific to dynamic types of character. > > > > Why the two gfc_copy_ref? valgrind pointed my to the tail > of gfc_copy_ref which already has: > > dest->next = gfc_copy_ref (src->next); > > so this looks redundant and leaks frontend memory? > > *** > > Playing with the testcase, I find several invalid writes with > valgrind, or a heap buffer overflow with -fsanitize=address . > > > --000000000000f06c3f0618400d38-- --000000000000f06c410618400d3a Content-Type: text/x-patch; charset="US-ASCII"; name="resubmit.diff" Content-Disposition: attachment; filename="resubmit.diff" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_lw3g9jh60 ZGlmZiAtLWdpdCBhL2djYy9mb3J0cmFuL3RyYW5zLWFycmF5LmNjIGIvZ2Nj L2ZvcnRyYW4vdHJhbnMtYXJyYXkuY2MKaW5kZXggN2VjMzNmYjE1OTguLmM1 YjU2ZjRlMjczIDEwMDY0NAotLS0gYS9nY2MvZm9ydHJhbi90cmFucy1hcnJh eS5jYworKysgYi9nY2MvZm9ydHJhbi90cmFucy1hcnJheS5jYwpAQCAtNTk1 Nyw2ICs1OTU3LDExIEBAIGdmY19hcnJheV9pbml0X3NpemUgKHRyZWUgZGVz Y3JpcHRvciwgaW50IHJhbmssIGludCBjb3JhbmssIHRyZWUgKiBwb2Zmc2V0 LAogICAgICAgdG1wID0gZ2ZjX2NvbnZfZGVzY3JpcHRvcl9kdHlwZSAoZGVz Y3JpcHRvcik7CiAgICAgICBnZmNfYWRkX21vZGlmeSAocGJsb2NrLCB0bXAs IGdmY19nZXRfZHR5cGVfcmFua190eXBlIChyYW5rLCB0eXBlKSk7CiAgICAg fQorICBlbHNlIGlmIChleHByM19kZXNjICYmIEdGQ19ERVNDUklQVE9SX1RZ UEVfUCAoVFJFRV9UWVBFIChleHByM19kZXNjKSkpCisgICAgeworICAgICAg dG1wID0gZ2ZjX2NvbnZfZGVzY3JpcHRvcl9kdHlwZSAoZGVzY3JpcHRvcik7 CisgICAgICBnZmNfYWRkX21vZGlmeSAocGJsb2NrLCB0bXAsIGdmY19jb252 X2Rlc2NyaXB0b3JfZHR5cGUgKGV4cHIzX2Rlc2MpKTsKKyAgICB9CiAgIGVs c2UKICAgICB7CiAgICAgICB0bXAgPSBnZmNfY29udl9kZXNjcmlwdG9yX2R0 eXBlIChkZXNjcmlwdG9yKTsKZGlmZiAtLWdpdCBhL2djYy9mb3J0cmFuL3Ry YW5zLWV4cHIuY2MgYi9nY2MvZm9ydHJhbi90cmFucy1leHByLmNjCmluZGV4 IDQ1OTBhYTZlZGI0Li5lMzE1ZTJkMzM3MCAxMDA2NDQKLS0tIGEvZ2NjL2Zv cnRyYW4vdHJhbnMtZXhwci5jYworKysgYi9nY2MvZm9ydHJhbi90cmFucy1l eHByLmNjCkBAIC04MjQ1LDggKzgyNDUsNyBAQCBnZmNfY29udl9wcm9jZWR1 cmVfY2FsbCAoZ2ZjX3NlICogc2UsIGdmY19zeW1ib2wgKiBzeW0sCiAJIGNh bGwgdGhlIGZpbmFsaXphdGlvbiBmdW5jdGlvbiBvZiB0aGUgdGVtcG9yYXJ5 LiBOb3RlIHRoYXQgdGhlCiAJIG51bGxpZmljYXRpb24gb2YgYWxsb2NhdGFi bGUgY29tcG9uZW50cyBuZWVkZWQgYnkgdGhlIHJlc3VsdAogCSBpcyBkb25l IGluIGdmY190cmFuc19hc3NpZ25tZW50XzEuICAqLwotICAgICAgaWYgKGV4 cHIgJiYgKChnZmNfaXNfY2xhc3NfYXJyYXlfZnVuY3Rpb24gKGV4cHIpCi0J CSAgICAmJiBzZS0+c3MgJiYgc2UtPnNzLT5sb29wKQorICAgICAgaWYgKGV4 cHIgJiYgKGdmY19pc19jbGFzc19hcnJheV9mdW5jdGlvbiAoZXhwcikKIAkJ ICAgfHwgZ2ZjX2lzX2FsbG9jX2NsYXNzX3NjYWxhcl9mdW5jdGlvbiAoZXhw cikpCiAJICAmJiBzZS0+ZXhwciAmJiBHRkNfQ0xBU1NfVFlQRV9QIChUUkVF X1RZUEUgKHNlLT5leHByKSkKIAkgICYmIGV4cHItPm11c3RfZmluYWxpemUp CkBAIC0xMjAyOCwxOCArMTIwMjcsMjUgQEAgdHJhbnNfY2xhc3NfYXNzaWdu bWVudCAoc3RtdGJsb2NrX3QgKmJsb2NrLCBnZmNfZXhwciAqbGhzLCBnZmNf ZXhwciAqcmhzLAogCiAgICAgICAvKiBSZWFsbG9jYXRlIGlmIGR5bmFtaWMg dHlwZXMgYXJlIGRpZmZlcmVudC4gKi8KICAgICAgIGdmY19pbml0X2Jsb2Nr ICgmcmVfYWxsb2MpOwotICAgICAgdG1wID0gZm9sZF9jb252ZXJ0IChwdm9p ZF90eXBlX25vZGUsIGNsYXNzX2hhbik7Ci0gICAgICByZSA9IGJ1aWxkX2Nh bGxfZXhwcl9sb2MgKGlucHV0X2xvY2F0aW9uLAotCQkJCWJ1aWx0aW5fZGVj bF9leHBsaWNpdCAoQlVJTFRfSU5fUkVBTExPQyksIDIsCi0JCQkJdG1wLCBz aXplKTsKLSAgICAgIHJlID0gZm9sZF9idWlsZDJfbG9jIChpbnB1dF9sb2Nh dGlvbiwgTU9ESUZZX0VYUFIsIFRSRUVfVFlQRSAodG1wKSwgdG1wLAotCQkJ ICAgIHJlKTsKLSAgICAgIHRtcCA9IGZvbGRfYnVpbGQyX2xvYyAoaW5wdXRf bG9jYXRpb24sIE5FX0VYUFIsCi0JCQkgICAgIGxvZ2ljYWxfdHlwZV9ub2Rl LCByaHNfdnB0ciwgb2xkX3ZwdHIpOwotICAgICAgcmUgPSBmb2xkX2J1aWxk M19sb2MgKGlucHV0X2xvY2F0aW9uLCBDT05EX0VYUFIsIHZvaWRfdHlwZV9u b2RlLAotCQkJICAgIHRtcCwgcmUsIGJ1aWxkX2VtcHR5X3N0bXQgKGlucHV0 X2xvY2F0aW9uKSk7Ci0gICAgICBnZmNfYWRkX2V4cHJfdG9fYmxvY2sgKCZy ZV9hbGxvYywgcmUpOwotCisgICAgICBpZiAoVU5MSU1JVEVEX1BPTFkgKGxo cykgJiYgcmhzLT50cy50eXBlID09IEJUX0NIQVJBQ1RFUikKKwl7CisJICBn ZmNfYWRkX2V4cHJfdG9fYmxvY2sgKCZyZV9hbGxvYywgZ2ZjX2NhbGxfZnJl ZSAoY2xhc3NfaGFuKSk7CisJICBnZmNfYWxsb2NhdGVfdXNpbmdfbWFsbG9j ICgmcmVfYWxsb2MsIGNsYXNzX2hhbiwgc2l6ZSwgTlVMTF9UUkVFKTsKKwl9 CisgICAgICBlbHNlCisJeworCSAgdG1wID0gZm9sZF9jb252ZXJ0IChwdm9p ZF90eXBlX25vZGUsIGNsYXNzX2hhbik7CisJICByZSA9IGJ1aWxkX2NhbGxf ZXhwcl9sb2MgKGlucHV0X2xvY2F0aW9uLAorCQkJCSAgICBidWlsdGluX2Rl Y2xfZXhwbGljaXQgKEJVSUxUX0lOX1JFQUxMT0MpLAorCQkJCSAgICAyLCB0 bXAsIHNpemUpOworCSAgcmUgPSBmb2xkX2J1aWxkMl9sb2MgKGlucHV0X2xv Y2F0aW9uLCBNT0RJRllfRVhQUiwgVFJFRV9UWVBFICh0bXApLAorCQkJCXRt cCwgcmUpOworCSAgdG1wID0gZm9sZF9idWlsZDJfbG9jIChpbnB1dF9sb2Nh dGlvbiwgTkVfRVhQUiwKKwkJCQkgbG9naWNhbF90eXBlX25vZGUsIHJoc192 cHRyLCBvbGRfdnB0cik7CisJICByZSA9IGZvbGRfYnVpbGQzX2xvYyAoaW5w dXRfbG9jYXRpb24sIENPTkRfRVhQUiwgdm9pZF90eXBlX25vZGUsCisJCQkJ dG1wLCByZSwgYnVpbGRfZW1wdHlfc3RtdCAoaW5wdXRfbG9jYXRpb24pKTsK KwkgIGdmY19hZGRfZXhwcl90b19ibG9jayAoJnJlX2FsbG9jLCByZSk7CisJ fQogICAgICAgdHJlZSByZWFsbG9jX2V4cHIgPSBsaHMtPnRzLnR5cGUgPT0g QlRfQ0xBU1MgPwogCQkJCQkgIGdmY19maW5pc2hfYmxvY2sgKCZyZV9hbGxv YykgOgogCQkJCQkgIGJ1aWxkX2VtcHR5X3N0bXQgKGlucHV0X2xvY2F0aW9u KTsKZGlmZiAtLWdpdCBhL2djYy9mb3J0cmFuL3RyYW5zLXN0bXQuY2MgYi9n Y2MvZm9ydHJhbi90cmFucy1zdG10LmNjCmluZGV4IGQzNTUwMDlmYTVlLi45 YjQ5N2Q2YmRjNiAxMDA2NDQKLS0tIGEvZ2NjL2ZvcnRyYW4vdHJhbnMtc3Rt dC5jYworKysgYi9nY2MvZm9ydHJhbi90cmFucy1zdG10LmNjCkBAIC03MjE1 LDYgKzcyMTUsNDYgQEAgZ2ZjX3RyYW5zX2FsbG9jYXRlIChnZmNfY29kZSAq IGNvZGUsIGdmY19vbXBfbmFtZWxpc3QgKm9tcF9hbGxvY2F0ZSkKIAkgIGdm Y19leHByICpyaHMgPSBlM3JocyA/IGUzcmhzIDogZ2ZjX2NvcHlfZXhwciAo Y29kZS0+ZXhwcjMpOwogCSAgZmxhZ19yZWFsbG9jX2xocyA9IDA7CiAKKwkg IC8qIFRoZSBoYW5kbGluZyBvZiBjb2RlLT5leHByMyBhYm92ZSBwcm9kdWNl cyBhIGRlcml2ZWQgdHlwZSBvZgorCSAgICAgdHlwZSAiU1RBUiIsIHdob3Nl IHNpemUgZGVmYXVsdHMgdG8gc2l6ZSh2b2lkKikuIEluIG9yZGVyIHRvCisJ ICAgICBoYXZlIHRoZSByaWdodCB0eXBlIGluZm9ybWF0aW9uIGZvciB0aGUg YXNzaWdubWVudCwgd2UgbXVzdAorCSAgICAgcmVjb25zdHJ1Y3QgYW4gdW5s aW1pdGVkIHBvbHltb3JwaGljIHJocy4gICovCisJICBpZiAoVU5MSU1JVEVE X1BPTFkgKGNvZGUtPmV4cHIzKQorCSAgICAgICYmIGUzcmhzICYmIGUzcmhz LT50cy50eXBlID09IEJUX0RFUklWRUQKKwkgICAgICAmJiAhc3RyY21wIChl M3Jocy0+dHMudS5kZXJpdmVkLT5uYW1lLCAiU1RBUiIpKQorCSAgICB7CisJ ICAgICAgZ2ZjX3JlZiAqcmVmOworCSAgICAgIGdjY19hc3NlcnQgKFRSRUVf Q09ERSAoZXhwcjNfdnB0cikgPT0gQ09NUE9ORU5UX1JFRik7CisJICAgICAg dG1wID0gZ2ZjX2NyZWF0ZV92YXIgKGdmY190eXBlbm9kZV9mb3Jfc3BlYyAo JmNvZGUtPmV4cHIzLT50cyksCisJCQkJICAgICJlMyIpOworCSAgICAgIGdm Y19hZGRfbW9kaWZ5ICgmYmxvY2ssIHRtcCwKKwkJCSAgICAgIGdmY19nZXRf Y2xhc3NfZnJvbV9leHByIChleHByM192cHRyKSk7CisJICAgICAgcmhzLT5z eW10cmVlLT5uLnN5bS0+YmFja2VuZF9kZWNsID0gdG1wOworCSAgICAgIHJo cy0+dHMgPSBjb2RlLT5leHByMy0+dHM7CisJICAgICAgcmhzLT5zeW10cmVl LT5uLnN5bS0+dHMgPSByaHMtPnRzOworCSAgICAgIGZvciAocmVmID0gaW5p dF9leHByLT5yZWY7IHJlZjsgcmVmID0gcmVmLT5uZXh0KQorCQl7CisJCSAg LyogQ29weSBvdmVyIHRoZSBsaHMgX2RhdGEgY29tcG9uZW50IHJlZiBmb2xs b3dlZCBieSB0aGUKKwkJICAgICBmdWxsIGFycmF5IHJlZmVyZW5jZSBmb3Ig c291cmNlIGV4cHJlc3Npb25zIHdpdGggcmFuay4KKwkJICAgICBPdGhlcndp c2UsIGp1c3QgY29weSB0aGUgX2RhdGEgY29tcG9uZW50IHJlZi4gICovCisJ CSAgaWYgKGNvZGUtPmV4cHIzLT5yYW5rCisJCSAgICAgICYmIHJlZiAmJiBy ZWYtPm5leHQgJiYgIXJlZi0+bmV4dC0+bmV4dCkKKwkJICAgIHsKKwkJICAg ICAgcmhzLT5yZWYgPSBnZmNfY29weV9yZWYgKHJlZik7CisJCSAgICAgIGJy ZWFrOworCQkgICAgfQorCQkgIGVsc2UgaWYgKChpbml0X2V4cHItPnJhbmsg JiYgIWNvZGUtPmV4cHIzLT5yYW5rCisJCQkgICAgJiYgcmVmICYmIHJlZi0+ bmV4dCAmJiAhcmVmLT5uZXh0LT5uZXh0KQorCQkJICAgfHwgKHJlZiAmJiAh cmVmLT5uZXh0KSkKKwkJICAgIHsKKwkJICAgICAgcmhzLT5yZWYgPSBnZmNf Y29weV9yZWYgKHJlZik7CisJCSAgICAgIGdmY19mcmVlX3JlZl9saXN0IChy aHMtPnJlZi0+bmV4dCk7CisJCSAgICAgIHJocy0+cmVmLT5uZXh0ID0gTlVM TDsKKwkJICAgICAgYnJlYWs7CisJCSAgICB9CisJCX0KKwkgICAgfQorCiAJ ICAvKiBTZXQgdGhlIHN5bWJvbCB0byBiZSBhcnRpZmljaWFsIHNvIHRoYXQg dGhlIHJlc3VsdCBpcyBub3QgZmluYWxpemVkLiAgKi8KIAkgIGluaXRfZXhw ci0+c3ltdHJlZS0+bi5zeW0tPmF0dHIuYXJ0aWZpY2lhbCA9IDE7CiAJICB0 bXAgPSBnZmNfdHJhbnNfYXNzaWdubWVudCAoaW5pdF9leHByLCByaHMsIHRy dWUsIGZhbHNlLCB0cnVlLApkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9n Zm9ydHJhbi5kZy9wcjExMzM2My5mOTAgYi9nY2MvdGVzdHN1aXRlL2dmb3J0 cmFuLmRnL3ByMTEzMzYzLmY5MApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCAwMDAwMDAwMDAwMC4uOTlkNGYyMDc2ZDgKLS0tIC9kZXYvbnVsbAorKysg Yi9nY2MvdGVzdHN1aXRlL2dmb3J0cmFuLmRnL3ByMTEzMzYzLmY5MApAQCAt MCwwICsxLDg2IEBACishIHsgZGctZG8gcnVuIH0KKyEgVGVzdCB0aGUgZml4 IGZvciBjb21tZW50IDEgaW4gUFIxMTMzNjMsIHdoaWNoIGZhaWxlZCBhcyBp biBjb21tZW50cyBiZWxvdy4KKyEgQ29udHJpYnV0ZWQgYnkgSGFyYWxkIEFu bGF1ZiAgPGFubGF1ZkBnY2MuZ251Lm9yZz4KK3Byb2dyYW0gcAorICBpbXBs aWNpdCBub25lCisgIGNsYXNzKCopLCBhbGxvY2F0YWJsZSA6OiB4KDopLCB5 CisgIGNoYXJhY3RlcigqKSwgcGFyYW1ldGVyIDo6IGFycigyKSA9IFsiaGVs bG8gIiwiYnllICAgIl0sICYKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgc2NhID0gIkhhdmUgYSBuaWNlIGRheSIKKyAgY2hhcmFjdGVyKDEwKSA6 OiBjb25zdAorCishIEJ1ZyB3YXMgZGV0ZWN0ZWQgaW4gcG9seW1vcnBoaWMg YXJyYXkgZnVuY3Rpb24gcmVzdWx0cworICBhbGxvY2F0ZSh4LCBzb3VyY2Ug PSBmb28gKCkpCisgIGNhbGwgY2hlY2sxICh4LCBhcnIpICAgICAgICAgICAg ICAhIFdyb25nIG91dHB1dCAiNiBoZWxsbyBlIgorICBkZWFsbG9jYXRlICh4 KQorICB4ID0gZm9vICgpCisgIGNhbGwgY2hlY2sxICh4LCBhcnIpICAgICAg ICAgICAgICAhIFdyb25nIG91dHB1dCAiMCAgIgorICBhc3NvY2lhdGUgKHZh ciA9PiBmb28gKCkpICAgICAgICAgISBPSyBhZnRlciByMTQtOTQ4OS1nM2Zk NDZkODU5Y2RhMTAKKyAgICBjYWxsIGNoZWNrMSAodmFyLCBhcnIpICAgICAg ICAgICEgTm93IE9LIC0gb3V0cHV0czogIjYgaGVsbG8gYnllICAgIgorICBl bmQgYXNzb2NpYXRlCisKKyEgQ2hlY2sgc2NhbGFyIGZ1bmN0aW9uIHJlc3Vs dHMgICAgICEgQWxsIE9LCisgIGFsbG9jYXRlICh5LCBzb3VyY2UgPSBiYXIo KSkKKyAgY2FsbCBjaGVjazIgKHksIHNjYSkKKyAgZGVhbGxvY2F0ZSAoeSkK KyAgeSA9IGJhciAoKQorICBjYWxsIGNoZWNrMiAoeSwgc2NhKQorICBkZWFs bG9jYXRlICh5KQorICBhc3NvY2lhdGUgKHZhciA9PiBiYXIgKCkpCisgICAg Y2FsbCBjaGVjazIgKHZhciwgc2NhKQorICBlbmQgYXNzb2NpYXRlCisKKyEg RmluYWxseSB2YXJpYWJsZSBleHByZXNzaW9ucy4uLgorICBhbGxvY2F0ZSAo eSwgc291cmNlID0geCgxKSkgICAgICAgISBHYXZlIHplcm8gbGVuZ3RoIGhl cmUKKyAgY2FsbCBjaGVjazIgKHksICJoZWxsbyIpCisgIHkgPSB4KDIpICAg ICAgICAgICAgICAgICAgICAgICAgICAhIFNlZ2ZhdWx0ZWQgaGVyZQorICBj YWxsIGNoZWNrMiAoeSwgImJ5ZSAgICIpCisgIGFzc29jaWF0ZSAodmFyID0+ IHgoMikpICAgICAgICAgICAhIEdhdmUgemVybyBsZW5ndGggaGVyZQorICAg IGNhbGwgY2hlY2syICh2YXIsICJieWUgICAiKQorICBlbmQgYXNzb2NpYXRl CisKKyEgLi4uYW5kIGNvbnN0YW50IGV4cHJlc3Npb25zICAgICAgICEgQWxs IE9LCisgIGRlYWxsb2NhdGUoeSkKKyAgYWxsb2NhdGUgKHksIHNvdXJjZSA9 ICJhYmNkZSIpCisgIGNhbGwgY2hlY2syICh5LCAiYWJjZGUiKQorICBjb25z dCA9ICJoaWprbG1ub3BxIgorICB5ID0gY29uc3QKKyAgY2FsbCBjaGVjazIg KHksICJoaWprbG1ub3BxIikKKyAgYXNzb2NpYXRlICh2YXIgPT4gIm1ub3Bx IikKKyAgICBjYWxsIGNoZWNrMiAodmFyLCAibW5vcHEiKQorICBlbmQgYXNz b2NpYXRlCisgIGRlYWxsb2NhdGUgKHgsIHkpCisKK2NvbnRhaW5zCisKKyAg ZnVuY3Rpb24gZm9vKCkgcmVzdWx0KHJlcykKKyAgICBjbGFzcygqKSwgYWxs b2NhdGFibGUgOjogcmVzKDopCisgICAgcmVzID0gYXJyCisgIGVuZCBmdW5j dGlvbiBmb28KKworICBmdW5jdGlvbiBiYXIoKSByZXN1bHQocmVzKQorICAg IGNsYXNzKCopLCBhbGxvY2F0YWJsZSA6OiByZXMKKyAgICByZXMgPSBzY2EK KyAgZW5kIGZ1bmN0aW9uIGJhcgorCisgIHN1YnJvdXRpbmUgY2hlY2sxICh4 LCBjYXJnKQorICAgIGNsYXNzKCopLCBpbnRlbnQoaW4pIDo6IHgoOikKKyAg ICBjaGFyYWN0ZXIoKikgOjogY2FyZyg6KQorICAgIHNlbGVjdCB0eXBlICh4 KQorICAgIHR5cGUgaXMgKGNoYXJhY3RlcigqKSkKKyAgICAgIGlmIChhbnkg KHggLm5lLiBjYXJnKSkgc3RvcCAxCisgICAgY2xhc3MgZGVmYXVsdAorICAg ICAgIHN0b3AgMgorICAgIGVuZCBzZWxlY3QKKyAgZW5kIHN1YnJvdXRpbmUg Y2hlY2sxCisKKyAgc3Vicm91dGluZSBjaGVjazIgKHgsIGNhcmcpCisgICAg Y2xhc3MoKiksIGludGVudChpbikgOjogeAorICAgIGNoYXJhY3RlcigqKSA6 OiBjYXJnCisgICAgc2VsZWN0IHR5cGUgKHgpCisgICAgdHlwZSBpcyAoY2hh cmFjdGVyKCopKQorICAgICAgaWYgKHggLm5lLiBjYXJnKSBzdG9wIDMKKyAg ICBjbGFzcyBkZWZhdWx0CisgICAgICAgc3RvcCA0CisgICAgZW5kIHNlbGVj dAorICBlbmQgc3Vicm91dGluZSBjaGVjazIKK2VuZAo= --000000000000f06c410618400d3a--