From mboxrd@z Thu Jan 1 00:00:00 1970 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on inbox.vuxu.org X-Spam-Level: X-Spam-Status: No, score=-3.3 required=5.0 tests=DKIM_SIGNED,DKIM_VALID, MAILING_LIST_MULTI,RCVD_IN_DNSWL_MED autolearn=ham autolearn_force=no version=3.4.4 Received: (qmail 10848 invoked from network); 12 Feb 2023 04:33:22 -0000 Received: from zero.zsh.org (2a02:898:31:0:48:4558:7a:7368) by inbox.vuxu.org with ESMTPUTF8; 12 Feb 2023 04:33:22 -0000 ARC-Seal: i=1; cv=none; a=rsa-sha256; d=zsh.org; s=rsa-20210803; t=1676176402; b=briiy8eBpdADAWyYIKdRbcv3oHjTpo0nB7m1uzL4fENzvNdIWStHzIud6RGB/FGgV6zhSQvOFY IJTg6AFSywhu1o080T/Y4XVuH9e1Pxoqm56G/eei7L5e2a95Fy5MeBBVndensig/+3V0crgZTM 4RWdyuwPIRhbfxCiUVm38hA3w3yZdU2u7DjNCh5ZxiQ+LhH5SKAnyF/Afh0AZE5sKkXjKRoZ4d bbSaRFAy0QEFuflyaS8B+XcpkoeZnhi9lUzrQlrkKki5foNwq/LXFqm6E22GG3xgaXsWfftPmn z36tY5G+xgXl6SPIAuS3MSCems4YSEuoWTsG/4d8Xux9fA==; ARC-Authentication-Results: i=1; zsh.org; iprev=pass (mail-ed1-f41.google.com) smtp.remote-ip=209.85.208.41; dkim=pass header.d=brasslantern-com.20210112.gappssmtp.com header.s=20210112 header.a=rsa-sha256; dmarc=none header.from=brasslantern.com; arc=none ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed; d=zsh.org; s=rsa-20210803; t=1676176402; bh=R9ZIncY03evwJ3SkwQGNHa4yp8+2EehHiZH7HiFbYxA=; h=List-Archive:List-Owner:List-Post:List-Unsubscribe:List-Subscribe:List-Help: List-Id:Sender:Content-Type:To:Subject:Message-ID:Date:From:MIME-Version: DKIM-Signature:DKIM-Signature; b=jAE10dTh3UKofbD0VdM2uxZMa+TGyWjwfgApQcYdQLfAXjHDiNnpRovF/jaOv2OfN4CA2qhW+1 FYqtxmkUt1p5QaLp6PdJD23gBa/fWZnkEOcsx0SoY9HHPNdEOEsMEz9Hil7ziv6g2KJPStfqnT aW4KXDg0sSUUdEVc+RQTtikG+uDErViiw2yBbHnQ+KNv+m1QcmZInS6HD1PKx607HuYyAu0QyF IM/ZOOzVgne2i0JcABZfy5eGY1dR9oTb39DgvxvO/Ehxa61ch//vDupxciUfTaIbQC9E7oFdUd uUWhBB6X9GrD/4Ttom12ys0ItXX4DmDpqpPosf8cFGR3sA==; DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=zsh.org; s=rsa-20210803; h=List-Archive:List-Owner:List-Post:List-Unsubscribe: List-Subscribe:List-Help:List-Id:Sender:Content-Type:To:Subject:Message-ID: Date:From:MIME-Version:Reply-To:Cc:Content-Transfer-Encoding:Content-ID: Content-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc :Resent-Message-ID:In-Reply-To:References; bh=R9ZIncY03evwJ3SkwQGNHa4yp8+2EehHiZH7HiFbYxA=; b=N4xlrtFjogOS8z1zepm1mcpBh3 r0BtQ8uqBassSBrs5fFWNe+pjkBvXjdOAke1ob26louiAWVoqN+GdeRzS4DF/umdPRy/GRzZ2ShUY 3slxx4+QFzCZXWqDQZxDT4YEZXBu3+bLZMe09KvOfw0EBLsjMI8w2gqPp46hEJ3fe6gvU2zo4gi2t MSLntObD4NPfM94v0xn1G7VVJt/ghMTVyAnury8O9ZEJTO3JTbUYqwpby53EAMgBKWIibkochpi85 jMKjFAV5nJpRrNbIyZb42ZWOv38V/CxS91ilQX/bMzBMxCLKezdNOikFeVILR8Ac8TBxA6bDzQvIG ncJ+k7xA==; Received: by zero.zsh.org with local id 1pR43F-000A4Q-2j; Sun, 12 Feb 2023 04:33:21 +0000 Authentication-Results: zsh.org; iprev=pass (mail-ed1-f41.google.com) smtp.remote-ip=209.85.208.41; dkim=pass header.d=brasslantern-com.20210112.gappssmtp.com header.s=20210112 header.a=rsa-sha256; dmarc=none header.from=brasslantern.com; arc=none Received: from mail-ed1-f41.google.com ([209.85.208.41]:40466) by zero.zsh.org with esmtps (TLS1.3:TLS_AES_128_GCM_SHA256:128) id 1pR42w-0009kJ-VY; Sun, 12 Feb 2023 04:33:04 +0000 Received: by mail-ed1-f41.google.com with SMTP id fi26so8895142edb.7 for ; Sat, 11 Feb 2023 20:33:02 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=brasslantern-com.20210112.gappssmtp.com; s=20210112; h=to:subject:message-id:date:from:mime-version:from:to:cc:subject :date:message-id:reply-to; bh=R9ZIncY03evwJ3SkwQGNHa4yp8+2EehHiZH7HiFbYxA=; b=qQObJ4LTEgTy5BNYkcQxOTo0Y4jLwCdellO6vjKqkoJ7YBSNNrH3m7UfMVRmtoFF7x 669Clp6k1Az/jDxNuCjD1xqlySD8Cc9guHETTWp5FT6Ne+jz6pcmpu3E6uDIpRWJZeX2 yBOO1JkH+HIKIqFlqMiEOzxy5yS/eTY3JbK2o3AF7FZvhNhiVsaRbc3TEpmfsr843W3B blHlBuhs5HcZDqOs0r7uuqFv/CFSZlR3j1eOG1lHwryTD8gOdCM8agEK8wTSbDYHmCHy B9INE5Kd7wwxSFVeW+HZSKExdsq4sHBjqgiOz69eS1vRQxwILPnJzFCGGDIMOwUkCFGB 8unA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=to:subject:message-id:date:from:mime-version:x-gm-message-state :from:to:cc:subject:date:message-id:reply-to; bh=R9ZIncY03evwJ3SkwQGNHa4yp8+2EehHiZH7HiFbYxA=; b=AeTy8xYsNjqrb16Li/WQsCZkJfph3qgxJLF0At4UvoGeskVtTLNK/lN6uzoRBUHBxE ZZ1vG/8FD4poonLItMUGEo4ULAJ+kXdI24z3GJxgSTLxKZK+NkDe1IELqqqJFJqPRkMN uLA5O7674OAxMxGGyW4kuFg8a5ZiQ0cUOhNIoJwgsbUVIVFIaaSiDFPyvUcBDk6QHG3F 7Jk9x4bmGdW8CPCzkzhTrA2pW8juMG6vtI8UwPnxdvMzs7Roa9/+0hy+OilmDAaGJUcM GV/csXwN9g640CmZQTNNRABzr6kvXCwMXBz98hQeZj33F3gUn5KpL1Xxdz9t/Ne5CfyG XH2Q== X-Gm-Message-State: AO0yUKVdYac6Cp/NermUYoXUBSr3OQ++068Q+1fOCoV6wkNKgZ+QW46J b9Ct2vXVNuWLus38zLqO2TYFFUBhWAAlow+D6+GzZeyYKz0pQLKY X-Google-Smtp-Source: AK7set/HwF7WuGqTIYODW3etimOVDZXQDF4cIiaF9tii9LI6D1PpIWY1CU8iujHeSvLT1X6TyZsiiD/FQQEIFJO6M50= X-Received: by 2002:a50:d593:0:b0:4ac:c160:3010 with SMTP id v19-20020a50d593000000b004acc1603010mr233259edi.3.1676176382407; Sat, 11 Feb 2023 20:33:02 -0800 (PST) MIME-Version: 1.0 From: Bart Schaefer Date: Sat, 11 Feb 2023 20:32:51 -0800 Message-ID: Subject: [PATCH 6/3] Additional sanity for named references To: Zsh hackers list Content-Type: multipart/mixed; boundary="000000000000dae97505f47939cb" X-Seq: 51402 Archived-At: X-Loop: zsh-workers@zsh.org Errors-To: zsh-workers-owner@zsh.org Precedence: list Precedence: bulk Sender: zsh-workers-request@zsh.org X-no-archive: yes List-Id: List-Help: , List-Subscribe: , List-Unsubscribe: , List-Post: List-Owner: List-Archive: --000000000000dae97505f47939cb Content-Type: text/plain; charset="UTF-8" I wasn't going to continue the N/3 subject scheme but since the preceding five haven't yet been pushed to git origin I couldn't think of a better way to indicate that they have to be applied in sequence. This patch covers the discussion with Oliver Kiddle from the [PATCH 1/3] thread. * Add "unset -n" * Allow and enforce "typeset -n -r" for read-only references * "can't change type via subscript reference" error * Better checking for self-referential declarations/assignments * Ksh-style "foo=bar; typeset -n foo" creates foo=bar reference * Support "typeset -n ref; for ref in ..." * Subscripted references use NO_EXEC for safety * References assigned in called scopes reset scope at end * Allow named references to $! $? $$ $- $0 $_ --000000000000dae97505f47939cb Content-Type: text/plain; charset="US-ASCII"; name="nameref-6-sanity.txt" Content-Disposition: attachment; filename="nameref-6-sanity.txt" Content-Transfer-Encoding: base64 Content-ID: X-Attachment-Id: f_le0vly830 ZGlmZiAtLWdpdCBhL1NyYy9idWlsdGluLmMgYi9TcmMvYnVpbHRpbi5jCmluZGV4IDgwMzliNjQ0 ZS4uY2Y3ZTlkOWZlIDEwMDY0NAotLS0gYS9TcmMvYnVpbHRpbi5jCisrKyBiL1NyYy9idWlsdGlu LmMKQEAgLTEyNiw3ICsxMjYsNyBAQCBzdGF0aWMgc3RydWN0IGJ1aWx0aW4gYnVpbHRpbnNbXSA9 CiAgICAgQlVJTFRJTigidW5hbGlhcyIsIDAsIGJpbl91bmhhc2gsIDAsIC0xLCBCSU5fVU5BTElB UywgImFtcyIsIE5VTEwpLAogICAgIEJVSUxUSU4oInVuZnVuY3Rpb24iLCAwLCBiaW5fdW5oYXNo LCAxLCAtMSwgQklOX1VORlVOQ1RJT04sICJtIiwgImYiKSwKICAgICBCVUlMVElOKCJ1bmhhc2gi LCAwLCBiaW5fdW5oYXNoLCAxLCAtMSwgQklOX1VOSEFTSCwgImFkZm1zIiwgTlVMTCksCi0gICAg QlVJTFRJTigidW5zZXQiLCBCSU5GX1BTUEVDSUFMLCBiaW5fdW5zZXQsIDEsIC0xLCBCSU5fVU5T RVQsICJmbXYiLCBOVUxMKSwKKyAgICBCVUlMVElOKCJ1bnNldCIsIEJJTkZfUFNQRUNJQUwsIGJp bl91bnNldCwgMSwgLTEsIEJJTl9VTlNFVCwgImZtdm4iLCBOVUxMKSwKICAgICBCVUlMVElOKCJ1 bnNldG9wdCIsIDAsIGJpbl9zZXRvcHQsIDAsIC0xLCBCSU5fVU5TRVRPUFQsIE5VTEwsIE5VTEwp LAogICAgIEJVSUxUSU4oIndhaXQiLCAwLCBiaW5fZmcsIDAsIC0xLCBCSU5fV0FJVCwgTlVMTCwg TlVMTCksCiAgICAgQlVJTFRJTigid2hlbmNlIiwgMCwgYmluX3doZW5jZSwgMCwgLTEsIDAsICJh Y21wdmZzU3d4OiIsIE5VTEwpLApAQCAtMjAzNCwxMSArMjAzNCwxNiBAQCB0eXBlc2V0X3Npbmds ZShjaGFyICpjbmFtZSwgY2hhciAqcG5hbWUsIFBhcmFtIHBtLCBpbnQgZnVuYywKIAlpZiAoIShv ZmYgJiBQTV9OQU1FUkVGKSkKIAkgICAgcG0gPSAoUGFyYW0pcmVzb2x2ZV9uYW1lcmVmKHBtLCBO VUxMKTsKIAlpZiAocG0gJiYgKHBtLT5ub2RlLmZsYWdzICYgUE1fTkFNRVJFRikgJiYKLQkgICAg KG9uICYgfihQTV9OQU1FUkVGfFBNX0xPQ0FMKSkpIHsKKwkgICAgKG9uICYgfihQTV9OQU1FUkVG fFBNX0xPQ0FMfFBNX1JFQURPTkxZKSkpIHsKIAkgICAgLyogQ2hhbmdpbmcgdHlwZSBvZiBQTV9T UEVDSUFMfFBNX0FVVE9MT0FEIGlzIGEgZmF0YWwgZXJyb3IuICAqCiAJICAgICAqIFNob3VsZCB0 aGlzIGJlIGEgZmF0YWwgZXJyb3IgYXMgd2VsbCwgcmF0aGVyIHRoYW4gd2FybmluZz8gKi8KLQkg ICAgendhcm5uYW0oY25hbWUsICIlczogY2FuJ3QgY2hhbmdlIHR5cGUgb2YgYSBuYW1lZCByZWZl cmVuY2UiLAotCQkgICAgIHBuYW1lKTsKKwkgICAgaWYgKHBtLT53aWR0aCkKKwkJendhcm5uYW0o Y25hbWUsCisJCQkgIiVzOiBjYW4ndCBjaGFuZ2UgdHlwZSB2aWEgc3Vic2NyaXB0IHJlZmVyZW5j ZSIsCisJCQkgcG0tPnUuc3RyKTsKKwkgICAgZWxzZQorCQl6d2Fybm5hbShjbmFtZSwgIiVzOiBj YW4ndCBjaGFuZ2UgdHlwZSBvZiBhIG5hbWVkIHJlZmVyZW5jZSIsCisJCQkgcG5hbWUpOwogCSAg ICByZXR1cm4gTlVMTDsKIAl9CiAgICAgfQpAQCAtMjIyMyw2ICsyMjI4LDExIEBAIHR5cGVzZXRf c2luZ2xlKGNoYXIgKmNuYW1lLCBjaGFyICpwbmFtZSwgUGFyYW0gcG0sIGludCBmdW5jLAogCSAg ICB6ZXJybmFtKGNuYW1lLCAiJXM6IHJlc3RyaWN0ZWQiLCBwbmFtZSk7CiAJICAgIHJldHVybiBw bTsKIAl9CisJaWYgKChwbS0+bm9kZS5mbGFncyAmIFBNX1JFQURPTkxZKSAmJgorCSAgICAocG0t Pm5vZGUuZmxhZ3MgJiBQTV9OQU1FUkVGICYgb2ZmKSkgeworCSAgICB6ZXJybmFtKGNuYW1lLCAi JXM6IHJlYWQtb25seSByZWZlcmVuY2UiLCBwbmFtZSk7CisJICAgIHJldHVybiBwbTsKKwl9CiAJ aWYgKChvbiAmIFBNX1VOSVFVRSkgJiYgIShwbS0+bm9kZS5mbGFncyAmIFBNX1JFQURPTkxZICYg fm9mZikpIHsKIAkgICAgUGFyYW0gYXBtOwogCSAgICBjaGFyICoqeDsKQEAgLTI2NTksNyArMjY2 OSw3IEBAIGJpbl90eXBlc2V0KGNoYXIgKm5hbWUsIGNoYXIgKiphcmd2LCBMaW5rTGlzdCBhc3Np Z25zLCBPcHRpb25zIG9wcywgaW50IGZ1bmMpCiAJICAgIG9mZiB8PSBiaXQ7CiAgICAgfQogICAg IGlmIChPUFRfTUlOVVMob3BzLCduJykpIHsKLQlpZiAob258b2ZmKSB7CisJaWYgKChvbiAmIH5Q TV9SRUFET05MWSl8b2ZmKSB7CiAJICAgIHp3YXJubmFtKG5hbWUsICJubyBvdGhlciBhdHRyaWJ1 dGVzIGFsbG93ZWQgd2l0aCAtbiIpOwogCSAgICByZXR1cm4gMTsKIAl9CkBAIC0zMDUxLDkgKzMw NjEsOCBAQCBiaW5fdHlwZXNldChjaGFyICpuYW1lLCBjaGFyICoqYXJndiwgTGlua0xpc3QgYXNz aWducywgT3B0aW9ucyBvcHMsIGludCBmdW5jKQogCiAJaWYgKG9uICYgUE1fTkFNRVJFRikgewog CSAgICBpZiAoYXNnLT52YWx1ZS5zY2FsYXIgJiYKLQkJKHN0cmNtcChhc2ctPm5hbWUsIGFzZy0+ dmFsdWUuc2NhbGFyKSA9PSAwIHx8Ci0JCSAoKHBtID0gKFBhcmFtKXJlc29sdmVfbmFtZXJlZigo UGFyYW0paG4sIGFzZykpICYmCi0JCSAgKHBtLT5ub2RlLmZsYWdzICYgUE1fTkFNRVJFRikpKSkg eworCQkoKHBtID0gKFBhcmFtKXJlc29sdmVfbmFtZXJlZigoUGFyYW0paG4sIGFzZykpICYmCisJ CSAocG0tPm5vZGUuZmxhZ3MgJiBQTV9OQU1FUkVGKSkpIHsKIAkJaWYgKHBtLT5ub2RlLmZsYWdz ICYgUE1fU1BFQ0lBTCkKIAkJICAgIHp3YXJubmFtKG5hbWUsICIlczogaW52YWxpZCByZWZlcmVu Y2UiLCBwbS0+bm9kZS5uYW0pOwogCQllbHNlCkBAIC0zMDYzLDggKzMwNzIsMTIgQEAgYmluX3R5 cGVzZXQoY2hhciAqbmFtZSwgY2hhciAqKmFyZ3YsIExpbmtMaXN0IGFzc2lnbnMsIE9wdGlvbnMg b3BzLCBpbnQgZnVuYykKIAkgICAgfQogCSAgICBpZiAoaG4pIHsKIAkJLyogbmFtZXJlZnMgYWx3 YXlzIHN0YXJ0IG92ZXIgZnJlc2ggKi8KLQkJaWYgKCgoUGFyYW0paG4pLT5sZXZlbCA+PSBsb2Nh bGxldmVsKQorCQlpZiAoKChQYXJhbSlobiktPmxldmVsID49IGxvY2FsbGV2ZWwpIHsKKwkJICAg IFBhcmFtIG9sZHBtID0gKFBhcmFtKWhuOworCQkgICAgaWYgKCFhc2ctPnZhbHVlLnNjYWxhciAm JiBvbGRwbS0+dS5zdHIpCisJCQlhc2ctPnZhbHVlLnNjYWxhciA9IGR1cHN0cmluZyhvbGRwbS0+ dS5zdHIpOwogCQkgICAgdW5zZXRwYXJhbV9wbSgoUGFyYW0paG4sIDAsIDEpOworCQl9CiAJCWhu ID0gTlVMTDsKIAkgICAgfQogCX0KQEAgLTM3NjIsNyArMzc3NSwxMSBAQCBiaW5fdW5zZXQoY2hh ciAqbmFtZSwgY2hhciAqKmFyZ3YsIE9wdGlvbnMgb3BzLCBpbnQgZnVuYykKIAkJCWlmICgoIShw bS0+bm9kZS5mbGFncyAmIFBNX1JFU1RSSUNURUQpIHx8CiAJCQkgICAgIHVuc2V0KFJFU1RSSUNU RUQpKSAmJgogCQkJICAgIHBhdHRyeShwcHJvZywgcG0tPm5vZGUubmFtKSkgewotCQkJICAgIHVu c2V0cGFyYW1fcG0ocG0sIDAsIDEpOworCQkJICAgIGlmICghT1BUX0lTU0VUKG9wcywnbicpICYm CisJCQkJKHBtLT5ub2RlLmZsYWdzICYgUE1fTkFNRVJFRikgJiYgcG0tPnUuc3RyKQorCQkJCXVu c2V0cGFyYW0ocG0tPnUuc3RyKTsKKwkJCSAgICBlbHNlCisJCQkJdW5zZXRwYXJhbV9wbShwbSwg MCwgMSk7CiAJCQkgICAgbWF0Y2grKzsKIAkJCX0KIAkJICAgIH0KQEAgLTM4MTQsNiArMzgzMSwx MSBAQCBiaW5fdW5zZXQoY2hhciAqbmFtZSwgY2hhciAqKmFyZ3YsIE9wdGlvbnMgb3BzLCBpbnQg ZnVuYykKIAkgICAgemVycm5hbShuYW1lLCAiJXM6IHJlc3RyaWN0ZWQiLCBwbS0+bm9kZS5uYW0p OwogCSAgICByZXR1cm52YWwgPSAxOwogCX0gZWxzZSBpZiAoc3MpIHsKKwkgICAgaWYgKChwbS0+ bm9kZS5mbGFncyAmIFBNX05BTUVSRUYpICYmCisJCSghKHBtID0gKFBhcmFtKXJlc29sdmVfbmFt ZXJlZihwbSwgTlVMTCkpIHx8IHBtLT53aWR0aCkpIHsKKwkJLyogd2FybmluZz8gKi8KKwkJY29u dGludWU7CisJICAgIH0KIAkgICAgaWYgKFBNX1RZUEUocG0tPm5vZGUuZmxhZ3MpID09IFBNX0hB U0hFRCkgewogCQlIYXNoVGFibGUgdGh0ID0gcGFyYW10YWI7CiAJCWlmICgocGFyYW10YWIgPSBw bS0+Z3N1LmgtPmdldGZuKHBtKSkpCkBAIC0zODUyLDggKzM4NzQsMTEgQEAgYmluX3Vuc2V0KGNo YXIgKm5hbWUsIGNoYXIgKiphcmd2LCBPcHRpb25zIG9wcywgaW50IGZ1bmMpCiAJCXJldHVybnZh bCA9IDE7CiAJICAgIH0KIAl9IGVsc2UgewotCSAgICBpZiAoKHBtID0gKFBhcmFtKXJlc29sdmVf bmFtZXJlZihwbSwgTlVMTCkpICYmCi0JCXVuc2V0cGFyYW1fcG0ocG0sIDAsIDEpKQorCSAgICBp ZiAoIU9QVF9JU1NFVChvcHMsJ24nKSkgeworCQlpZiAoIShwbSA9IChQYXJhbSlyZXNvbHZlX25h bWVyZWYocG0sIE5VTEwpKSkKKwkJICAgIGNvbnRpbnVlOworCSAgICB9CisJICAgIGlmICh1bnNl dHBhcmFtX3BtKHBtLCAwLCAxKSkKIAkJcmV0dXJudmFsID0gMTsKIAl9CiAJaWYgKHNzKQpkaWZm IC0tZ2l0IGEvU3JjL2xvb3AuYyBiL1NyYy9sb29wLmMKaW5kZXggN2RmMzc5ZWNmLi4wZjM4NDc1 NDEgMTAwNjQ0Ci0tLSBhL1NyYy9sb29wLmMKKysrIGIvU3JjL2xvb3AuYwpAQCAtNTMsNyArNTMs NyBAQCBleGVjZm9yKEVzdGF0ZSBzdGF0ZSwgaW50IGRvX2V4ZWMpCiAgICAgd29yZGNvZGUgY29k ZSA9IHN0YXRlLT5wY1stMV07CiAgICAgaW50IGlzY29uZCA9IChXQ19GT1JfVFlQRShjb2RlKSA9 PSBXQ19GT1JfQ09ORCksIGN0b2sgPSAwLCBhdG9rID0gMDsKICAgICBpbnQgbGFzdCA9IDA7Ci0g ICAgY2hhciAqbmFtZSwgKnN0ciwgKmNvbmQgPSBOVUxMLCAqYWR2YW5jZSA9IE5VTEw7CisgICAg Y2hhciAqc3RyLCAqY29uZCA9IE5VTEwsICphZHZhbmNlID0gTlVMTDsKICAgICB6bG9uZyB2YWwg PSAwOwogICAgIExpbmtMaXN0IHZhcnMgPSBOVUxMLCBhcmdzID0gTlVMTDsKICAgICBpbnQgb2xk X3NpbXBsZV9wbGluZSA9IHNpbXBsZV9wbGluZTsKQEAgLTE1MSw3ICsxNTEsNyBAQCBleGVjZm9y KEVzdGF0ZSBzdGF0ZSwgaW50IGRvX2V4ZWMpCiAJICAgIGludCBjb3VudCA9IDA7CiAJICAgIGZv ciAobm9kZSA9IGZpcnN0bm9kZSh2YXJzKTsgbm9kZTsgaW5jbm9kZShub2RlKSkKIAkgICAgewot CQluYW1lID0gKGNoYXIgKilnZXRkYXRhKG5vZGUpOworCQljaGFyICpuYW1lID0gKGNoYXIgKiln ZXRkYXRhKG5vZGUpOwogCQlpZiAoIWFyZ3MgfHwgIShzdHIgPSAoY2hhciAqKSB1Z2V0bm9kZShh cmdzKSkpCiAJCXsKIAkJICAgIGlmIChjb3VudCkgeyAKQEAgLTE2NSw3ICsxNjUsNyBAQCBleGVj Zm9yKEVzdGF0ZSBzdGF0ZSwgaW50IGRvX2V4ZWMpCiAJCSAgICBmcHJpbnRmKHh0cmVyciwgIiVz PSVzXG4iLCBuYW1lLCBzdHIpOwogCQkgICAgZmZsdXNoKHh0cmVycik7CiAJCX0KLQkJc2V0c3Bh cmFtKG5hbWUsIHp0cmR1cChzdHIpKTsKKwkJc2V0bG9vcHZhcihuYW1lLCB6dHJkdXAoc3RyKSk7 CiAJCWNvdW50Kys7CiAJICAgIH0KIAkgICAgaWYgKCFjb3VudCkKZGlmZiAtLWdpdCBhL1NyYy9w YXJhbXMuYyBiL1NyYy9wYXJhbXMuYwppbmRleCA5ODk1MGQ4OGYuLjQ5MTBkNjVmZSAxMDA2NDQK LS0tIGEvU3JjL3BhcmFtcy5jCisrKyBiL1NyYy9wYXJhbXMuYwpAQCAtOTk3LDcgKzk5Nyw3IEBA IGNyZWF0ZXBhcmFtKGNoYXIgKm5hbWUsIGludCBmbGFncykKIAkJCSBwYXJhbXRhYi0+Z2V0bm9k ZShwYXJhbXRhYiwgbmFtZSkpOwogCiAJaWYgKG9sZHBtICYmIChvbGRwbS0+bm9kZS5mbGFncyAm IFBNX05BTUVSRUYpICYmCi0JICAgICEoZmxhZ3MgJiBQTV9OQU1FUkVGKSkgeworCSAgICAhKGZs YWdzICYgUE1fTkFNRVJFRikgJiYgKG9sZHBtID0gdXBzY29wZShvbGRwbSwgb2xkcG0tPmJhc2Up KSkgewogCSAgICBQYXJhbSBsYXN0cG07CiAJICAgIHN0cnVjdCBhc2dtZW50IHN0b3A7CiAJICAg IHN0b3AuZmxhZ3MgPSBQTV9OQU1FUkVGIHwgKGZsYWdzICYgUE1fTE9DQUwpOwpAQCAtMTQ2Nywx MCArMTQ2NywxNCBAQCBnZXRhcmcoY2hhciAqKnN0ciwgaW50ICppbnYsIFZhbHVlIHYsIGludCBh MiwgemxvbmcgKncsCiAgICAgaWYgKGlzaGFzaCAmJiAoa2V5bWF0Y2ggfHwgIXJldikpCiAJcmVt bnVsYXJncyhzKTsKICAgICBpZiAobmVlZHRvaykgeworCWNoYXIgZXhlID0gb3B0c1tFWEVDT1BU XTsKIAlzID0gZHVwc3RyaW5nKHMpOwogCWlmIChwYXJzZXN0cigmcykpCiAJICAgIHJldHVybiAw OworCWlmIChmbGFncyAmIFNDQU5QTV9OT0VYRUMpCisJICAgIG9wdHNbRVhFQ09QVF0gPSAwOwog CXNpbmdzdWIoJnMpOworCW9wdHNbRVhFQ09QVF0gPSBleGU7CiAgICAgfSBlbHNlIGlmIChyZXYp CiAJcmVtbnVsYXJncyhzKTsJLyogVGhpcyBpcyBwcm9iYWJseSBhbHdheXMgYSBuby1vcCwgYnV0 IC4uLiAqLwogICAgIGlmICghcmV2KSB7CkBAIC0yMTUzLDkgKzIxNTcsMTIgQEAgZmV0Y2h2YWx1 ZShWYWx1ZSB2LCBjaGFyICoqcHB0ciwgaW50IGJyYWNrcywgaW50IGZsYWdzKQogCQkoKHBtLT5u b2RlLmZsYWdzICYgUE1fVU5TRVQpICYmCiAJCSEocG0tPm5vZGUuZmxhZ3MgJiBQTV9ERUNMQVJF RCkpKQogCQlyZXR1cm4gTlVMTDsKLQkgICAgaWYgKHNzKQorCSAgICBpZiAoc3MpIHsKKwkJZmxh Z3MgfD0gU0NBTlBNX05PRVhFQzsKIAkJKnNzID0gc2F2OwotCSAgICBzID0gZHluY2F0KHNzLCpw cHRyKTsKKwkJcyA9IGR5bmNhdChzcywqcHB0cik7CisJICAgIH0gZWxzZQorCQlzID0gKnBwdHI7 CiAJfQogCWlmIChQTV9UWVBFKHBtLT5ub2RlLmZsYWdzKSAmIChQTV9BUlJBWXxQTV9IQVNIRUQp KSB7CiAJICAgIC8qIE92ZXJsb2FkIHYtPmlzYXJyIGFzIHRoZSBmbGFnIGJpdHMgZm9yIGhhc2hl ZCBhcnJheXMuICovCkBAIC01NzgyLDcgKzU3ODksOCBAQCBzY2FuZW5kc2NvcGUoSGFzaE5vZGUg aG4sIFVOVVNFRChpbnQgZmxhZ3MpKQogCQlleHBvcnRfcGFyYW0ocG0pOwogCX0gZWxzZQogCSAg ICB1bnNldHBhcmFtX3BtKHBtLCAwLCAwKTsKLSAgICB9CisgICAgfSBlbHNlIGlmICgocG0tPm5v ZGUuZmxhZ3MgJiBQTV9OQU1FUkVGKSAmJiBwbS0+YmFzZSA+IHBtLT5sZXZlbCkKKwlwbS0+YmFz ZSA9IGxvY2FsbGV2ZWw7CiB9CiAKIApAQCAtNjEwOSwxMCArNjExNywxMCBAQCByZXNvbHZlX25h bWVyZWYoUGFyYW0gcG0sIGNvbnN0IEFzZ21lbnQgc3RvcCkKIAlpZiAocG0gJiYgKHBtLT5ub2Rl LmZsYWdzICYgKFBNX1VOU0VUfFBNX1RBR0dFRCkpKSB7CiAJICAgIC8qIFNlbWFwaG9yZSB3aXRo IGNyZWF0ZXBhcmFtKCkgKi8KIAkgICAgcG0tPm5vZGUuZmxhZ3MgJj0gflBNX1VOU0VUOwotCSAg ICAvKiBTZWUgVjEwcHJpdmF0ZS56dHN0IGVuZCBpcyBpbiBzY29wZSBidXQgcHJpdmF0ZToKLQkg ICAgaWYgKHBtLT5ub2RlLmZsYWdzICYgUE1fU1BFQ0lBTCkKKwkgICAgaWYgKHBtLT5ub2RlLmZs YWdzICYgUE1fTkVXUkVGKQkvKiBTZWUgc2V0bG9vcHZhcigpICovCiAJCXJldHVybiBOVUxMOwot CSAgICAqLworCSAgICBpZiAocG0tPnUuc3RyICYmICoocG0tPnUuc3RyKSAmJiAocG0tPm5vZGUu ZmxhZ3MgJiBQTV9UQUdHRUQpKQorCQlwbS0+bm9kZS5mbGFncyB8PSBQTV9TRUxGUkVGOwkvKiBT ZWUgc2V0c2NvcGUoKSAqLwogCSAgICByZXR1cm4gKEhhc2hOb2RlKSBwbTsKIAl9IGVsc2UgaWYg KHBtLT51LnN0cikgewogCSAgICBpZiAoKHBtLT5ub2RlLmZsYWdzICYgUE1fVEFHR0VEKSB8fApA QCAtNjE1NywxMyArNjE2NSwyOSBAQCByZXNvbHZlX25hbWVyZWYoUGFyYW0gcG0sIGNvbnN0IEFz Z21lbnQgc3RvcCkKIAkgICAgaWYgKHBtKQogCQlwbS0+bm9kZS5mbGFncyAmPSB+UE1fVEFHR0VE OwogCX0gZWxzZSBpZiAoc3RvcCAmJiAoc3RvcC0+ZmxhZ3MgJiBQTV9OQU1FUkVGKSkKLQkgICAg aG4gPSAoSGFzaE5vZGUpcG07CisJICAgIGhuID0gKHBtICYmIChwbS0+bm9kZS5mbGFncyAmIFBN X05FV1JFRikpID8gTlVMTCA6IChIYXNoTm9kZSlwbTsKIAl1bnF1ZXVlX3NpZ25hbHMoKTsKICAg ICB9CiAKICAgICByZXR1cm4gaG47CiB9CiAKKy8qKi8KK21vZF9leHBvcnQgdm9pZAorc2V0bG9v cHZhcihjaGFyICpuYW1lLCBjaGFyICp2YWx1ZSkKK3sKKyAgUGFyYW0gcG0gPSAoUGFyYW0pIGdl dGhhc2hub2RlMihyZWFscGFyYW10YWIsIG5hbWUpOworCisgIGlmIChwbSAmJiAocG0tPm5vZGUu ZmxhZ3MgJiBQTV9OQU1FUkVGKSkgeworICAgICAgcG0tPmJhc2UgPSBwbS0+d2lkdGggPSAwOwor ICAgICAgcG0tPnUuc3RyID0genRyZHVwKHZhbHVlKTsKKyAgICAgIHBtLT5ub2RlLmZsYWdzIHw9 IFBNX05FV1JFRjsKKyAgICAgIHNldHNjb3BlKHBtKTsKKyAgICAgIHBtLT5ub2RlLmZsYWdzICY9 IH5QTV9ORVdSRUY7CisgIH0gZWxzZQorICAgICAgc2V0c3BhcmFtKG5hbWUsIHZhbHVlKTsKK30K KwogLyoqLwogc3RhdGljIHZvaWQKIHNldHNjb3BlKFBhcmFtIHBtKQpAQCAtNjE4OCw5ICs2MjEy LDUwIEBAIHNldHNjb3BlKFBhcmFtIHBtKQogCSAgICBwbS0+d2lkdGggPSB0IC0gcG0tPnUuc3Ry OwogCSAgICAqdCA9ICdbJzsKIAl9Ci0JaWYgKGJhc2VwbSkKLQkgICAgcG0tPmJhc2UgPSAoKGJh c2VwbS0+bm9kZS5mbGFncyAmIFBNX05BTUVSRUYpID8KLQkJCWJhc2VwbS0+YmFzZSA6IGJhc2Vw bS0+bGV2ZWwpOworCWlmIChiYXNlcG0pIHsKKwkgICAgaWYgKGJhc2VwbS0+bm9kZS5mbGFncyAm IFBNX05BTUVSRUYpIHsKKwkJaWYgKHBtID09IGJhc2VwbSkgeworCQkgICAgaWYgKHBtLT5ub2Rl LmZsYWdzICYgUE1fU0VMRlJFRikgeworCQkJLyogTG9vcCBzaWduYWxsZWQgYnkgcmVzb2x2ZV9u YW1lcmVmKCkgKi8KKwkJCWlmICh1cHNjb3BlKHBtLCBwbS0+YmFzZSkgPT0gcG0pIHsKKwkJCSAg ICB6ZXJyKCIlczogaW52YWxpZCBzZWxmIHJlZmVyZW5jZSIsIHBtLT51LnN0cik7CisJCQkgICAg dW5zZXRwYXJhbV9wbShwbSwgMCwgMSk7CisJCQkgICAgcmV0dXJuOworCQkJfQorCQkJcG0tPm5v ZGUuZmxhZ3MgJj0gflBNX1NFTEZSRUY7CisJCSAgICB9IGVsc2UgaWYgKHBtLT5iYXNlID09IHBt LT5sZXZlbCkgeworCQkJaWYgKHBtLT51LnN0ciAmJiAqKHBtLT51LnN0cikgJiYKKwkJCSAgICBz dHJjbXAocG0tPm5vZGUubmFtLCBwbS0+dS5zdHIpID09IDApIHsKKwkJCSAgICB6ZXJyKCIlczog aW52YWxpZCBzZWxmIHJlZmVyZW5jZSIsIHBtLT51LnN0cik7CisJCQkgICAgdW5zZXRwYXJhbV9w bShwbSwgMCwgMSk7CisJCQkgICAgcmV0dXJuOworCQkJfQorCQkgICAgfQorCQl9IGVsc2UgaWYg KGJhc2VwbS0+dS5zdHIpIHsKKwkJICAgIGlmIChiYXNlcG0tPmJhc2UgPD0gYmFzZXBtLT5sZXZl bCAmJgorCQkJc3RyY21wKHBtLT5ub2RlLm5hbSwgYmFzZXBtLT51LnN0cikgPT0gMCkgeworCQkJ emVycigiJXM6IGludmFsaWQgc2VsZiByZWZlcmVuY2UiLCBwbS0+dS5zdHIpOworCQkJdW5zZXRw YXJhbV9wbShwbSwgMCwgMSk7CisJCQlyZXR1cm47CisJCSAgICB9CisJCX0KKwkgICAgfSBlbHNl CisJCXBtLT5iYXNlID0gYmFzZXBtLT5sZXZlbDsKKwl9CisJaWYgKHBtLT5iYXNlID4gcG0tPmxl dmVsKSB7CisJICAgIGlmIChFTVVMQVRJT04oRU1VTEFURV9LU0gpKSB7CisJCXplcnIoIiVzOiBn bG9iYWwgcmVmZXJlbmNlIGNhbm5vdCByZWZlciB0byBsb2NhbCB2YXJpYWJsZSIsCisJCSAgICAg IHBtLT5ub2RlLm5hbSk7CisJCXVuc2V0cGFyYW1fcG0ocG0sIDAsIDEpOworCSAgICB9IGVsc2Ug aWYgKGlzc2V0KFdBUk5ORVNURURWQVIpKQorCQl6d2FybigiJXM6IGdsb2JhbCByZWZlcmVuY2Ug dG8gbG9jYWwgdmFyaWFibGU6ICVzIiwKKwkJICAgICAgcG0tPm5vZGUubmFtLCBwbS0+dS5zdHIp OworCX0KKwlpZiAocG0tPnUuc3RyICYmIHVwc2NvcGUocG0sIHBtLT5iYXNlKSA9PSBwbSAmJgor CSAgICBzdHJjbXAocG0tPm5vZGUubmFtLCBwbS0+dS5zdHIpID09IDApIHsKKwkgICAgemVycigi JXM6IGludmFsaWQgc2VsZiByZWZlcmVuY2UiLCBwbS0+dS5zdHIpOworCSAgICB1bnNldHBhcmFt X3BtKHBtLCAwLCAxKTsKKwl9CiAgICAgfQogfQogCkBAIC02MjE3LDcgKzYyODIsMTAgQEAgdmFs aWRfcmVmbmFtZShjaGFyICp2YWwpCiAJaWYgKCp0ID09ICdbJykgewogCSAgICB0b2tlbml6ZSh0 ID0gZHVwc3RyaW5nKHQrMSkpOwogCSAgICB0ID0gcGFyc2Vfc3Vic2NyaXB0KHQsIDAsICddJyk7 Ci0JfSBlbHNlIHsKKwl9IGVsc2UgaWYgKHRbMV0gfHwgISgqdCA9PSAnIScgfHwgKnQgPT0gJz8n IHx8CisJCQkgICAgICp0ID09ICckJyB8fCAqdCA9PSAnLScgfHwKKwkJCSAgICAgKnQgPT0gJzAn IHx8ICp0ID09ICdfJykpIHsKKwkgICAgLyogU2tpcHBpbmcgKiBAICMgYmVjYXVzZSBvZiBkb3No ZnVuYygpIGltcGxlbWVudGF0aW9uICovCiAJICAgIHQgPSBOVUxMOwogCX0KICAgICB9CmRpZmYg LS1naXQgYS9TcmMvenNoLmggYi9TcmMvenNoLmgKaW5kZXggMWUzNWJkMzNlLi45NmI0YjA2YmQg MTAwNjQ0Ci0tLSBhL1NyYy96c2guaAorKysgYi9TcmMvenNoLmgKQEAgLTE5MzUsNiArMTkzNSw5 IEBAIHN0cnVjdCB0aWVkZGF0YSB7CiAjZGVmaW5lIFBNX05BTUVERElSICAgICAoMTw8MjkpIC8q IGhhcyBhIGNvcnJlc3BvbmRpbmcgbmFtZWRkaXJ0YWIgZW50cnkgICAgKi8KICNkZWZpbmUgUE1f TkFNRVJFRiAgICAgICgxPDwzMCkgLyogcG9pbnRlciB0byBhIGRpZmZlcmVudCBwYXJhbWV0ZXIg ICAgICAgICAqLwogCisjZGVmaW5lIFBNX1NFTEZSRUYJUE1fVU5JUVVFCS8qIE92ZXJsb2FkIHdo ZW4gbmFtZXJlZnMgcmVzb2x2ZWQgICovCisjZGVmaW5lIFBNX05FV1JFRglQTV9TSU5HTEUJLyog T3ZlcmxvYWQgaW4gZm9yLWxvb3AgbmFtZXJlZnMgICAgKi8KKwogLyogVGhlIG9wdGlvbiBzdHJp bmcgY29ycmVzcG9uZHMgdG8gdGhlIGZpcnN0IG9mIHRoZSB2YXJpYWJsZXMgYWJvdmUgKi8KICNk ZWZpbmUgVFlQRVNFVF9PUFRTVFIgImFpRUZBTFJabHVydHhVaEhUIgogCkBAIC0xOTU5LDYgKzE5 NjIsNyBAQCBzdHJ1Y3QgdGllZGRhdGEgewogCQkJCSAgKiBlbGVtZW50cwogCQkJCSAgKi8KICNk ZWZpbmUgU0NBTlBNX0NIRUNLSU5HICAgKDE8PDEwKSAvKiBDaGVjayBpZiBzZXQsIG5vIG5lZWQg dG8gY3JlYXRlICovCisjZGVmaW5lIFNDQU5QTV9OT0VYRUMgICAgICgxPDwxMSkgLyogTm8gY29t bWFuZCBzdWJzdGl0dXRpb25zLCBldGMuICovCiAvKiAiJGZvb1tAXSItc3R5bGUgc3Vic3RpdHV0 aW9uCiAgKiBPbmx5IHNpZ24gYml0IGlzIHNpZ25pZmljYW50CiAgKi8K --000000000000dae97505f47939cb--