From debbugs-submit-bounces@debbugs.gnu.org Fri Oct 03 11:12:50 2014 Received: (at submit) by debbugs.gnu.org; 3 Oct 2014 15:12:50 +0000 Received: from localhost ([127.0.0.1]:60453 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1Xa4XI-0008AP-ST for submit@debbugs.gnu.org; Fri, 03 Oct 2014 11:12:49 -0400 Received: from eggs.gnu.org ([208.118.235.92]:43895) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1Xa499-0006jO-UJ for submit@debbugs.gnu.org; Fri, 03 Oct 2014 10:47:53 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Xa490-0008Qs-CC for submit@debbugs.gnu.org; Fri, 03 Oct 2014 10:47:51 -0400 X-Spam-Checker-Version: SpamAssassin 3.3.2 (2011-06-06) on eggs.gnu.org X-Spam-Level: X-Spam-Status: No, score=-0.5 required=5.0 tests=BAYES_05,FREEMAIL_FROM, T_DKIM_INVALID autolearn=disabled version=3.3.2 Received: from lists.gnu.org ([2001:4830:134:3::11]:39259) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Xa490-0008Qo-8p for submit@debbugs.gnu.org; Fri, 03 Oct 2014 10:47:42 -0400 Received: from eggs.gnu.org ([2001:4830:134:3::10]:45579) by lists.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Xa48r-00085k-41 for bug-coreutils@gnu.org; Fri, 03 Oct 2014 10:47:42 -0400 Received: from Debian-exim by eggs.gnu.org with spam-scanned (Exim 4.71) (envelope-from ) id 1Xa48i-0008Iy-2d for bug-coreutils@gnu.org; Fri, 03 Oct 2014 10:47:33 -0400 Received: from mail-wg0-x230.google.com ([2a00:1450:400c:c00::230]:37511) by eggs.gnu.org with esmtp (Exim 4.71) (envelope-from ) id 1Xa48h-0008IZ-Rh for bug-coreutils@gnu.org; Fri, 03 Oct 2014 10:47:24 -0400 Received: by mail-wg0-f48.google.com with SMTP id k14so382868wgh.31 for ; Fri, 03 Oct 2014 07:47:21 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=message-id:date:from:user-agent:mime-version:to:subject :content-type:content-transfer-encoding; bh=MSLan7UtfMlWMGQ15OSBZuymVSBp0W0eFTRs92U4nUQ=; b=FFtQAq7A1LC8t5n2jiy9WHPb5YFwxsMFNeH1+PWP+m5ih6BqbqTi7EcbrVLqCscRQ7 157xtKPTTZPvEP9/qrQpX5+PqEGjfJxWJD9Jmb1/7NxkJstlK0uQ5YHihHo65hhI4H+R hFJIDtE8ReDih4hxhRRNwNP0GARzTauzuaPAr5uu2rS9L0Kh+EctJoE3wX9Z8l/P5i/n Rkjk1YF2Oopz9eM4tErZuZvIkaAhOJw7hfyKRDptYwrIqWf9/78q1Zxyj85MbAUaKs1m v9eVXSHzhBcNf7b37qQDZqMC7/AZToJLj7BKlPjrdUobtqsHxX+fvAwYl8XqfJYTInGl zDeQ== X-Received: by 10.180.96.161 with SMTP id dt1mr13149275wib.1.1412347641498; Fri, 03 Oct 2014 07:47:21 -0700 (PDT) Received: from [192.168.0.68] (static-nbl2-118.cytanet.com.cy. [212.31.107.118]) by mx.google.com with ESMTPSA id xm4sm2321167wib.9.2014.10.03.07.47.20 for (version=TLSv1.2 cipher=ECDHE-RSA-AES128-GCM-SHA256 bits=128/128); Fri, 03 Oct 2014 07:47:20 -0700 (PDT) Message-ID: <542EB6F7.3040207@gmail.com> Date: Fri, 03 Oct 2014 17:47:19 +0300 From: George Shuklin User-Agent: Mozilla/5.0 (X11; Linux i686; rv:31.0) Gecko/20100101 Thunderbird/31.1.2 MIME-Version: 1.0 To: bug-coreutils@gnu.org Subject: [BUG] wc -c incorrectly counts bytes in /sys Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit X-detected-operating-system: by eggs.gnu.org: Error: Malformed IPv6 address (bad octet value). X-detected-operating-system: by eggs.gnu.org: Error: Malformed IPv6 address (bad octet value). X-Received-From: 2001:4830:134:3::11 X-Spam-Score: -4.0 (----) X-Debbugs-Envelope-To: submit X-Mailman-Approved-At: Fri, 03 Oct 2014 11:12:47 -0400 X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -4.0 (----) There is many sysfs (linux) attributes which reported as '4k files' but contains just a few bytes. wc file and wc -c shows different sizes. Example: $cat /sys/kernel/vmcoreinfo 1b74c00 1024 $hexdump -Cv /sys/kernel/vmcoreinfo 00000000 31 62 37 34 63 30 30 20 31 30 32 34 0a |1b74c00 1024.| 0000000d $ls -la /sys/kernel/vmcoreinfo -r--r--r-- 1 root root 4096 Oct 3 17:40 /sys/kernel/vmcoreinfo Here wc output: $ wc /sys/kernel/vmcoreinfo 1 2 13 /sys/kernel/vmcoreinfo and wc -c: $ wc -c /sys/kernel/vmcoreinfo 4096 /sys/kernel/vmcoreinfo 4096 is not 13, and manual page for wc says that third number is byte count. I think problem is in cnt(const char *file) function: if (dochar || domulti) { if (fstat(fd, &sb)) { warn("%s: fstat", file); (void)close(fd); return (1); } if (S_ISREG(sb.st_mode)) { (void)printf(" %7lld", (long long)sb.st_size); tcharct += sb.st_size; (void)close(fd); return (0); } } From debbugs-submit-bounces@debbugs.gnu.org Fri Oct 03 12:48:29 2014 Received: (at 18621) by debbugs.gnu.org; 3 Oct 2014 16:48:29 +0000 Received: from localhost ([127.0.0.1]:60497 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1Xa61s-0007uv-3C for submit@debbugs.gnu.org; Fri, 03 Oct 2014 12:48:28 -0400 Received: from mx1.redhat.com ([209.132.183.28]:46764) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1Xa61p-0007ua-91 for 18621@debbugs.gnu.org; Fri, 03 Oct 2014 12:48:26 -0400 Received: from int-mx09.intmail.prod.int.phx2.redhat.com (int-mx09.intmail.prod.int.phx2.redhat.com [10.5.11.22]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id s93GmNeS016131 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=FAIL); Fri, 3 Oct 2014 12:48:24 -0400 Received: from [10.36.116.35] (ovpn-116-35.ams2.redhat.com [10.36.116.35]) by int-mx09.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id s93GmLGn001391 (version=TLSv1/SSLv3 cipher=DHE-RSA-CAMELLIA256-SHA bits=256 verify=NO); Fri, 3 Oct 2014 12:48:22 -0400 Message-ID: <542ED354.6040008@draigBrady.com> Date: Fri, 03 Oct 2014 17:48:20 +0100 From: =?UTF-8?B?UMOhZHJhaWcgQnJhZHk=?= User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:17.0) Gecko/20130110 Thunderbird/17.0.2 MIME-Version: 1.0 To: George Shuklin Subject: Re: bug#18621: [BUG] wc -c incorrectly counts bytes in /sys References: <542EB6F7.3040207@gmail.com> In-Reply-To: <542EB6F7.3040207@gmail.com> X-Enigmail-Version: 1.6 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Scanned-By: MIMEDefang 2.68 on 10.5.11.22 X-Spam-Score: -5.0 (-----) X-Debbugs-Envelope-To: 18621 Cc: 18621@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -5.0 (-----) On 10/03/2014 03:47 PM, George Shuklin wrote: > There is many sysfs (linux) attributes which reported as '4k files' but contains just a few bytes. > > wc file and wc -c shows different sizes. > > Example: > > $cat /sys/kernel/vmcoreinfo > 1b74c00 1024 > > $hexdump -Cv /sys/kernel/vmcoreinfo > 00000000 31 62 37 34 63 30 30 20 31 30 32 34 0a |1b74c00 1024.| > 0000000d > > $ls -la /sys/kernel/vmcoreinfo > -r--r--r-- 1 root root 4096 Oct 3 17:40 /sys/kernel/vmcoreinfo > > > Here wc output: > > $ wc /sys/kernel/vmcoreinfo > 1 2 13 /sys/kernel/vmcoreinfo > > and wc -c: > > $ wc -c /sys/kernel/vmcoreinfo > 4096 /sys/kernel/vmcoreinfo > > 4096 is not 13, and manual page for wc says that third number is byte count. > > I think problem is in cnt(const char *file) function: > > if (dochar || domulti) { > if (fstat(fd, &sb)) { > warn("%s: fstat", file); > (void)close(fd); > return (1); > } > if (S_ISREG(sb.st_mode)) { > (void)printf(" %7lld", (long long)sb.st_size); > tcharct += sb.st_size; > (void)close(fd); > return (0); > } > } I'm not sure where the above code comes from, by coreutils trunk has the same behavior with these files. We could avoid it with the following patch. Note in the case where "real" small files don't take up space in the file system, this will involve a redundant read, however that will only be the case for small files so shouldn't be problematic. thanks, Pádraig. diff --git a/src/wc.c b/src/wc.c index 1ff007d..bf1ce76 100644 --- a/src/wc.c +++ b/src/wc.c @@ -235,6 +235,7 @@ wc (int fd, char const *file_x, struct fstatus *fstatus) fstatus->failed = fstat (fd, &fstatus->st); if (! fstatus->failed && S_ISREG (fstatus->st.st_mode) + && fstatus->st.st_blocks && (current_pos = lseek (fd, 0, SEEK_CUR)) != -1 && (end_pos = lseek (fd, 0, SEEK_END)) != -1) { From debbugs-submit-bounces@debbugs.gnu.org Fri Oct 03 14:26:58 2014 Received: (at 18621) by debbugs.gnu.org; 3 Oct 2014 18:26:58 +0000 Received: from localhost ([127.0.0.1]:60520 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1Xa7ZB-0005rm-Il for submit@debbugs.gnu.org; Fri, 03 Oct 2014 14:26:57 -0400 Received: from mail-wg0-f47.google.com ([74.125.82.47]:45945) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1Xa7Z8-0005rd-Ra for 18621@debbugs.gnu.org; Fri, 03 Oct 2014 14:26:55 -0400 Received: by mail-wg0-f47.google.com with SMTP id x13so2166641wgg.18 for <18621@debbugs.gnu.org>; Fri, 03 Oct 2014 11:26:54 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:sender:in-reply-to:references:from:date:message-id :subject:to:cc:content-type:content-transfer-encoding; bh=roRGsQHhkxrQo5rifFObJMaiZJPSeKXIKwEV/755S8k=; b=rqVsuN56o5DV5qCC9yeRqDL0sUIc3mheD63JNDC+8WFECgzhYEu+O86Hik9K2eBwqd Q8eHIO42E9Ubp9D7wJXQeEIcTdPEF59ZNxFBUnU9tbjZcM/a3IQ+lp8ZJWzO3ha6l2vP +y9TcbhLCU2AHcx1stjGADCEi7EjYlGqA/ntVw2lqcwmiqBQNeskMpAUTS+SKzP71CTD 9KUWnUEGP1Z+n6arMpNn5ytFVdtGYqnUPRqxVPFL3ojo8UzzWceVPevLsht/RVMI+LNl 6qvJ+dWGhnYecwweMRUNsecp8yQmtQ7o9lur2AhBpTVOkuMo4zjhxEHIp9WS/hIZs0k3 sEyg== X-Received: by 10.194.78.136 with SMTP id b8mr9447767wjx.106.1412360814119; Fri, 03 Oct 2014 11:26:54 -0700 (PDT) MIME-Version: 1.0 Received: by 10.194.86.131 with HTTP; Fri, 3 Oct 2014 11:26:34 -0700 (PDT) In-Reply-To: <542ED354.6040008@draigBrady.com> References: <542EB6F7.3040207@gmail.com> <542ED354.6040008@draigBrady.com> From: Jim Meyering Date: Fri, 3 Oct 2014 11:26:34 -0700 X-Google-Sender-Auth: v7Mf1fg5a8Lm44L_riKFGUmsXaY Message-ID: Subject: Re: bug#18621: [BUG] wc -c incorrectly counts bytes in /sys To: =?ISO-8859-1?Q?P=E1draig_Brady?= Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 18621 Cc: 18621@debbugs.gnu.org, George Shuklin X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -0.7 (/) On Fri, Oct 3, 2014 at 9:48 AM, P=E1draig Brady wrote: > On 10/03/2014 03:47 PM, George Shuklin wrote: ... > I'm not sure where the above code comes from, > by coreutils trunk has the same behavior with these files. > We could avoid it with the following patch. > Note in the case where "real" small files don't > take up space in the file system, this will involve a redundant read, > however that will only be the case for small files so shouldn't > be problematic. > > thanks, > P=E1draig. > > diff --git a/src/wc.c b/src/wc.c > index 1ff007d..bf1ce76 100644 > --- a/src/wc.c > +++ b/src/wc.c > @@ -235,6 +235,7 @@ wc (int fd, char const *file_x, struct fstatus *fstat= us) > fstatus->failed =3D fstat (fd, &fstatus->st); > > if (! fstatus->failed && S_ISREG (fstatus->st.st_mode) > + && fstatus->st.st_blocks > && (current_pos =3D lseek (fd, 0, SEEK_CUR)) !=3D -1 > && (end_pos =3D lseek (fd, 0, SEEK_END)) !=3D -1) > { That looks like a fine fix. However, a similar issue affects tac, when its lseek-SEEK_END fails: $ tac /sys/kernel/vmcoreinfo tac: /sys/kernel/vmcoreinfo: read error: Inappropriate ioctl for device From debbugs-submit-bounces@debbugs.gnu.org Fri Oct 03 14:48:03 2014 Received: (at 18621) by debbugs.gnu.org; 3 Oct 2014 18:48:03 +0000 Received: from localhost ([127.0.0.1]:60539 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1Xa7ta-0006Sk-QC for submit@debbugs.gnu.org; Fri, 03 Oct 2014 14:48:03 -0400 Received: from smtp.cs.ucla.edu ([131.179.128.62]:53908) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1Xa7tX-0006SJ-Sc for 18621@debbugs.gnu.org; Fri, 03 Oct 2014 14:48:00 -0400 Received: from localhost (localhost.localdomain [127.0.0.1]) by smtp.cs.ucla.edu (Postfix) with ESMTP id 6745D39E8017; Fri, 3 Oct 2014 11:47:58 -0700 (PDT) X-Virus-Scanned: amavisd-new at smtp.cs.ucla.edu Received: from smtp.cs.ucla.edu ([127.0.0.1]) by localhost (smtp.cs.ucla.edu [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id QKhMb0BqsmNz; Fri, 3 Oct 2014 11:47:49 -0700 (PDT) Received: from penguin.cs.ucla.edu (Penguin.CS.UCLA.EDU [131.179.64.200]) by smtp.cs.ucla.edu (Postfix) with ESMTPSA id BA93839E8011; Fri, 3 Oct 2014 11:47:49 -0700 (PDT) Message-ID: <542EEF55.5000500@cs.ucla.edu> Date: Fri, 03 Oct 2014 11:47:49 -0700 From: Paul Eggert Organization: UCLA Computer Science Department User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Thunderbird/31.1.1 MIME-Version: 1.0 To: Jim Meyering , =?UTF-8?B?UMOhZHJhaWcgQnJhZHk=?= Subject: Re: bug#18621: [BUG] wc -c incorrectly counts bytes in /sys References: <542EB6F7.3040207@gmail.com> <542ED354.6040008@draigBrady.com> In-Reply-To: Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 18621 Cc: 18621@debbugs.gnu.org, George Shuklin X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -2.3 (--) On 10/03/2014 11:26 AM, Jim Meyering wrote: > That looks like a fine fix. Unfortunately that fix would make 'wc -c' waaaaay slower for a file that consists entirely of a big hole. How about if we change usable_st_size to return false for these proc files, with a heuristic as tight as we can make it, and to have coreutils check usable_st_size in more places. Something like this, perhaps: /* Return a boolean indicating whether SB->st_size is correct. */ static inline bool usable_st_size (struct stat const *sb) { if (S_ISREG (sb->st_mode)) { /* proc files like /sys/kernel/vmcoreinfo are weird: their st_size values do not reflect what's actually in them. The following heuristic attempts to catch proc files without catching many regular files that just happen to have the same signature. */ return ! (sb->st_uid == 0 && sb->st_gid == 0 && sb->st_blocks == 0 && sb->st_size == ST_BLKSIZE (*sb)); } return (S_ISLNK (sb->st_mode) || S_TYPEISSHM (sb) || S_TYPEISTMO (sb)); } and then review every place where coreutils currently uses st_size and prepend a check for usable_st_size if needed. From debbugs-submit-bounces@debbugs.gnu.org Fri Oct 03 15:17:42 2014 Received: (at 18621) by debbugs.gnu.org; 3 Oct 2014 19:17:42 +0000 Received: from localhost ([127.0.0.1]:60543 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1Xa8MH-0007BV-Bv for submit@debbugs.gnu.org; Fri, 03 Oct 2014 15:17:41 -0400 Received: from mx1.redhat.com ([209.132.183.28]:43589) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1Xa8MD-0007BK-MR for 18621@debbugs.gnu.org; Fri, 03 Oct 2014 15:17:38 -0400 Received: from int-mx13.intmail.prod.int.phx2.redhat.com (int-mx13.intmail.prod.int.phx2.redhat.com [10.5.11.26]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id s93JHL37015049 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=FAIL); Fri, 3 Oct 2014 15:17:21 -0400 Received: from [10.36.116.35] (ovpn-116-35.ams2.redhat.com [10.36.116.35]) by int-mx13.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id s93JHG0N000415 (version=TLSv1/SSLv3 cipher=DHE-RSA-CAMELLIA256-SHA bits=256 verify=NO); Fri, 3 Oct 2014 15:17:19 -0400 Message-ID: <542EF63B.5070402@draigBrady.com> Date: Fri, 03 Oct 2014 20:17:15 +0100 From: =?UTF-8?B?UMOhZHJhaWcgQnJhZHk=?= User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:17.0) Gecko/20130110 Thunderbird/17.0.2 MIME-Version: 1.0 To: Paul Eggert Subject: Re: bug#18621: [BUG] wc -c incorrectly counts bytes in /sys References: <542EB6F7.3040207@gmail.com> <542ED354.6040008@draigBrady.com> <542EEF55.5000500@cs.ucla.edu> In-Reply-To: <542EEF55.5000500@cs.ucla.edu> X-Enigmail-Version: 1.6 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Scanned-By: MIMEDefang 2.68 on 10.5.11.26 X-Spam-Score: -5.0 (-----) X-Debbugs-Envelope-To: 18621 Cc: 18621@debbugs.gnu.org, George Shuklin , Jim Meyering X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -5.0 (-----) On 10/03/2014 07:47 PM, Paul Eggert wrote: > On 10/03/2014 11:26 AM, Jim Meyering wrote: >> That looks like a fine fix. > > Unfortunately that fix would make 'wc -c' waaaaay slower for a file that consists entirely of a big hole. True, which you could avoid by deferring to read() for empty files: diff --git a/src/wc.c b/src/wc.c index 1ff007d..f8176cc 100644 --- a/src/wc.c +++ b/src/wc.c @@ -235,6 +235,7 @@ wc (int fd, char const *file_x, struct fstatus *fstatus) fstatus->failed = fstat (fd, &fstatus->st); if (! fstatus->failed && S_ISREG (fstatus->st.st_mode) + && fstatus->st.st_blocks && fstatus->st.st_size && (current_pos = lseek (fd, 0, SEEK_CUR)) != -1 && (end_pos = lseek (fd, 0, SEEK_END)) != -1) { > How about if we change usable_st_size to return false for these proc files, with a heuristic as tight as we can make it, and to have coreutils check usable_st_size in more places. Something like this, perhaps: > > /* Return a boolean indicating whether SB->st_size is correct. */ > static inline bool > usable_st_size (struct stat const *sb) > { > if (S_ISREG (sb->st_mode)) > { > /* proc files like /sys/kernel/vmcoreinfo are weird: their > st_size values do not reflect what's actually in them. > The following heuristic attempts to catch proc files without > catching many regular files that just happen to have the same > signature. */ > return ! (sb->st_uid == 0 && sb->st_gid == 0 && sb->st_blocks == 0 > && sb->st_size == ST_BLKSIZE (*sb)); > } > return (S_ISLNK (sb->st_mode) || S_TYPEISSHM (sb) || S_TYPEISTMO (sb)); > } > > and then review every place where coreutils currently uses st_size and prepend a check for usable_st_size if needed. That would be usefult, and that check matches this case, however many are not distinguishable. Consider: `stat /proc/$$/io` which has st_size and st_blocks = 0 Note my adjusted patch above handles both cases. thanks, Pádraig From debbugs-submit-bounces@debbugs.gnu.org Tue Oct 07 03:09:42 2014 Received: (at 18621) by debbugs.gnu.org; 7 Oct 2014 07:09:42 +0000 Received: from localhost ([127.0.0.1]:36136 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1XbOtv-0007uk-VS for submit@debbugs.gnu.org; Tue, 07 Oct 2014 03:09:42 -0400 Received: from smtp.cs.ucla.edu ([131.179.128.62]:38713) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1XbOtq-0007uW-Qk for 18621@debbugs.gnu.org; Tue, 07 Oct 2014 03:09:37 -0400 Received: from localhost (localhost.localdomain [127.0.0.1]) by smtp.cs.ucla.edu (Postfix) with ESMTP id AC095A60005; Tue, 7 Oct 2014 00:09:33 -0700 (PDT) X-Virus-Scanned: amavisd-new at smtp.cs.ucla.edu Received: from smtp.cs.ucla.edu ([127.0.0.1]) by localhost (smtp.cs.ucla.edu [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id ZZsWgs2LnGad; Tue, 7 Oct 2014 00:09:24 -0700 (PDT) Received: from [192.168.1.9] (pool-71-177-17-123.lsanca.dsl-w.verizon.net [71.177.17.123]) by smtp.cs.ucla.edu (Postfix) with ESMTPSA id AEF9039E8013; Tue, 7 Oct 2014 00:09:24 -0700 (PDT) Message-ID: <543391A4.5070406@cs.ucla.edu> Date: Tue, 07 Oct 2014 00:09:24 -0700 From: Paul Eggert Organization: UCLA Computer Science Department User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Thunderbird/31.1.2 MIME-Version: 1.0 To: Jim Meyering , =?UTF-8?B?UMOhZHJhaWcgQnJhZHk=?= Subject: Re: bug#18621: [BUG] wc -c incorrectly counts bytes in /sys References: <542EB6F7.3040207@gmail.com> <542ED354.6040008@draigBrady.com> <542EEF55.5000500@cs.ucla.edu> In-Reply-To: <542EEF55.5000500@cs.ucla.edu> Content-Type: multipart/mixed; boundary="------------000709090800090502020001" X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 18621 Cc: 18621@debbugs.gnu.org, George Shuklin X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -2.3 (--) This is a multi-part message in MIME format. --------------000709090800090502020001 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit Paul Eggert wrote: > How about if we change usable_st_size to return false for these proc files Attached is a better idea, I hope. I audited the coreutils code to look for problematic uses of SEEK_END or st_size when reading files (I didn't look at writing; one can of worms at a time). The attached patch still needs a changelog entry and test cases. The basic idea is to not trust st_size when it's <= ST_BLKSIZE. This fixes bugs in 'head', 'od', 'split', 'tac', 'tail', and 'wc' when applied to input files in proc or sysfs file systems. Here's an example bug fixed by this patch: $ cat /sys/kernel/profiling 0 $ tail -2c /sys/kernel/profiling $ This should be: $ cat /sys/kernel/profiling 0 $ tail -2c /sys/kernel/profiling 0 $ --------------000709090800090502020001 Content-Type: text/plain; charset=UTF-8; name="procsys.diff" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename="procsys.diff" ZGlmZiAtLWdpdCBhL3NyYy9oZWFkLmMgYi9zcmMvaGVhZC5jCmluZGV4IGQyZjFmY2UuLmY2 Zjg5MGEgMTAwNjQ0Ci0tLSBhL3NyYy9oZWFkLmMKKysrIGIvc3JjL2hlYWQuYwpAQCAtMzYs NiArMzYsNyBAQAogI2luY2x1ZGUgInF1b3RlLmgiCiAjaW5jbHVkZSAicXVvdGVhcmcuaCIK ICNpbmNsdWRlICJzYWZlLXJlYWQuaCIKKyNpbmNsdWRlICJzdGF0LXNpemUuaCIKICNpbmNs dWRlICJ4ZnJlb3Blbi5oIgogI2luY2x1ZGUgInhzdHJ0b2wuaCIKIApAQCAtMjA2LDEzICsy MDcsNDIgQEAgY29weV9mZCAoaW50IHNyY19mZCwgdWludG1heF90IG5fYnl0ZXMpCiAgIHJl dHVybiBDT1BZX0ZEX09LOwogfQogCi0vKiBQcmludCBhbGwgYnV0IHRoZSBsYXN0IE5fRUxJ REUgYnl0ZXMgZnJvbSB0aGUgaW5wdXQgYXZhaWxhYmxlIHZpYQotICAgdGhlIG5vbi1zZWVr YWJsZSBmaWxlIGRlc2NyaXB0b3IgRkQuICBSZXR1cm4gdHJ1ZSB1cG9uIHN1Y2Nlc3MuCisv KiBDYWxsIGxzZWVrIChGRCwgT0ZGU0VULCBXSEVOQ0UpLCB3aGVyZSBmaWxlIGRlc2NyaXB0 b3IgRkQKKyAgIGNvcnJlc3BvbmRzIHRvIHRoZSBmaWxlIEZJTEVOQU1FLiAgV0hFTkNFIG11 c3QgYmUgU0VFS19TRVQgb3IKKyAgIFNFRUtfQ1VSLiAgUmV0dXJuIHRoZSByZXN1bHRpbmcg b2Zmc2V0LiAgR2l2ZSBhIGRpYWdub3N0aWMgYW5kCisgICByZXR1cm4gLTEgaWYgbHNlZWsg ZmFpbHMuICAqLworCitzdGF0aWMgb2ZmX3QKK2Vsc2VlayAoaW50IGZkLCBvZmZfdCBvZmZz ZXQsIGludCB3aGVuY2UsIGNoYXIgY29uc3QgKmZpbGVuYW1lKQoreworICBvZmZfdCBuZXdf b2Zmc2V0ID0gbHNlZWsgKGZkLCBvZmZzZXQsIHdoZW5jZSk7CisgIGNoYXIgYnVmW0lOVF9C VUZTSVpFX0JPVU5EIChvZmZzZXQpXTsKKworICBpZiAobmV3X29mZnNldCA8IDApCisgICAg ZXJyb3IgKDAsIGVycm5vLAorICAgICAgICAgICBfKHdoZW5jZSA9PSBTRUVLX1NFVAorICAg ICAgICAgICAgID8gTl8oIiVzOiBjYW5ub3Qgc2VlayB0byBvZmZzZXQgJXMiKQorICAgICAg ICAgICAgIDogTl8oIiVzOiBjYW5ub3Qgc2VlayB0byByZWxhdGl2ZSBvZmZzZXQgJXMiKSks CisgICAgICAgICAgIHF1b3RlYXJnX2NvbG9uIChmaWxlbmFtZSksCisgICAgICAgICAgIG9m ZnRvc3RyIChvZmZzZXQsIGJ1ZikpOworCisgIHJldHVybiBuZXdfb2Zmc2V0OworfQorCisv KiBGb3IgYW4gaW5wdXQgZmlsZSB3aXRoIG5hbWUgRklMRU5BTUUgYW5kIGRlc2NyaXB0b3Ig RkQsCisgICBvdXRwdXQgYWxsIGJ1dCB0aGUgbGFzdCBOX0VMSURFXzAgYnl0ZXMuCisgICBJ ZiBDVVJSRU5UX1BPUyBpcyBub25uZWdhdGl2ZSwgYXNzdW1lIHRoYXQgdGhlIGlucHV0IGZp bGUgaXMKKyAgIHBvc2l0aW9uZWQgYXQgQ1VSUkVOVF9QT1MgYW5kIHRoYXQgaXQgc2hvdWxk IGJlIHJlcG9zaXRpb25lZCB0bworICAganVzdCBiZWZvcmUgdGhlIGVsaWRlZCBieXRlcyBi ZWZvcmUgcmV0dXJuaW5nLgorICAgUmV0dXJuIHRydWUgdXBvbiBzdWNjZXNzLgogICAgR2l2 ZSBhIGRpYWdub3N0aWMgYW5kIHJldHVybiBmYWxzZSB1cG9uIGVycm9yLiAgKi8KIHN0YXRp YyBib29sCi1lbGlkZV90YWlsX2J5dGVzX3BpcGUgKGNvbnN0IGNoYXIgKmZpbGVuYW1lLCBp bnQgZmQsIHVpbnRtYXhfdCBuX2VsaWRlXzApCitlbGlkZV90YWlsX2J5dGVzX3BpcGUgKGNv bnN0IGNoYXIgKmZpbGVuYW1lLCBpbnQgZmQsIHVpbnRtYXhfdCBuX2VsaWRlXzAsCisgICAg ICAgICAgICAgICAgICAgICAgIG9mZl90IGN1cnJlbnRfcG9zKQogewogICBzaXplX3Qgbl9l bGlkZSA9IG5fZWxpZGVfMDsKKyAgdWludG1heF90IGRlc2lyZWRfcG9zID0gY3VycmVudF9w b3M7CisgIGJvb2wgb2sgPSB0cnVlOwogCiAjaWZuZGVmIEhFQURfVEFJTF9QSVBFX1JFQURf QlVGU0laRQogIyBkZWZpbmUgSEVBRF9UQUlMX1BJUEVfUkVBRF9CVUZTSVpFIEJVRlNJWgpA QCAtMjUxLDcgKzI4MSw2IEBAIGVsaWRlX3RhaWxfYnl0ZXNfcGlwZSAoY29uc3QgY2hhciAq ZmlsZW5hbWUsIGludCBmZCwgdWludG1heF90IG5fZWxpZGVfMCkKIAogICBpZiAobl9lbGlk ZSA8PSBIRUFEX1RBSUxfUElQRV9CWVRFQ09VTlRfVEhSRVNIT0xEKQogICAgIHsKLSAgICAg IGJvb2wgb2sgPSB0cnVlOwogICAgICAgYm9vbCBmaXJzdCA9IHRydWU7CiAgICAgICBib29s IGVvZiA9IGZhbHNlOwogICAgICAgc2l6ZV90IG5fdG9fcmVhZCA9IFJFQURfQlVGU0laRSAr IG5fZWxpZGU7CkBAIC0yOTMsMjIgKzMyMiwyNiBAQCBlbGlkZV90YWlsX2J5dGVzX3BpcGUg KGNvbnN0IGNoYXIgKmZpbGVuYW1lLCBpbnQgZmQsIHVpbnRtYXhfdCBuX2VsaWRlXzApCiAg ICAgICAgICAgLyogT3V0cHV0IGFueSAoYnV0IG1heWJlIGp1c3QgcGFydCBvZiB0aGUpIGVs aWRlZCBkYXRhIGZyb20KICAgICAgICAgICAgICB0aGUgcHJldmlvdXMgcm91bmQuICAqLwog ICAgICAgICAgIGlmICghIGZpcnN0KQotICAgICAgICAgICAgeHdyaXRlX3N0ZG91dCAoYlsh aV0gKyBSRUFEX0JVRlNJWkUsIG5fZWxpZGUgLSBkZWx0YSk7CisgICAgICAgICAgICB7Cisg ICAgICAgICAgICAgIGRlc2lyZWRfcG9zICs9IG5fZWxpZGUgLSBkZWx0YTsKKyAgICAgICAg ICAgICAgeHdyaXRlX3N0ZG91dCAoYlshaV0gKyBSRUFEX0JVRlNJWkUsIG5fZWxpZGUgLSBk ZWx0YSk7CisgICAgICAgICAgICB9CiAgICAgICAgICAgZmlyc3QgPSBmYWxzZTsKIAogICAg ICAgICAgIGlmIChuX2VsaWRlIDwgbl9yZWFkKQotICAgICAgICAgICAgeHdyaXRlX3N0ZG91 dCAoYltpXSwgbl9yZWFkIC0gbl9lbGlkZSk7CisgICAgICAgICAgICB7CisgICAgICAgICAg ICAgIGRlc2lyZWRfcG9zICs9IG5fcmVhZCAtIG5fZWxpZGU7CisgICAgICAgICAgICAgIHh3 cml0ZV9zdGRvdXQgKGJbaV0sIG5fcmVhZCAtIG5fZWxpZGUpOworICAgICAgICAgICAgfQog ICAgICAgICB9CiAKICAgICAgIGZyZWUgKGJbMF0pOwotICAgICAgcmV0dXJuIG9rOwogICAg IH0KICAgZWxzZQogICAgIHsKICAgICAgIC8qIFJlYWQgYmxvY2tzIG9mIHNpemUgUkVBRF9C VUZTSVpFLCB1bnRpbCB3ZSd2ZSByZWFkIGF0IGxlYXN0IG5fZWxpZGUKICAgICAgICAgIGJ5 dGVzLiAgVGhlbiwgZm9yIGVhY2ggbmV3IGJ1ZmZlciB3ZSByZWFkLCBhbHNvIHdyaXRlIGFu IG9sZCBvbmUuICAqLwogCi0gICAgICBib29sIG9rID0gdHJ1ZTsKICAgICAgIGJvb2wgZW9m ID0gZmFsc2U7CiAgICAgICBzaXplX3Qgbl9yZWFkOwogICAgICAgYm9vbCBidWZmZXJlZF9l bm91Z2g7CkBAIC0zNTcsNyArMzkwLDEwIEBAIGVsaWRlX3RhaWxfYnl0ZXNfcGlwZSAoY29u c3QgY2hhciAqZmlsZW5hbWUsIGludCBmZCwgdWludG1heF90IG5fZWxpZGVfMCkKICAgICAg ICAgICAgIGJ1ZmZlcmVkX2Vub3VnaCA9IHRydWU7CiAKICAgICAgICAgICBpZiAoYnVmZmVy ZWRfZW5vdWdoKQotICAgICAgICAgICAgeHdyaXRlX3N0ZG91dCAoYltpX25leHRdLCBuX3Jl YWQpOworICAgICAgICAgICAgeworICAgICAgICAgICAgICBkZXNpcmVkX3BvcyArPSBuX3Jl YWQ7CisgICAgICAgICAgICAgIHh3cml0ZV9zdGRvdXQgKGJbaV9uZXh0XSwgbl9yZWFkKTsK KyAgICAgICAgICAgIH0KICAgICAgICAgfQogCiAgICAgICAvKiBPdXRwdXQgYW55IHJlbWFp bmRlcjogcmVtIGJ5dGVzIGZyb20gYltpXSArIG5fcmVhZC4gICovCkBAIC0zNjYsNiArNDAy LDcgQEAgZWxpZGVfdGFpbF9ieXRlc19waXBlIChjb25zdCBjaGFyICpmaWxlbmFtZSwgaW50 IGZkLCB1aW50bWF4X3Qgbl9lbGlkZV8wKQogICAgICAgICAgIGlmIChidWZmZXJlZF9lbm91 Z2gpCiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgIHNpemVfdCBuX2J5dGVzX2xlZnRf aW5fYl9pID0gUkVBRF9CVUZTSVpFIC0gbl9yZWFkOworICAgICAgICAgICAgICBkZXNpcmVk X3BvcyArPSByZW07CiAgICAgICAgICAgICAgIGlmIChyZW0gPCBuX2J5dGVzX2xlZnRfaW5f Yl9pKQogICAgICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICAgIHh3cml0ZV9zdGRv dXQgKGJbaV0gKyBuX3JlYWQsIHJlbSk7CkBAIC0zOTIsNiArNDI5LDcgQEAgZWxpZGVfdGFp bF9ieXRlc19waXBlIChjb25zdCBjaGFyICpmaWxlbmFtZSwgaW50IGZkLCB1aW50bWF4X3Qg bl9lbGlkZV8wKQogICAgICAgICAgICAgICAgKi8KICAgICAgICAgICAgICAgc2l6ZV90IHkg PSBSRUFEX0JVRlNJWkUgLSByZW07CiAgICAgICAgICAgICAgIHNpemVfdCB4ID0gbl9yZWFk IC0geTsKKyAgICAgICAgICAgICAgZGVzaXJlZF9wb3MgKz0geDsKICAgICAgICAgICAgICAg eHdyaXRlX3N0ZG91dCAoYltpX25leHRdLCB4KTsKICAgICAgICAgICAgIH0KICAgICAgICAg fQpAQCAtNDAwLDM2ICs0MzgsMjEgQEAgZWxpZGVfdGFpbF9ieXRlc19waXBlIChjb25zdCBj aGFyICpmaWxlbmFtZSwgaW50IGZkLCB1aW50bWF4X3Qgbl9lbGlkZV8wKQogICAgICAgZm9y IChpID0gMDsgaSA8IG5fYWxsb2M7IGkrKykKICAgICAgICAgZnJlZSAoYltpXSk7CiAgICAg ICBmcmVlIChiKTsKLQotICAgICAgcmV0dXJuIG9rOwogICAgIH0KKworICBpZiAoMCA8PSBj dXJyZW50X3BvcyAmJiBlbHNlZWsgKGZkLCBkZXNpcmVkX3BvcywgU0VFS19TRVQsIGZpbGVu YW1lKSA8IDApCisgICAgb2sgPSBmYWxzZTsKKyAgcmV0dXJuIG9rOwogfQogCi0vKiBDYWxs IGxzZWVrIChGRCwgT0ZGU0VULCBXSEVOQ0UpLCB3aGVyZSBmaWxlIGRlc2NyaXB0b3IgRkQK LSAgIGNvcnJlc3BvbmRzIHRvIHRoZSBmaWxlIEZJTEVOQU1FLiAgV0hFTkNFIG11c3QgYmUg U0VFS19TRVQgb3IKLSAgIFNFRUtfQ1VSLiAgUmV0dXJuIHRoZSByZXN1bHRpbmcgb2Zmc2V0 LiAgR2l2ZSBhIGRpYWdub3N0aWMgYW5kCi0gICByZXR1cm4gLTEgaWYgbHNlZWsgZmFpbHMu ICAqLworLyogUmVhZCByZWd1bGFyIGZpbGVzIHdob3NlIHNpemUgaXMgbm8gZ3JlYXRlciB0 aGFuIHRoaXMgdmFsdWUuICBUaGlzCisgICB3b3JrcyBiZXR0ZXIgZm9yIHByb2MtbGlrZSBm aWxlIHN5c3RlbXMsIHdoZXJlIHN0X3NpemUgaXMgbm90IHJlbGlhYmxlLiAgKi8KIAotc3Rh dGljIG9mZl90Ci1lbHNlZWsgKGludCBmZCwgb2ZmX3Qgb2Zmc2V0LCBpbnQgd2hlbmNlLCBj aGFyIGNvbnN0ICpmaWxlbmFtZSkKLXsKLSAgb2ZmX3QgbmV3X29mZnNldCA9IGxzZWVrIChm ZCwgb2Zmc2V0LCB3aGVuY2UpOwotICBjaGFyIGJ1ZltJTlRfQlVGU0laRV9CT1VORCAob2Zm c2V0KV07Ci0KLSAgaWYgKG5ld19vZmZzZXQgPCAwKQotICAgIGVycm9yICgwLCBlcnJubywK LSAgICAgICAgICAgXyh3aGVuY2UgPT0gU0VFS19TRVQKLSAgICAgICAgICAgICA/IE5fKCIl czogY2Fubm90IHNlZWsgdG8gb2Zmc2V0ICVzIikKLSAgICAgICAgICAgICA6IE5fKCIlczog Y2Fubm90IHNlZWsgdG8gcmVsYXRpdmUgb2Zmc2V0ICVzIikpLAotICAgICAgICAgICBxdW90 ZWFyZ19jb2xvbiAoZmlsZW5hbWUpLAotICAgICAgICAgICBvZmZ0b3N0ciAob2Zmc2V0LCBi dWYpKTsKLQotICByZXR1cm4gbmV3X29mZnNldDsKLX0KK2VudW0geyBTTUFMTF9GSUxFX1NJ WkUgPSA0ICogMTAyNCB9OwogCiAvKiBGb3IgdGhlIGZpbGUgRklMRU5BTUUgd2l0aCBkZXNj cmlwdG9yIEZELCBvdXRwdXQgYWxsIGJ1dCB0aGUgbGFzdCBOX0VMSURFCiAgICBieXRlcy4g IElmIFNJWkUgaXMgbm9ubmVnYXRpdmUsIHRoaXMgaXMgYSByZWd1bGFyIGZpbGUgcG9zaXRp b25lZAotICAgYXQgU1RBUlRfUE9TIHdpdGggU0laRSBieXRlcy4gIFJldHVybiB0cnVlIG9u IHN1Y2Nlc3MuCisgICBhdCBDVVJSRU5UX1BPUyB3aXRoIFNJWkUgYnl0ZXMuICBSZXR1cm4g dHJ1ZSBvbiBzdWNjZXNzLgogICAgR2l2ZSBhIGRpYWdub3N0aWMgYW5kIHJldHVybiBmYWxz ZSB1cG9uIGVycm9yLiAgKi8KIAogLyogTk9URTogaWYgdGhlIGlucHV0IGZpbGUgc2hyaW5r cyBieSBtb3JlIHRoYW4gTl9FTElERSBieXRlcyBiZXR3ZWVuCkBAIC00MzcsMTAgKzQ2MCwx MSBAQCBlbHNlZWsgKGludCBmZCwgb2ZmX3Qgb2Zmc2V0LCBpbnQgd2hlbmNlLCBjaGFyIGNv bnN0ICpmaWxlbmFtZSkKIAogc3RhdGljIGJvb2wKIGVsaWRlX3RhaWxfYnl0ZXNfZmlsZSAo Y29uc3QgY2hhciAqZmlsZW5hbWUsIGludCBmZCwgdWludG1heF90IG5fZWxpZGUsCi0gICAg ICAgICAgICAgICAgICAgICAgIG9mZl90IGN1cnJlbnRfcG9zLCBvZmZfdCBzaXplKQorICAg ICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qgc3RhdCBjb25zdCAqc3QsIG9mZl90IGN1cnJl bnRfcG9zKQogewotICBpZiAoc2l6ZSA8IDApCi0gICAgcmV0dXJuIGVsaWRlX3RhaWxfYnl0 ZXNfcGlwZSAoZmlsZW5hbWUsIGZkLCBuX2VsaWRlKTsKKyAgb2ZmX3Qgc2l6ZSA9IHN0LT5z dF9zaXplOworICBpZiAoc2l6ZSA8PSBTVF9CTEtTSVpFICgqc3QpKQorICAgIHJldHVybiBl bGlkZV90YWlsX2J5dGVzX3BpcGUgKGZpbGVuYW1lLCBmZCwgbl9lbGlkZSwgY3VycmVudF9w b3MpOwogICBlbHNlCiAgICAgewogICAgICAgLyogQmUgY2FyZWZ1bCBoZXJlLiAgVGhlIGN1 cnJlbnQgcG9zaXRpb24gbWF5IGFjdHVhbGx5IGJlCkBAIC00NjAsMTMgKzQ4NCwxNiBAQCBl bGlkZV90YWlsX2J5dGVzX2ZpbGUgKGNvbnN0IGNoYXIgKmZpbGVuYW1lLCBpbnQgZmQsIHVp bnRtYXhfdCBuX2VsaWRlLAogICAgIH0KIH0KIAotLyogUHJpbnQgYWxsIGJ1dCB0aGUgbGFz dCBOX0VMSURFIGxpbmVzIGZyb20gdGhlIGlucHV0IHN0cmVhbQotICAgb3BlbiBmb3IgcmVh ZGluZyB2aWEgZmlsZSBkZXNjcmlwdG9yIEZELgorLyogRm9yIGFuIGlucHV0IGZpbGUgd2l0 aCBuYW1lIEZJTEVOQU1FIGFuZCBkZXNjcmlwdG9yIEZELAorICAgb3V0cHV0IGFsbCBidXQg dGhlIGxhc3QgTl9FTElERV8wIGJ5dGVzLgorICAgSWYgQ1VSUkVOVF9QT1MgaXMgbm9ubmVn YXRpdmUsIHRoZSBpbnB1dCBmaWxlIGlzIHBvc2l0aW9uZWQgdGhlcmUKKyAgIGFuZCBzaG91 bGQgYmUgcmVwb3NpdGlvbmVkIHRvIGp1c3QgYmVmb3JlIHRoZSBlbGlkZWQgYnl0ZXMuCiAg ICBCdWZmZXIgdGhlIHNwZWNpZmllZCBudW1iZXIgb2YgbGluZXMgYXMgYSBsaW5rZWQgbGlz dCBvZiBMQlVGRkVScywKICAgIGFkZGluZyB0aGVtIGFzIG5lZWRlZC4gIFJldHVybiB0cnVl IGlmIHN1Y2Nlc3NmdWwuICAqLwogCiBzdGF0aWMgYm9vbAotZWxpZGVfdGFpbF9saW5lc19w aXBlIChjb25zdCBjaGFyICpmaWxlbmFtZSwgaW50IGZkLCB1aW50bWF4X3Qgbl9lbGlkZSkK K2VsaWRlX3RhaWxfbGluZXNfcGlwZSAoY29uc3QgY2hhciAqZmlsZW5hbWUsIGludCBmZCwg dWludG1heF90IG5fZWxpZGUsCisgICAgICAgICAgICAgICAgICAgICAgIG9mZl90IGN1cnJl bnRfcG9zKQogewogICBzdHJ1Y3QgbGluZWJ1ZmZlcgogICB7CkBAIC00NzUsNiArNTAyLDcg QEAgZWxpZGVfdGFpbF9saW5lc19waXBlIChjb25zdCBjaGFyICpmaWxlbmFtZSwgaW50IGZk LCB1aW50bWF4X3Qgbl9lbGlkZSkKICAgICBzaXplX3QgbmxpbmVzOwogICAgIHN0cnVjdCBs aW5lYnVmZmVyICpuZXh0OwogICB9OworICB1aW50bWF4X3QgZGVzaXJlZF9wb3MgPSBjdXJy ZW50X3BvczsKICAgdHlwZWRlZiBzdHJ1Y3QgbGluZWJ1ZmZlciBMQlVGRkVSOwogICBMQlVG RkVSICpmaXJzdCwgKmxhc3QsICp0bXA7CiAgIHNpemVfdCB0b3RhbF9saW5lcyA9IDA7CS8q IFRvdGFsIG51bWJlciBvZiBuZXdsaW5lcyBpbiBhbGwgYnVmZmVycy4gICovCkBAIC00OTcs NiArNTI1LDcgQEAgZWxpZGVfdGFpbF9saW5lc19waXBlIChjb25zdCBjaGFyICpmaWxlbmFt ZSwgaW50IGZkLCB1aW50bWF4X3Qgbl9lbGlkZSkKIAogICAgICAgaWYgKCEgbl9lbGlkZSkK ICAgICAgICAgeworICAgICAgICAgIGRlc2lyZWRfcG9zICs9IG5fcmVhZDsKICAgICAgICAg ICB4d3JpdGVfc3Rkb3V0ICh0bXAtPmJ1ZmZlciwgbl9yZWFkKTsKICAgICAgICAgICBjb250 aW51ZTsKICAgICAgICAgfQpAQCAtNTM2LDYgKzU2NSw3IEBAIGVsaWRlX3RhaWxfbGluZXNf cGlwZSAoY29uc3QgY2hhciAqZmlsZW5hbWUsIGludCBmZCwgdWludG1heF90IG5fZWxpZGUp CiAgICAgICAgICAgbGFzdCA9IGxhc3QtPm5leHQgPSB0bXA7CiAgICAgICAgICAgaWYgKG5f ZWxpZGUgPCB0b3RhbF9saW5lcyAtIGZpcnN0LT5ubGluZXMpCiAgICAgICAgICAgICB7Cisg ICAgICAgICAgICAgIGRlc2lyZWRfcG9zICs9IGZpcnN0LT5uYnl0ZXM7CiAgICAgICAgICAg ICAgIHh3cml0ZV9zdGRvdXQgKGZpcnN0LT5idWZmZXIsIGZpcnN0LT5uYnl0ZXMpOwogICAg ICAgICAgICAgICB0bXAgPSBmaXJzdDsKICAgICAgICAgICAgICAgdG90YWxfbGluZXMgLT0g Zmlyc3QtPm5saW5lczsKQEAgLTU2NSw2ICs1OTUsNyBAQCBlbGlkZV90YWlsX2xpbmVzX3Bp cGUgKGNvbnN0IGNoYXIgKmZpbGVuYW1lLCBpbnQgZmQsIHVpbnRtYXhfdCBuX2VsaWRlKQog CiAgIGZvciAodG1wID0gZmlyc3Q7IG5fZWxpZGUgPCB0b3RhbF9saW5lcyAtIHRtcC0+bmxp bmVzOyB0bXAgPSB0bXAtPm5leHQpCiAgICAgeworICAgICAgZGVzaXJlZF9wb3MgKz0gdG1w LT5uYnl0ZXM7CiAgICAgICB4d3JpdGVfc3Rkb3V0ICh0bXAtPmJ1ZmZlciwgdG1wLT5uYnl0 ZXMpOwogICAgICAgdG90YWxfbGluZXMgLT0gdG1wLT5ubGluZXM7CiAgICAgfQpAQCAtNTgx LDYgKzYxMiw3IEBAIGVsaWRlX3RhaWxfbGluZXNfcGlwZSAoY29uc3QgY2hhciAqZmlsZW5h bWUsIGludCBmZCwgdWludG1heF90IG5fZWxpZGUpCiAgICAgICAgICAgKyt0bXAtPm5saW5l czsKICAgICAgICAgICAtLW47CiAgICAgICAgIH0KKyAgICAgIGRlc2lyZWRfcG9zICs9IHAg LSB0bXAtPmJ1ZmZlcjsKICAgICAgIHh3cml0ZV9zdGRvdXQgKHRtcC0+YnVmZmVyLCBwIC0g dG1wLT5idWZmZXIpOwogICAgIH0KIApAQCAtNTkxLDYgKzYyMyw5IEBAIGZyZWVfbGJ1ZmZl cnM6CiAgICAgICBmcmVlIChmaXJzdCk7CiAgICAgICBmaXJzdCA9IHRtcDsKICAgICB9CisK KyAgaWYgKDAgPD0gY3VycmVudF9wb3MgJiYgZWxzZWVrIChmZCwgZGVzaXJlZF9wb3MsIFNF RUtfU0VULCBmaWxlbmFtZSkgPCAwKQorICAgIG9rID0gZmFsc2U7CiAgIHJldHVybiBvazsK IH0KIApAQCAtNzE0LDEwICs3NDksMTEgQEAgZWxpZGVfdGFpbF9saW5lc19zZWVrYWJsZSAo Y29uc3QgY2hhciAqcHJldHR5X2ZpbGVuYW1lLCBpbnQgZmQsCiAKIHN0YXRpYyBib29sCiBl bGlkZV90YWlsX2xpbmVzX2ZpbGUgKGNvbnN0IGNoYXIgKmZpbGVuYW1lLCBpbnQgZmQsIHVp bnRtYXhfdCBuX2VsaWRlLAotICAgICAgICAgICAgICAgICAgICAgICBvZmZfdCBjdXJyZW50 X3Bvcywgb2ZmX3Qgc2l6ZSkKKyAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHN0YXQg Y29uc3QgKnN0LCBvZmZfdCBjdXJyZW50X3BvcykKIHsKLSAgaWYgKHNpemUgPCAwKQotICAg IHJldHVybiBlbGlkZV90YWlsX2xpbmVzX3BpcGUgKGZpbGVuYW1lLCBmZCwgbl9lbGlkZSk7 CisgIG9mZl90IHNpemUgPSBzdC0+c3Rfc2l6ZTsKKyAgaWYgKHNpemUgPD0gU1RfQkxLU0la RSAoKnN0KSkKKyAgICByZXR1cm4gZWxpZGVfdGFpbF9saW5lc19waXBlIChmaWxlbmFtZSwg ZmQsIG5fZWxpZGUsIGN1cnJlbnRfcG9zKTsKICAgZWxzZQogICAgIHsKICAgICAgIC8qIEZp bmQgdGhlIG9mZnNldCwgT0ZGLCBvZiB0aGUgTnRoIG5ld2xpbmUgZnJvbSB0aGUgZW5kLApA QCAtODAyLDI4ICs4MzgsMjQgQEAgaGVhZCAoY29uc3QgY2hhciAqZmlsZW5hbWUsIGludCBm ZCwgdWludG1heF90IG5fdW5pdHMsIGJvb2wgY291bnRfbGluZXMsCiAKICAgaWYgKGVsaWRl X2Zyb21fZW5kKQogICAgIHsKLSAgICAgIG9mZl90IGN1cnJlbnRfcG9zID0gLTEsIHNpemUg PSAtMTsKLSAgICAgIGlmICghIHByZXN1bWVfaW5wdXRfcGlwZSkKKyAgICAgIG9mZl90IGN1 cnJlbnRfcG9zID0gLTE7CisgICAgICBzdHJ1Y3Qgc3RhdCBzdDsKKyAgICAgIGlmIChmc3Rh dCAoZmQsICZzdCkgIT0gMCkKICAgICAgICAgewotICAgICAgICAgIHN0cnVjdCBzdGF0IHN0 OwotICAgICAgICAgIGlmIChmc3RhdCAoZmQsICZzdCkgIT0gMCkKLSAgICAgICAgICAgIHsK LSAgICAgICAgICAgICAgZXJyb3IgKDAsIGVycm5vLCBfKCJjYW5ub3QgZnN0YXQgJXMiKSwK LSAgICAgICAgICAgICAgICAgICAgIHF1b3RlYXJnX2NvbG9uIChmaWxlbmFtZSkpOwotICAg ICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgaWYg KFNfSVNSRUcgKHN0LnN0X21vZGUpKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICBz aXplID0gc3Quc3Rfc2l6ZTsKLSAgICAgICAgICAgICAgY3VycmVudF9wb3MgPSBlbHNlZWsg KGZkLCAwLCBTRUVLX0NVUiwgZmlsZW5hbWUpOwotICAgICAgICAgICAgICBpZiAoY3VycmVu dF9wb3MgPCAwKQotICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAg IH0KKyAgICAgICAgICBlcnJvciAoMCwgZXJybm8sIF8oImNhbm5vdCBmc3RhdCAlcyIpLAor ICAgICAgICAgICAgICAgICBxdW90ZWFyZ19jb2xvbiAoZmlsZW5hbWUpKTsKKyAgICAgICAg ICByZXR1cm4gZmFsc2U7CisgICAgICAgIH0KKyAgICAgIGlmICghIHByZXN1bWVfaW5wdXRf cGlwZSAmJiB1c2FibGVfc3Rfc2l6ZSAoJnN0KSkKKyAgICAgICAgeworICAgICAgICAgIGN1 cnJlbnRfcG9zID0gZWxzZWVrIChmZCwgMCwgU0VFS19DVVIsIGZpbGVuYW1lKTsKKyAgICAg ICAgICBpZiAoY3VycmVudF9wb3MgPCAwKQorICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwog ICAgICAgICB9CiAgICAgICBpZiAoY291bnRfbGluZXMpCi0gICAgICAgIHJldHVybiBlbGlk ZV90YWlsX2xpbmVzX2ZpbGUgKGZpbGVuYW1lLCBmZCwgbl91bml0cywgY3VycmVudF9wb3Ms IHNpemUpOworICAgICAgICByZXR1cm4gZWxpZGVfdGFpbF9saW5lc19maWxlIChmaWxlbmFt ZSwgZmQsIG5fdW5pdHMsICZzdCwgY3VycmVudF9wb3MpOwogICAgICAgZWxzZQotICAgICAg ICByZXR1cm4gZWxpZGVfdGFpbF9ieXRlc19maWxlIChmaWxlbmFtZSwgZmQsIG5fdW5pdHMs IGN1cnJlbnRfcG9zLCBzaXplKTsKKyAgICAgICAgcmV0dXJuIGVsaWRlX3RhaWxfYnl0ZXNf ZmlsZSAoZmlsZW5hbWUsIGZkLCBuX3VuaXRzLCAmc3QsIGN1cnJlbnRfcG9zKTsKICAgICB9 CiAgIGlmIChjb3VudF9saW5lcykKICAgICByZXR1cm4gaGVhZF9saW5lcyAoZmlsZW5hbWUs IGZkLCBuX3VuaXRzKTsKZGlmZiAtLWdpdCBhL3NyYy9vZC5jIGIvc3JjL29kLmMKaW5kZXgg MThiMTY4My4uN2FjNjYzYSAxMDA2NDQKLS0tIGEvc3JjL29kLmMKKysrIGIvc3JjL29kLmMK QEAgLTI3LDYgKzI3LDcgQEAKICNpbmNsdWRlICJlcnJvci5oIgogI2luY2x1ZGUgImZ0b2Fz dHIuaCIKICNpbmNsdWRlICJxdW90ZS5oIgorI2luY2x1ZGUgInN0YXQtc2l6ZS5oIgogI2lu Y2x1ZGUgInhmcmVvcGVuLmgiCiAjaW5jbHVkZSAieHByaW50Zi5oIgogI2luY2x1ZGUgInhz dHJ0b2wuaCIKQEAgLTEwMzQsOSArMTAzNSwxMSBAQCBza2lwICh1aW50bWF4X3Qgbl9za2lw KQogICAgICAgICAgICAgIElmIHRoZSBudW1iZXIgb2YgYnl0ZXMgbGVmdCB0byBza2lwIGlz IGxhcmdlciB0aGFuCiAgICAgICAgICAgICAgdGhlIHNpemUgb2YgdGhlIGN1cnJlbnQgZmls ZSwgd2UgY2FuIGRlY3JlbWVudCBuX3NraXAKICAgICAgICAgICAgICBhbmQgZ28gb24gdG8g dGhlIG5leHQgZmlsZS4gIFNraXAgdGhpcyBvcHRpbWl6YXRpb24gYWxzbwotICAgICAgICAg ICAgIHdoZW4gc3Rfc2l6ZSBpcyAwLCBiZWNhdXNlIHNvbWUga2VybmVscyByZXBvcnQgdGhh dAotICAgICAgICAgICAgIG5vbmVtcHR5IGZpbGVzIGluIC9wcm9jIGhhdmUgc3Rfc2l6ZSA9 PSAwLiAgKi8KLSAgICAgICAgICBpZiAoU19JU1JFRyAoZmlsZV9zdGF0cy5zdF9tb2RlKSAm JiAwIDwgZmlsZV9zdGF0cy5zdF9zaXplKQorICAgICAgICAgICAgIHdoZW4gc3Rfc2l6ZSBp cyBubyBncmVhdGVyIHRoYW4gdGhlIGJsb2NrIHNpemUsIGJlY2F1c2UKKyAgICAgICAgICAg ICBzb21lIGtlcm5lbHMgcmVwb3J0IG5vbnNlbnNlIHNtYWxsIGZpbGUgc2l6ZXMgZm9yCisg ICAgICAgICAgICAgcHJvYy1saWtlIGZpbGUgc3lzdGVtcy4gICovCisgICAgICAgICAgaWYg KHVzYWJsZV9zdF9zaXplICgmZmlsZV9zdGF0cykKKyAgICAgICAgICAgICAgJiYgU1RfQkxL U0laRSAoZmlsZV9zdGF0cykgPCBmaWxlX3N0YXRzLnN0X3NpemUpCiAgICAgICAgICAgICB7 CiAgICAgICAgICAgICAgIGlmICgodWludG1heF90KSBmaWxlX3N0YXRzLnN0X3NpemUgPCBu X3NraXApCiAgICAgICAgICAgICAgICAgbl9za2lwIC09IGZpbGVfc3RhdHMuc3Rfc2l6ZTsK QEAgLTEwNTIsNiArMTA1NSw3IEBAIHNraXAgKHVpbnRtYXhfdCBuX3NraXApCiAgICAgICAg ICAgICB9CiAKICAgICAgICAgICAvKiBJZiBpdCdzIG5vdCBhIHJlZ3VsYXIgZmlsZSB3aXRo IG5vbm5lZ2F0aXZlIHNpemUsCisgICAgICAgICAgICAgb3IgaWYgaXQncyBzbyBzbWFsbCB0 aGF0IGl0IG1pZ2h0IGJlIGluIGEgcHJvYy1saWtlIGZpbGUgc3lzdGVtLAogICAgICAgICAg ICAgIHBvc2l0aW9uIHRoZSBmaWxlIHBvaW50ZXIgYnkgcmVhZGluZy4gICovCiAKICAgICAg ICAgICBlbHNlCkBAIC0xMDY3LDEwICsxMDcxLDE1IEBAIHNraXAgKHVpbnRtYXhfdCBuX3Nr aXApCiAgICAgICAgICAgICAgICAgICBuX3NraXAgLT0gbl9ieXRlc19yZWFkOwogICAgICAg ICAgICAgICAgICAgaWYgKG5fYnl0ZXNfcmVhZCAhPSBuX2J5dGVzX3RvX3JlYWQpCiAgICAg ICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgICBpbl9lcnJubyA9IGVy cm5vOwotICAgICAgICAgICAgICAgICAgICAgIG9rID0gZmFsc2U7Ci0gICAgICAgICAgICAg ICAgICAgICAgbl9za2lwID0gMDsKLSAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAg ICAgICAgICAgICAgICAgICAgICBpZiAoZmVycm9yIChpbl9zdHJlYW0pKQorICAgICAgICAg ICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICAgICBpbl9lcnJubyA9 IGVycm5vOworICAgICAgICAgICAgICAgICAgICAgICAgICBvayA9IGZhbHNlOworICAgICAg ICAgICAgICAgICAgICAgICAgICBuX3NraXAgPSAwOworICAgICAgICAgICAgICAgICAgICAg ICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAg ICAgICAgICBpZiAoZmVvZiAoaW5fc3RyZWFtKSkKKyAgICAgICAgICAgICAgICAgICAgICAg IGJyZWFrOwogICAgICAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICAgfQogICAg ICAgICAgICAgfQpkaWZmIC0tZ2l0IGEvc3JjL3NwbGl0LmMgYi9zcmMvc3BsaXQuYwppbmRl eCA5YjIzOGU0Li5lYzBkYTdkIDEwMDY0NAotLS0gYS9zcmMvc3BsaXQuYworKysgYi9zcmMv c3BsaXQuYwpAQCAtMjQ2LDYgKzI0NiwzNyBAQCByL0svTiAgIGxpa2V3aXNlIGJ1dCBvbmx5 IG91dHB1dCBLdGggb2YgTiB0byBzdGRvdXRcblwKICAgZXhpdCAoc3RhdHVzKTsKIH0KIAor LyogUmV0dXJuIHRoZSBudW1iZXIgb2YgYnl0ZXMgdGhhdCBjYW4gYmUgcmVhZCBmcm9tIEZE LCBhIGZpbGUgd2l0aAorICAgYXBwYXJlbnQgc2l6ZSBTSVpFLiAgQWN0dWFsbHkgcmVhZCB0 aGUgZGF0YSBpbnRvIEJVRiAob2Ygc2l6ZQorICAgQlVGU0laRSkgaWYgdGhlIGZpbGUgYXBw ZWFycyB0byBiZSBzbWFsbGVyIHRoYW4gQlVGU0laRSwgYXMgdGhpcworICAgd29ya3MgYmV0 dGVyIG9uIHByb2MtbGlrZSBmaWxlIHN5c3RlbXMuICBJZiB0aGUgcmV0dXJuZWQgdmFsdWUg aXMKKyAgIGxlc3MgdGhhbiBCVUZTSVpFLCBzdG9yZSBhbGwgdGhlIGZpbGUncyBkYXRhIGlu dG8gQlVGOyBvdGhlcndpc2UsCisgICByZXN0b3JlIHRoZSBpbnB1dCBmaWxlJ3MgcG9zaXRp b24gc28gdGhhdCB0aGUgZmlsZSBjYW4gYmUgcmVyZWFkIGlmCisgICBuZWVkZWQuICAqLwor CitzdGF0aWMgb2ZmX3QKK2lucHV0X2ZpbGVfc2l6ZSAoaW50IGZkLCBvZmZfdCBzaXplLCBj aGFyICpidWYsIHNpemVfdCBidWZzaXplKQoreworICBpZiAoc2l6ZSA8IGJ1ZnNpemUpCisg ICAgeworICAgICAgc2l6ZSA9IDA7CisgICAgICB3aGlsZSAodHJ1ZSkKKyAgICAgICAgewor ICAgICAgICAgIHNpemVfdCBzYXZlID0gc2l6ZSA8IGJ1ZnNpemUgPyBzaXplIDogMDsKKyAg ICAgICAgICBzaXplX3Qgbl9yZWFkID0gc2FmZV9yZWFkIChmZCwgYnVmICsgc2F2ZSwgYnVm c2l6ZSAtIHNhdmUpOworICAgICAgICAgIGlmIChuX3JlYWQgPT0gMCkKKyAgICAgICAgICAg IGJyZWFrOworICAgICAgICAgIGlmIChuX3JlYWQgPT0gU0FGRV9SRUFEX0VSUk9SKQorICAg ICAgICAgICAgZXJyb3IgKEVYSVRfRkFJTFVSRSwgZXJybm8sICIlcyIsIGluZmlsZSk7Cisg ICAgICAgICAgc2l6ZSArPSBuX3JlYWQ7CisgICAgICAgIH0KKyAgICAgIGlmIChidWZzaXpl IDw9IHNpemUgJiYgbHNlZWsgKGZkLCAtIHNpemUsIFNFRUtfQ1VSKSA8IDApCisgICAgICAg IGVycm9yIChFWElUX0ZBSUxVUkUsIGVycm5vLCAiJXMiLCBpbmZpbGUpOworICAgIH0KKwor ICByZXR1cm4gc2l6ZTsKK30KKwogLyogQ29tcHV0ZSB0aGUgbmV4dCBzZXF1ZW50aWFsIG91 dHB1dCBmaWxlIG5hbWUgYW5kIHN0b3JlIGl0IGludG8gdGhlCiAgICBzdHJpbmcgJ291dGZp bGUnLiAgKi8KIApAQCAtNTExLDEwICs1NDIsMTMgQEAgY3dyaXRlIChib29sIG5ld19maWxl X2ZsYWcsIGNvbnN0IGNoYXIgKmJwLCBzaXplX3QgYnl0ZXMpCiB9CiAKIC8qIFNwbGl0IGlu dG8gcGllY2VzIG9mIGV4YWN0bHkgTl9CWVRFUyBieXRlcy4KLSAgIFVzZSBidWZmZXIgQlVG LCB3aG9zZSBzaXplIGlzIEJVRlNJWkUuICAqLworICAgVXNlIGJ1ZmZlciBCVUYsIHdob3Nl IHNpemUgaXMgQlVGU0laRS4KKyAgIElmIElOSVRJQUxfUkVBRCAhPSBTSVpFX01BWCwgdGhl IGVudGlyZSBpbnB1dCBmaWxlIGhhcyBhbHJlYWR5IGJlZW4KKyAgIHBhcnRseSByZWFkIGlu dG8gQlVGIGFuZCBCVUYgY29udGFpbnMgSU5JVElBTF9SRUFEIGlucHV0IGJ5dGVzLiAgKi8K IAogc3RhdGljIHZvaWQKLWJ5dGVzX3NwbGl0ICh1aW50bWF4X3Qgbl9ieXRlcywgY2hhciAq YnVmLCBzaXplX3QgYnVmc2l6ZSwgdWludG1heF90IG1heF9maWxlcykKK2J5dGVzX3NwbGl0 ICh1aW50bWF4X3Qgbl9ieXRlcywgY2hhciAqYnVmLCBzaXplX3QgYnVmc2l6ZSwgc2l6ZV90 IGluaXRpYWxfcmVhZCwKKyAgICAgICAgICAgICB1aW50bWF4X3QgbWF4X2ZpbGVzKQogewog ICBzaXplX3Qgbl9yZWFkOwogICBib29sIG5ld19maWxlX2ZsYWcgPSB0cnVlOwpAQCAtNTI1 LDkgKzU1OSwxNyBAQCBieXRlc19zcGxpdCAodWludG1heF90IG5fYnl0ZXMsIGNoYXIgKmJ1 Ziwgc2l6ZV90IGJ1ZnNpemUsIHVpbnRtYXhfdCBtYXhfZmlsZXMpCiAKICAgZG8KICAgICB7 Ci0gICAgICBuX3JlYWQgPSBzYWZlX3JlYWQgKFNURElOX0ZJTEVOTywgYnVmLCBidWZzaXpl KTsKLSAgICAgIGlmIChuX3JlYWQgPT0gU0FGRV9SRUFEX0VSUk9SKQotICAgICAgICBlcnJv ciAoRVhJVF9GQUlMVVJFLCBlcnJubywgIiVzIiwgaW5maWxlKTsKKyAgICAgIGlmIChpbml0 aWFsX3JlYWQgIT0gU0laRV9NQVgpCisgICAgICAgIHsKKyAgICAgICAgICBuX3JlYWQgPSBp bml0aWFsX3JlYWQ7CisgICAgICAgICAgaW5pdGlhbF9yZWFkID0gU0laRV9NQVg7CisgICAg ICAgIH0KKyAgICAgIGVsc2UKKyAgICAgICAgeworICAgICAgICAgIG5fcmVhZCA9IHNhZmVf cmVhZCAoU1RESU5fRklMRU5PLCBidWYsIGJ1ZnNpemUpOworICAgICAgICAgIGlmIChuX3Jl YWQgPT0gU0FGRV9SRUFEX0VSUk9SKQorICAgICAgICAgICAgZXJyb3IgKEVYSVRfRkFJTFVS RSwgZXJybm8sICIlcyIsIGluZmlsZSk7CisgICAgICAgIH0KICAgICAgIGJwX291dCA9IGJ1 ZjsKICAgICAgIHRvX3JlYWQgPSBuX3JlYWQ7CiAgICAgICB3aGlsZSAodHJ1ZSkKQEAgLTcz Niw3ICs3NzgsNyBAQCBsaW5lX2J5dGVzX3NwbGl0ICh1aW50bWF4X3Qgbl9ieXRlcywgY2hh ciAqYnVmLCBzaXplX3QgYnVmc2l6ZSkKIAogc3RhdGljIHZvaWQKIGxpbmVzX2NodW5rX3Nw bGl0ICh1aW50bWF4X3QgaywgdWludG1heF90IG4sIGNoYXIgKmJ1Ziwgc2l6ZV90IGJ1ZnNp emUsCi0gICAgICAgICAgICAgICAgICAgb2ZmX3QgZmlsZV9zaXplKQorICAgICAgICAgICAg ICAgICAgIHNpemVfdCBpbml0aWFsX3JlYWQsIG9mZl90IGZpbGVfc2l6ZSkKIHsKICAgYXNz ZXJ0IChuICYmIGsgPD0gbiAmJiBuIDw9IGZpbGVfc2l6ZSk7CiAKQEAgLTc1MSw3ICs3OTMs MTIgQEAgbGluZXNfY2h1bmtfc3BsaXQgKHVpbnRtYXhfdCBrLCB1aW50bWF4X3QgbiwgY2hh ciAqYnVmLCBzaXplX3QgYnVmc2l6ZSwKICAgICB7CiAgICAgICAvKiBTdGFydCByZWFkaW5n IDEgYnl0ZSBiZWZvcmUga3RoIGNodW5rIG9mIGZpbGUuICAqLwogICAgICAgb2ZmX3Qgc3Rh cnQgPSAoayAtIDEpICogY2h1bmtfc2l6ZSAtIDE7Ci0gICAgICBpZiAobHNlZWsgKFNURElO X0ZJTEVOTywgc3RhcnQsIFNFRUtfQ1VSKSA8IDApCisgICAgICBpZiAoaW5pdGlhbF9yZWFk ICE9IFNJWkVfTUFYKQorICAgICAgICB7CisgICAgICAgICAgbWVtbW92ZSAoYnVmLCBidWYg KyBzdGFydCwgaW5pdGlhbF9yZWFkIC0gc3RhcnQpOworICAgICAgICAgIGluaXRpYWxfcmVh ZCAtPSBzdGFydDsKKyAgICAgICAgfQorICAgICAgZWxzZSBpZiAobHNlZWsgKFNURElOX0ZJ TEVOTywgc3RhcnQsIFNFRUtfQ1VSKSA8IDApCiAgICAgICAgIGVycm9yIChFWElUX0ZBSUxV UkUsIGVycm5vLCAiJXMiLCBpbmZpbGUpOwogICAgICAgbl93cml0dGVuID0gc3RhcnQ7CiAg ICAgICBjaHVua19ubyA9IGsgLSAxOwpAQCAtNzYxLDEwICs4MDgsMTkgQEAgbGluZXNfY2h1 bmtfc3BsaXQgKHVpbnRtYXhfdCBrLCB1aW50bWF4X3QgbiwgY2hhciAqYnVmLCBzaXplX3Qg YnVmc2l6ZSwKICAgd2hpbGUgKG5fd3JpdHRlbiA8IGZpbGVfc2l6ZSkKICAgICB7CiAgICAg ICBjaGFyICpicCA9IGJ1ZiwgKmVvYjsKLSAgICAgIHNpemVfdCBuX3JlYWQgPSBzYWZlX3Jl YWQgKFNURElOX0ZJTEVOTywgYnVmLCBidWZzaXplKTsKLSAgICAgIGlmIChuX3JlYWQgPT0g U0FGRV9SRUFEX0VSUk9SKQotICAgICAgICBlcnJvciAoRVhJVF9GQUlMVVJFLCBlcnJubywg IiVzIiwgaW5maWxlKTsKLSAgICAgIGVsc2UgaWYgKG5fcmVhZCA9PSAwKQorICAgICAgc2l6 ZV90IG5fcmVhZDsKKyAgICAgIGlmIChpbml0aWFsX3JlYWQgIT0gU0laRV9NQVgpCisgICAg ICAgIHsKKyAgICAgICAgICBuX3JlYWQgPSBpbml0aWFsX3JlYWQ7CisgICAgICAgICAgaW5p dGlhbF9yZWFkID0gU0laRV9NQVg7CisgICAgICAgIH0KKyAgICAgIGVsc2UKKyAgICAgICAg eworICAgICAgICAgIG5fcmVhZCA9IHNhZmVfcmVhZCAoU1RESU5fRklMRU5PLCBidWYsIGJ1 ZnNpemUpOworICAgICAgICAgIGlmIChuX3JlYWQgPT0gU0FGRV9SRUFEX0VSUk9SKQorICAg ICAgICAgICAgZXJyb3IgKEVYSVRfRkFJTFVSRSwgZXJybm8sICIlcyIsIGluZmlsZSk7Cisg ICAgICAgIH0KKyAgICAgIGlmIChuX3JlYWQgPT0gMCkKICAgICAgICAgYnJlYWs7IC8qIGVv Zi4gICovCiAgICAgICBuX3JlYWQgPSBNSU4gKG5fcmVhZCwgZmlsZV9zaXplIC0gbl93cml0 dGVuKTsKICAgICAgIGNodW5rX3RydW5jYXRlZCA9IGZhbHNlOwpAQCAtODQxLDcgKzg5Nyw3 IEBAIGxpbmVzX2NodW5rX3NwbGl0ICh1aW50bWF4X3QgaywgdWludG1heF90IG4sIGNoYXIg KmJ1Ziwgc2l6ZV90IGJ1ZnNpemUsCiAKIHN0YXRpYyB2b2lkCiBieXRlc19jaHVua19leHRy YWN0ICh1aW50bWF4X3QgaywgdWludG1heF90IG4sIGNoYXIgKmJ1Ziwgc2l6ZV90IGJ1ZnNp emUsCi0gICAgICAgICAgICAgICAgICAgICBvZmZfdCBmaWxlX3NpemUpCisgICAgICAgICAg ICAgICAgICAgICBzaXplX3QgaW5pdGlhbF9yZWFkLCBvZmZfdCBmaWxlX3NpemUpCiB7CiAg IG9mZl90IHN0YXJ0OwogICBvZmZfdCBlbmQ7CkBAIC04NTEsMTUgKzkwNywyOSBAQCBieXRl c19jaHVua19leHRyYWN0ICh1aW50bWF4X3QgaywgdWludG1heF90IG4sIGNoYXIgKmJ1Ziwg c2l6ZV90IGJ1ZnNpemUsCiAgIHN0YXJ0ID0gKGsgLSAxKSAqIChmaWxlX3NpemUgLyBuKTsK ICAgZW5kID0gKGsgPT0gbikgPyBmaWxlX3NpemUgOiBrICogKGZpbGVfc2l6ZSAvIG4pOwog Ci0gIGlmIChsc2VlayAoU1RESU5fRklMRU5PLCBzdGFydCwgU0VFS19DVVIpIDwgMCkKKyAg aWYgKGluaXRpYWxfcmVhZCAhPSBTSVpFX01BWCkKKyAgICB7CisgICAgICBtZW1tb3ZlIChi dWYsIGJ1ZiArIHN0YXJ0LCBpbml0aWFsX3JlYWQgLSBzdGFydCk7CisgICAgICBpbml0aWFs X3JlYWQgLT0gc3RhcnQ7CisgICAgfQorICBlbHNlIGlmIChsc2VlayAoU1RESU5fRklMRU5P LCBzdGFydCwgU0VFS19DVVIpIDwgMCkKICAgICBlcnJvciAoRVhJVF9GQUlMVVJFLCBlcnJu bywgIiVzIiwgaW5maWxlKTsKIAogICB3aGlsZSAoc3RhcnQgPCBlbmQpCiAgICAgewotICAg ICAgc2l6ZV90IG5fcmVhZCA9IHNhZmVfcmVhZCAoU1RESU5fRklMRU5PLCBidWYsIGJ1ZnNp emUpOwotICAgICAgaWYgKG5fcmVhZCA9PSBTQUZFX1JFQURfRVJST1IpCi0gICAgICAgIGVy cm9yIChFWElUX0ZBSUxVUkUsIGVycm5vLCAiJXMiLCBpbmZpbGUpOwotICAgICAgZWxzZSBp ZiAobl9yZWFkID09IDApCisgICAgICBzaXplX3Qgbl9yZWFkOworICAgICAgaWYgKGluaXRp YWxfcmVhZCAhPSBTSVpFX01BWCkKKyAgICAgICAgeworICAgICAgICAgIG5fcmVhZCA9IGlu aXRpYWxfcmVhZDsKKyAgICAgICAgICBpbml0aWFsX3JlYWQgPSBTSVpFX01BWDsKKyAgICAg ICAgfQorICAgICAgZWxzZQorICAgICAgICB7CisgICAgICAgICAgbl9yZWFkID0gc2FmZV9y ZWFkIChTVERJTl9GSUxFTk8sIGJ1ZiwgYnVmc2l6ZSk7CisgICAgICAgICAgaWYgKG5fcmVh ZCA9PSBTQUZFX1JFQURfRVJST1IpCisgICAgICAgICAgICBlcnJvciAoRVhJVF9GQUlMVVJF LCBlcnJubywgIiVzIiwgaW5maWxlKTsKKyAgICAgICAgfQorICAgICAgaWYgKG5fcmVhZCA9 PSAwKQogICAgICAgICBicmVhazsgLyogZW9mLiAgKi8KICAgICAgIG5fcmVhZCA9IE1JTiAo bl9yZWFkLCBlbmQgLSBzdGFydCk7CiAgICAgICBpZiAoZnVsbF93cml0ZSAoU1RET1VUX0ZJ TEVOTywgYnVmLCBuX3JlYWQpICE9IG5fcmVhZApAQCAtMTQwMywyMiArMTQ3MywzNCBAQCBt YWluIChpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiAgIGlmIChpbl9ibGtfc2l6ZSA9PSAwKQog ICAgIGluX2Jsa19zaXplID0gaW9fYmxrc2l6ZSAoaW5fc3RhdF9idWYpOwogCisgIHZvaWQg KmIgPSB4bWFsbG9jIChpbl9ibGtfc2l6ZSArIDEgKyBwYWdlX3NpemUgLSAxKTsKKyAgY2hh ciAqYnVmID0gcHRyX2FsaWduIChiLCBwYWdlX3NpemUpOworICBzaXplX3QgaW5pdGlhbF9y ZWFkID0gU0laRV9NQVg7CisKICAgaWYgKHNwbGl0X3R5cGUgPT0gdHlwZV9jaHVua19ieXRl cyB8fCBzcGxpdF90eXBlID09IHR5cGVfY2h1bmtfbGluZXMpCiAgICAgewogICAgICAgb2Zm X3QgaW5wdXRfb2Zmc2V0ID0gbHNlZWsgKFNURElOX0ZJTEVOTywgMCwgU0VFS19DVVIpOwot ICAgICAgaWYgKHVzYWJsZV9zdF9zaXplICgmaW5fc3RhdF9idWYpKQotICAgICAgICBmaWxl X3NpemUgPSBpbl9zdGF0X2J1Zi5zdF9zaXplOwotICAgICAgZWxzZSBpZiAoMCA8PSBpbnB1 dF9vZmZzZXQpCisgICAgICBpZiAoMCA8PSBpbnB1dF9vZmZzZXQpCiAgICAgICAgIHsKLSAg ICAgICAgICBmaWxlX3NpemUgPSBsc2VlayAoU1RESU5fRklMRU5PLCAwLCBTRUVLX0VORCk7 Ci0gICAgICAgICAgaW5wdXRfb2Zmc2V0ID0gKGZpbGVfc2l6ZSA8IDAKLSAgICAgICAgICAg ICAgICAgICAgICAgICAgPyBmaWxlX3NpemUKLSAgICAgICAgICAgICAgICAgICAgICAgICAg OiBsc2VlayAoU1RESU5fRklMRU5PLCBpbnB1dF9vZmZzZXQsIFNFRUtfU0VUKSk7CisgICAg ICAgICAgaWYgKHVzYWJsZV9zdF9zaXplICgmaW5fc3RhdF9idWYpKQorICAgICAgICAgICAg eworICAgICAgICAgICAgICBmaWxlX3NpemUgPSBpbnB1dF9maWxlX3NpemUgKFNURElOX0ZJ TEVOTywgaW5fc3RhdF9idWYuc3Rfc2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBidWYsIGluX2Jsa19zaXplKTsKKyAgICAgICAgICAgICAgaWYg KGZpbGVfc2l6ZSA8IGluX2Jsa19zaXplKQorICAgICAgICAgICAgICAgIGluaXRpYWxfcmVh ZCA9IGZpbGVfc2l6ZTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICBlbHNlCisgICAgICAg ICAgICB7CisgICAgICAgICAgICAgIGZpbGVfc2l6ZSA9IGxzZWVrIChTVERJTl9GSUxFTk8s IDAsIFNFRUtfRU5EKTsKKyAgICAgICAgICAgICAgaW5wdXRfb2Zmc2V0ID0gKGZpbGVfc2l6 ZSA8IDAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgID8gZmlsZV9zaXplCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICA6IGxzZWVrIChTVERJTl9GSUxFTk8sIGlucHV0 X29mZnNldCwgU0VFS19TRVQpKTsKKyAgICAgICAgICAgICAgZmlsZV9zaXplIC09IGlucHV0 X29mZnNldDsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQogICAgICAgaWYgKGlucHV0X29m ZnNldCA8IDApCiAgICAgICAgIGVycm9yIChFWElUX0ZBSUxVUkUsIDAsIF8oIiVzOiBjYW5u b3QgZGV0ZXJtaW5lIGZpbGUgc2l6ZSIpLAogICAgICAgICAgICAgICAgcXVvdGUgKGluZmls ZSkpOwotICAgICAgZmlsZV9zaXplIC09IGlucHV0X29mZnNldDsKICAgICAgIC8qIE92ZXJm bG93LCBhbmQgc2FuaXR5IGNoZWNraW5nLiAgKi8KICAgICAgIGlmIChPRkZfVF9NQVggPCBu X3VuaXRzKQogICAgICAgICB7CkBAIC0xNDMxLDkgKzE1MTMsNiBAQCBtYWluIChpbnQgYXJn YywgY2hhciAqKmFyZ3YpCiAgICAgICBmaWxlX3NpemUgPSBNQVggKGZpbGVfc2l6ZSwgbl91 bml0cyk7CiAgICAgfQogCi0gIHZvaWQgKmIgPSB4bWFsbG9jIChpbl9ibGtfc2l6ZSArIDEg KyBwYWdlX3NpemUgLSAxKTsKLSAgY2hhciAqYnVmID0gcHRyX2FsaWduIChiLCBwYWdlX3Np emUpOwotCiAgIC8qIFdoZW4gZmlsdGVyaW5nLCBjbG9zdXJlIG9mIG9uZSBwaXBlIG11c3Qg bm90IHRlcm1pbmF0ZSB0aGUgcHJvY2VzcywKICAgICAgYXMgdGhlcmUgbWF5IHN0aWxsIGJl IG90aGVyIHN0cmVhbXMgZXhwZWN0aW5nIGlucHV0IGZyb20gdXMuICAqLwogICBpZiAoZmls dGVyX2NvbW1hbmQpCkBAIC0xNDU0LDcgKzE1MzMsNyBAQCBtYWluIChpbnQgYXJnYywgY2hh ciAqKmFyZ3YpCiAgICAgICBicmVhazsKIAogICAgIGNhc2UgdHlwZV9ieXRlczoKLSAgICAg IGJ5dGVzX3NwbGl0IChuX3VuaXRzLCBidWYsIGluX2Jsa19zaXplLCAwKTsKKyAgICAgIGJ5 dGVzX3NwbGl0IChuX3VuaXRzLCBidWYsIGluX2Jsa19zaXplLCBTSVpFX01BWCwgMCk7CiAg ICAgICBicmVhazsKIAogICAgIGNhc2UgdHlwZV9ieXRlc2xpbmVzOgpAQCAtMTQ2MywxMyAr MTU0MiwxNiBAQCBtYWluIChpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiAKICAgICBjYXNlIHR5 cGVfY2h1bmtfYnl0ZXM6CiAgICAgICBpZiAoa191bml0cyA9PSAwKQotICAgICAgICBieXRl c19zcGxpdCAoZmlsZV9zaXplIC8gbl91bml0cywgYnVmLCBpbl9ibGtfc2l6ZSwgbl91bml0 cyk7CisgICAgICAgIGJ5dGVzX3NwbGl0IChmaWxlX3NpemUgLyBuX3VuaXRzLCBidWYsIGlu X2Jsa19zaXplLCBpbml0aWFsX3JlYWQsCisgICAgICAgICAgICAgICAgICAgICBuX3VuaXRz KTsKICAgICAgIGVsc2UKLSAgICAgICAgYnl0ZXNfY2h1bmtfZXh0cmFjdCAoa191bml0cywg bl91bml0cywgYnVmLCBpbl9ibGtfc2l6ZSwgZmlsZV9zaXplKTsKKyAgICAgICAgYnl0ZXNf Y2h1bmtfZXh0cmFjdCAoa191bml0cywgbl91bml0cywgYnVmLCBpbl9ibGtfc2l6ZSwgaW5p dGlhbF9yZWFkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlX3NpemUpOwog ICAgICAgYnJlYWs7CiAKICAgICBjYXNlIHR5cGVfY2h1bmtfbGluZXM6Ci0gICAgICBsaW5l c19jaHVua19zcGxpdCAoa191bml0cywgbl91bml0cywgYnVmLCBpbl9ibGtfc2l6ZSwgZmls ZV9zaXplKTsKKyAgICAgIGxpbmVzX2NodW5rX3NwbGl0IChrX3VuaXRzLCBuX3VuaXRzLCBi dWYsIGluX2Jsa19zaXplLCBpbml0aWFsX3JlYWQsCisgICAgICAgICAgICAgICAgICAgICAg ICAgZmlsZV9zaXplKTsKICAgICAgIGJyZWFrOwogCiAgICAgY2FzZSB0eXBlX3JyOgpkaWZm IC0tZ2l0IGEvc3JjL3RhYy5jIGIvc3JjL3RhYy5jCmluZGV4IDE5MmRiZDMuLjI0OGFmYTkg MTAwNjQ0Ci0tLSBhL3NyYy90YWMuYworKysgYi9zcmMvdGFjLmMKQEAgLTE4NywxMCArMTg3 LDExIEBAIG91dHB1dCAoY29uc3QgY2hhciAqc3RhcnQsIGNvbnN0IGNoYXIgKnBhc3RfZW5k KQogfQogCiAvKiBQcmludCBpbiByZXZlcnNlIHRoZSBmaWxlIG9wZW4gb24gZGVzY3JpcHRv ciBGRCBmb3IgcmVhZGluZyBGSUxFLgorICAgVGhlIGZpbGUgaXMgYWxyZWFkeSBwb3NpdGlv bmVkIGF0IEZJTEVfUE9TLCB3aGljaCBzaG91bGQgYmUgbmVhciBpdHMgZW5kLgogICAgUmV0 dXJuIHRydWUgaWYgc3VjY2Vzc2Z1bC4gICovCiAKIHN0YXRpYyBib29sCi10YWNfc2Vla2Fi bGUgKGludCBpbnB1dF9mZCwgY29uc3QgY2hhciAqZmlsZSkKK3RhY19zZWVrYWJsZSAoaW50 IGlucHV0X2ZkLCBjb25zdCBjaGFyICpmaWxlLCBvZmZfdCBmaWxlX3BvcykKIHsKICAgLyog UG9pbnRlciB0byB0aGUgbG9jYXRpb24gaW4gJ0dfYnVmZmVyJyB3aGVyZSB0aGUgc2VhcmNo IGZvcgogICAgICB0aGUgbmV4dCBzZXBhcmF0b3Igd2lsbCBiZWdpbi4gKi8KQEAgLTIwMyw5 ICsyMDQsNiBAQCB0YWNfc2Vla2FibGUgKGludCBpbnB1dF9mZCwgY29uc3QgY2hhciAqZmls ZSkKICAgLyogTGVuZ3RoIG9mIHRoZSByZWNvcmQgZ3Jvd2luZyBpbiAnR19idWZmZXInLiAq LwogICBzaXplX3Qgc2F2ZWRfcmVjb3JkX3NpemU7CiAKLSAgLyogT2Zmc2V0IGluIHRoZSBm aWxlIG9mIHRoZSBuZXh0IHJlYWQuICovCi0gIG9mZl90IGZpbGVfcG9zOwotCiAgIC8qIFRy dWUgaWYgJ291dHB1dCcgaGFzIG5vdCBiZWVuIGNhbGxlZCB5ZXQgZm9yIGFueSBmaWxlLgog ICAgICBPbmx5IHVzZWQgd2hlbiB0aGUgc2VwYXJhdG9yIGlzIGF0dGFjaGVkIHRvIHRoZSBw cmVjZWRpbmcgcmVjb3JkLiAqLwogICBib29sIGZpcnN0X3RpbWUgPSB0cnVlOwpAQCAtMjEz LDI3ICsyMTEsNDMgQEAgdGFjX3NlZWthYmxlIChpbnQgaW5wdXRfZmQsIGNvbnN0IGNoYXIg KmZpbGUpCiAgIGNoYXIgY29uc3QgKnNlcGFyYXRvcjEgPSBzZXBhcmF0b3IgKyAxOyAvKiBT cGVlZCBvcHRpbWl6YXRpb24sIG5vbi1yZWdleHAuICovCiAgIHNpemVfdCBtYXRjaF9sZW5n dGgxID0gbWF0Y2hfbGVuZ3RoIC0gMTsgLyogU3BlZWQgb3B0aW1pemF0aW9uLCBub24tcmVn ZXhwLiAqLwogCi0gIC8qIEZpbmQgdGhlIHNpemUgb2YgdGhlIGlucHV0IGZpbGUuICovCi0g IGZpbGVfcG9zID0gbHNlZWsgKGlucHV0X2ZkLCAwLCBTRUVLX0VORCk7Ci0gIGlmIChmaWxl X3BvcyA8IDEpCi0gICAgcmV0dXJuIHRydWU7CQkJLyogSXQncyBhbiBlbXB0eSBmaWxlLiAq LwotCiAgIC8qIEFycmFuZ2UgZm9yIHRoZSBmaXJzdCByZWFkIHRvIGxvcCBvZmYgZW5vdWdo IHRvIGxlYXZlIHRoZSByZXN0IG9mIHRoZQogICAgICBmaWxlIGEgbXVsdGlwbGUgb2YgJ3Jl YWRfc2l6ZScuICBTaW5jZSAncmVhZF9zaXplJyBjYW4gY2hhbmdlLCB0aGlzIG1heQogICAg ICBub3QgYWx3YXlzIGhvbGQgZHVyaW5nIHRoZSBwcm9ncmFtIHJ1biwgYnV0IHNpbmNlIGl0 IHVzdWFsbHkgd2lsbCwgbGVhdmUKICAgICAgaXQgaGVyZSBmb3IgaS9vIGVmZmljaWVuY3kg KHBhZ2Uvc2VjdG9yIGJvdW5kYXJpZXMgYW5kIGFsbCB0aGF0KS4KICAgICAgTm90ZTogdGhl IGVmZmljaWVuY3kgZ2FpbiBoYXMgbm90IGJlZW4gdmVyaWZpZWQuICovCi0gIHNhdmVkX3Jl Y29yZF9zaXplID0gZmlsZV9wb3MgJSByZWFkX3NpemU7Ci0gIGlmIChzYXZlZF9yZWNvcmRf c2l6ZSA9PSAwKQotICAgIHNhdmVkX3JlY29yZF9zaXplID0gcmVhZF9zaXplOwotICBmaWxl X3BvcyAtPSBzYXZlZF9yZWNvcmRfc2l6ZTsKLSAgLyogJ2ZpbGVfcG9zJyBub3cgcG9pbnRz IHRvIHRoZSBzdGFydCBvZiB0aGUgbGFzdCAocHJvYmFibHkgcGFydGlhbCkgYmxvY2sKLSAg ICAgaW4gdGhlIGlucHV0IGZpbGUuICovCisgIHNpemVfdCByZW1haW5kZXIgPSBmaWxlX3Bv cyAlIHJlYWRfc2l6ZTsKKyAgaWYgKHJlbWFpbmRlciAhPSAwKQorICAgIHsKKyAgICAgIGZp bGVfcG9zIC09IHJlbWFpbmRlcjsKKyAgICAgIGlmIChsc2VlayAoaW5wdXRfZmQsIGZpbGVf cG9zLCBTRUVLX1NFVCkgPCAwKQorICAgICAgICBlcnJvciAoMCwgZXJybm8sIF8oIiVzOiBz ZWVrIGZhaWxlZCIpLCBxdW90ZWFyZ19jb2xvbiAoZmlsZSkpOworICAgIH0KIAotICBpZiAo bHNlZWsgKGlucHV0X2ZkLCBmaWxlX3BvcywgU0VFS19TRVQpIDwgMCkKLSAgICBlcnJvciAo MCwgZXJybm8sIF8oIiVzOiBzZWVrIGZhaWxlZCIpLCBxdW90ZWFyZ19jb2xvbiAoZmlsZSkp OworICAvKiBTY2FuIGJhY2t3YXJkLCBsb29raW5nIGZvciBlbmQgb2YgZmlsZS4gIFRoaXMg Y2F0ZXJzIHRvIHByb2MtbGlrZQorICAgICBmaWxlIHN5c3RlbXMgd2hlcmUgdGhlIGZpbGUg c2l6ZSBpcyBqdXN0IGFuIGVzdGltYXRlLiAgKi8KKyAgd2hpbGUgKChzYXZlZF9yZWNvcmRf c2l6ZSA9IHNhZmVfcmVhZCAoaW5wdXRfZmQsIEdfYnVmZmVyLCByZWFkX3NpemUpKSA9PSAw CisgICAgICAgICAmJiBmaWxlX3BvcyAhPSAwKQorICAgIHsKKyAgICAgIG9mZl90IHJzaXpl ID0gcmVhZF9zaXplOworICAgICAgaWYgKGxzZWVrIChpbnB1dF9mZCwgLXJzaXplLCBTRUVL X0NVUikgPCAwKQorICAgICAgICBlcnJvciAoMCwgZXJybm8sIF8oIiVzOiBzZWVrIGZhaWxl ZCIpLCBxdW90ZWFyZ19jb2xvbiAoZmlsZSkpOworICAgICAgZmlsZV9wb3MgLT0gcmVhZF9z aXplOworICAgIH0KIAotICBpZiAoc2FmZV9yZWFkIChpbnB1dF9mZCwgR19idWZmZXIsIHNh dmVkX3JlY29yZF9zaXplKSAhPSBzYXZlZF9yZWNvcmRfc2l6ZSkKKyAgLyogTm93IHNjYW4g Zm9yd2FyZCwgbG9va2luZyBmb3IgZW5kIG9mIGZpbGUuICAqLworICB3aGlsZSAoc2F2ZWRf cmVjb3JkX3NpemUgPT0gcmVhZF9zaXplKQorICAgIHsKKyAgICAgIHNpemVfdCBucmVhZCA9 IHNhZmVfcmVhZCAoaW5wdXRfZmQsIEdfYnVmZmVyLCByZWFkX3NpemUpOworICAgICAgaWYg KG5yZWFkID09IDApCisgICAgICAgIGJyZWFrOworICAgICAgc2F2ZWRfcmVjb3JkX3NpemUg PSBucmVhZDsKKyAgICAgIGlmIChzYXZlZF9yZWNvcmRfc2l6ZSA9PSBTQUZFX1JFQURfRVJS T1IpCisgICAgICAgIGJyZWFrOworICAgICAgZmlsZV9wb3MgKz0gbnJlYWQ7CisgICAgfQor CisgIGlmIChzYXZlZF9yZWNvcmRfc2l6ZSA9PSBTQUZFX1JFQURfRVJST1IpCiAgICAgewog ICAgICAgZXJyb3IgKDAsIGVycm5vLCBfKCIlczogcmVhZCBlcnJvciIpLCBxdW90ZWFyZ19j b2xvbiAoZmlsZSkpOwogICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtNDg1LDE1ICs0OTksMTYg QEAgdGVtcF9zdHJlYW0gKEZJTEUgKipmcCwgY2hhciAqKmZpbGVfbmFtZSkKIAogLyogQ29w eSBmcm9tIGZpbGUgZGVzY3JpcHRvciBJTlBVVF9GRCAoY29ycmVzcG9uZGluZyB0byB0aGUg bmFtZWQgRklMRSkgdG8KICAgIGEgdGVtcG9yYXJ5IGZpbGUsIGFuZCBzZXQgKkdfVE1QIGFu ZCAqR19URU1QRklMRSB0byB0aGUgcmVzdWx0aW5nIHN0cmVhbQotICAgYW5kIGZpbGUgbmFt ZS4gIFJldHVybiB0cnVlIGlmIHN1Y2Nlc3NmdWwuICAqLworICAgYW5kIGZpbGUgbmFtZS4g IFJldHVybiB0aGUgbnVtYmVyIG9mIGJ5dGVzIGNvcGllZCwgb3IgLTEgb24gZXJyb3IuICAq LwogCi1zdGF0aWMgYm9vbAorc3RhdGljIG9mZl90CiBjb3B5X3RvX3RlbXAgKEZJTEUgKipn X3RtcCwgY2hhciAqKmdfdGVtcGZpbGUsIGludCBpbnB1dF9mZCwgY2hhciBjb25zdCAqZmls ZSkKIHsKICAgRklMRSAqZnA7CiAgIGNoYXIgKmZpbGVfbmFtZTsKKyAgb2ZmX3QgYnl0ZXNf Y29waWVkID0gMDsKICAgaWYgKCF0ZW1wX3N0cmVhbSAoJmZwLCAmZmlsZV9uYW1lKSkKLSAg ICByZXR1cm4gZmFsc2U7CisgICAgcmV0dXJuIC0xOwogCiAgIHdoaWxlICgxKQogICAgIHsK QEAgLTUxMSw2ICs1MjYsOCBAQCBjb3B5X3RvX3RlbXAgKEZJTEUgKipnX3RtcCwgY2hhciAq KmdfdGVtcGZpbGUsIGludCBpbnB1dF9mZCwgY2hhciBjb25zdCAqZmlsZSkKICAgICAgICAg ICBlcnJvciAoMCwgZXJybm8sIF8oIiVzOiB3cml0ZSBlcnJvciIpLCBxdW90ZWFyZ19jb2xv biAoZmlsZV9uYW1lKSk7CiAgICAgICAgICAgZ290byBGYWlsOwogICAgICAgICB9CisKKyAg ICAgIGJ5dGVzX2NvcGllZCArPSBieXRlc19yZWFkOwogICAgIH0KIAogICBpZiAoZmZsdXNo IChmcCkgIT0gMCkKQEAgLTUyMSwxMSArNTM4LDExIEBAIGNvcHlfdG9fdGVtcCAoRklMRSAq KmdfdG1wLCBjaGFyICoqZ190ZW1wZmlsZSwgaW50IGlucHV0X2ZkLCBjaGFyIGNvbnN0ICpm aWxlKQogCiAgICpnX3RtcCA9IGZwOwogICAqZ190ZW1wZmlsZSA9IGZpbGVfbmFtZTsKLSAg cmV0dXJuIHRydWU7CisgIHJldHVybiBieXRlc19jb3BpZWQ7CiAKICBGYWlsOgogICBmY2xv c2UgKGZwKTsKLSAgcmV0dXJuIGZhbHNlOworICByZXR1cm4gLTE7CiB9CiAKIC8qIENvcHkg SU5QVVRfRkQgdG8gYSB0ZW1wb3JhcnksIHRoZW4gdGFjIHRoYXQgZmlsZS4KQEAgLTUzNiwx MCArNTUzLDExIEBAIHRhY19ub25zZWVrYWJsZSAoaW50IGlucHV0X2ZkLCBjb25zdCBjaGFy ICpmaWxlKQogewogICBGSUxFICp0bXBfc3RyZWFtOwogICBjaGFyICp0bXBfZmlsZTsKLSAg aWYgKCFjb3B5X3RvX3RlbXAgKCZ0bXBfc3RyZWFtLCAmdG1wX2ZpbGUsIGlucHV0X2ZkLCBm aWxlKSkKKyAgb2ZmX3QgYnl0ZXNfY29waWVkID0gY29weV90b190ZW1wICgmdG1wX3N0cmVh bSwgJnRtcF9maWxlLCBpbnB1dF9mZCwgZmlsZSk7CisgIGlmIChieXRlc19jb3BpZWQgPCAw KQogICAgIHJldHVybiBmYWxzZTsKIAotICBib29sIG9rID0gdGFjX3NlZWthYmxlIChmaWxl bm8gKHRtcF9zdHJlYW0pLCB0bXBfZmlsZSk7CisgIGJvb2wgb2sgPSB0YWNfc2Vla2FibGUg KGZpbGVubyAodG1wX3N0cmVhbSksIHRtcF9maWxlLCBieXRlc19jb3BpZWQpOwogICByZXR1 cm4gb2s7CiB9CiAKQEAgLTU3OCw3ICs1OTYsNyBAQCB0YWNfZmlsZSAoY29uc3QgY2hhciAq ZmlsZW5hbWUpCiAKICAgb2sgPSAoZmlsZV9zaXplIDwgMCB8fCBpc2F0dHkgKGZkKQogICAg ICAgICA/IHRhY19ub25zZWVrYWJsZSAoZmQsIGZpbGVuYW1lKQotICAgICAgICA6IHRhY19z ZWVrYWJsZSAoZmQsIGZpbGVuYW1lKSk7CisgICAgICAgIDogdGFjX3NlZWthYmxlIChmZCwg ZmlsZW5hbWUsIGZpbGVfc2l6ZSkpOwogCiAgIGlmICghaXNfc3RkaW4gJiYgY2xvc2UgKGZk KSAhPSAwKQogICAgIHsKZGlmZiAtLWdpdCBhL3NyYy90YWlsLmMgYi9zcmMvdGFpbC5jCmlu ZGV4IGY1ZDI1ODUuLjRjNWY5NDMgMTAwNjQ0Ci0tLSBhL3NyYy90YWlsLmMKKysrIGIvc3Jj L3RhaWwuYwpAQCAtNDAsNiArNDAsNyBAQAogI2luY2x1ZGUgInBvc2l4dmVyLmgiCiAjaW5j bHVkZSAicXVvdGUuaCIKICNpbmNsdWRlICJzYWZlLXJlYWQuaCIKKyNpbmNsdWRlICJzdGF0 LXNpemUuaCIKICNpbmNsdWRlICJzdGF0LXRpbWUuaCIKICNpbmNsdWRlICJ4ZnJlb3Blbi5o IgogI2luY2x1ZGUgInhuYW5vc2xlZXAuaCIKQEAgLTE2NjUsNDAgKzE2NjYsMzAgQEAgdGFp bF9ieXRlcyAoY29uc3QgY2hhciAqcHJldHR5X2ZpbGVuYW1lLCBpbnQgZmQsIHVpbnRtYXhf dCBuX2J5dGVzLAogICAgICAgICAgIGlmICh0KQogICAgICAgICAgICAgcmV0dXJuIHQgPCAw OwogICAgICAgICB9Ci0gICAgICAqcmVhZF9wb3MgKz0gZHVtcF9yZW1haW5kZXIgKHByZXR0 eV9maWxlbmFtZSwgZmQsIENPUFlfVE9fRU9GKTsKKyAgICAgIG5fYnl0ZXMgPSBDT1BZX1RP X0VPRjsKICAgICB9CiAgIGVsc2UKICAgICB7Ci0gICAgICBpZiAoICEgcHJlc3VtZV9pbnB1 dF9waXBlCi0gICAgICAgICAgICYmIFNfSVNSRUcgKHN0YXRzLnN0X21vZGUpICYmIG5fYnl0 ZXMgPD0gT0ZGX1RfTUFYKQorICAgICAgb2ZmX3QgZW5kX3BvcyA9ICgoISBwcmVzdW1lX2lu cHV0X3BpcGUgJiYgdXNhYmxlX3N0X3NpemUgKCZzdGF0cykKKyAgICAgICAgICAgICAgICAg ICAgICAgICYmIG5fYnl0ZXMgPD0gT0ZGX1RfTUFYKQorICAgICAgICAgICAgICAgICAgICAg ICA/IHN0YXRzLnN0X3NpemUgOiAtMSk7CisgICAgICBpZiAoZW5kX3BvcyA8PSBTVF9CTEtT SVpFIChzdGF0cykpCisgICAgICAgIHJldHVybiBwaXBlX2J5dGVzIChwcmV0dHlfZmlsZW5h bWUsIGZkLCBuX2J5dGVzLCByZWFkX3Bvcyk7CisgICAgICBvZmZfdCBjdXJyZW50X3BvcyA9 IHhsc2VlayAoZmQsIDAsIFNFRUtfQ1VSLCBwcmV0dHlfZmlsZW5hbWUpOworICAgICAgaWYg KGN1cnJlbnRfcG9zIDwgZW5kX3BvcykKICAgICAgICAgewotICAgICAgICAgIG9mZl90IGN1 cnJlbnRfcG9zID0geGxzZWVrIChmZCwgMCwgU0VFS19DVVIsIHByZXR0eV9maWxlbmFtZSk7 Ci0gICAgICAgICAgb2ZmX3QgZW5kX3BvcyA9IHhsc2VlayAoZmQsIDAsIFNFRUtfRU5ELCBw cmV0dHlfZmlsZW5hbWUpOwotICAgICAgICAgIG9mZl90IGRpZmYgPSBlbmRfcG9zIC0gY3Vy cmVudF9wb3M7Ci0gICAgICAgICAgLyogQmUgY2FyZWZ1bCBoZXJlLiAgVGhlIGN1cnJlbnQg cG9zaXRpb24gbWF5IGFjdHVhbGx5IGJlCi0gICAgICAgICAgICAgYmV5b25kIHRoZSBlbmQg b2YgdGhlIGZpbGUuICAqLwotICAgICAgICAgIG9mZl90IGJ5dGVzX3JlbWFpbmluZyA9IGRp ZmYgPCAwID8gMCA6IGRpZmY7Ci0gICAgICAgICAgb2ZmX3QgbmIgPSBuX2J5dGVzOwotCi0g ICAgICAgICAgaWYgKGJ5dGVzX3JlbWFpbmluZyA8PSBuYikKLSAgICAgICAgICAgIHsKLSAg ICAgICAgICAgICAgLyogRnJvbSB0aGUgY3VycmVudCBwb3NpdGlvbiB0byBlbmQgb2YgZmls ZSwgdGhlcmUgYXJlIG5vCi0gICAgICAgICAgICAgICAgIG1vcmUgYnl0ZXMgdGhhbiBoYXZl IGJlZW4gcmVxdWVzdGVkLiAgU28gcmVwb3NpdGlvbiB0aGUKLSAgICAgICAgICAgICAgICAg ZmlsZSBwb2ludGVyIHRvIHRoZSBpbmNvbWluZyBjdXJyZW50IHBvc2l0aW9uIGFuZCBwcmlu dAotICAgICAgICAgICAgICAgICBldmVyeXRoaW5nIGFmdGVyIHRoYXQuICAqLwotICAgICAg ICAgICAgICAqcmVhZF9wb3MgPSB4bHNlZWsgKGZkLCBjdXJyZW50X3BvcywgU0VFS19TRVQs IHByZXR0eV9maWxlbmFtZSk7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgZWxzZQorICAg ICAgICAgIG9mZl90IGJ5dGVzX3JlbWFpbmluZyA9IGVuZF9wb3MgLSBjdXJyZW50X3BvczsK KworICAgICAgICAgIGlmIChuX2J5dGVzIDwgYnl0ZXNfcmVtYWluaW5nKQogICAgICAgICAg ICAgewotICAgICAgICAgICAgICAvKiBUaGVyZSBhcmUgbW9yZSBieXRlcyByZW1haW5pbmcg dGhhbiB3ZXJlIHJlcXVlc3RlZC4KLSAgICAgICAgICAgICAgICAgQmFjayB1cC4gICovCi0g ICAgICAgICAgICAgICpyZWFkX3BvcyA9IHhsc2VlayAoZmQsIC1uYiwgU0VFS19FTkQsIHBy ZXR0eV9maWxlbmFtZSk7CisgICAgICAgICAgICAgIGN1cnJlbnRfcG9zID0gZW5kX3BvcyAt IG5fYnl0ZXM7CisgICAgICAgICAgICAgIHhsc2VlayAoZmQsIGN1cnJlbnRfcG9zLCBTRUVL X1NFVCwgcHJldHR5X2ZpbGVuYW1lKTsKICAgICAgICAgICAgIH0KLSAgICAgICAgICAqcmVh ZF9wb3MgKz0gZHVtcF9yZW1haW5kZXIgKHByZXR0eV9maWxlbmFtZSwgZmQsIG5fYnl0ZXMp OwogICAgICAgICB9Ci0gICAgICBlbHNlCi0gICAgICAgIHJldHVybiBwaXBlX2J5dGVzIChw cmV0dHlfZmlsZW5hbWUsIGZkLCBuX2J5dGVzLCByZWFkX3Bvcyk7CisgICAgICAqcmVhZF9w b3MgPSBjdXJyZW50X3BvczsKICAgICB9CisKKyAgKnJlYWRfcG9zICs9IGR1bXBfcmVtYWlu ZGVyIChwcmV0dHlfZmlsZW5hbWUsIGZkLCBuX2J5dGVzKTsKICAgcmV0dXJuIHRydWU7CiB9 CiAKZGlmZiAtLWdpdCBhL3NyYy93Yy5jIGIvc3JjL3djLmMKaW5kZXggMWZmMDA3ZC4uMjQw NjlmNyAxMDA2NDQKLS0tIGEvc3JjL3djLmMKKysrIGIvc3JjL3djLmMKQEAgLTE4NCw5ICsx ODQsMTAgQEAgd3JpdGVfY291bnRzICh1aW50bWF4X3QgbGluZXMsCiAKIC8qIENvdW50IHdv cmRzLiAgRklMRV9YIGlzIHRoZSBuYW1lIG9mIHRoZSBmaWxlIChvciBOVUxMIGZvciBzdGFu ZGFyZAogICAgaW5wdXQpIHRoYXQgaXMgb3BlbiBvbiBkZXNjcmlwdG9yIEZELiAgKkZTVEFU VVMgaXMgaXRzIHN0YXR1cy4KKyAgIENVUlJFTlRfUE9TIGlzIHRoZSBjdXJyZW50IGZpbGUg b2Zmc2V0IGlmIGtub3duLCBuZWdhdGl2ZSBpZiB1bmtub3duLgogICAgUmV0dXJuIHRydWUg aWYgc3VjY2Vzc2Z1bC4gICovCiBzdGF0aWMgYm9vbAotd2MgKGludCBmZCwgY2hhciBjb25z dCAqZmlsZV94LCBzdHJ1Y3QgZnN0YXR1cyAqZnN0YXR1cykKK3djIChpbnQgZmQsIGNoYXIg Y29uc3QgKmZpbGVfeCwgc3RydWN0IGZzdGF0dXMgKmZzdGF0dXMsIG9mZl90IGN1cnJlbnRf cG9zKQogewogICBib29sIG9rID0gdHJ1ZTsKICAgY2hhciBidWZbQlVGRkVSX1NJWkUgKyAx XTsKQEAgLTIyOSwzMiArMjMwLDM0IEBAIHdjIChpbnQgZmQsIGNoYXIgY29uc3QgKmZpbGVf eCwgc3RydWN0IGZzdGF0dXMgKmZzdGF0dXMpCiAKICAgaWYgKGNvdW50X2J5dGVzICYmICFj b3VudF9jaGFycyAmJiAhcHJpbnRfbGluZXMgJiYgIWNvdW50X2NvbXBsaWNhdGVkKQogICAg IHsKLSAgICAgIG9mZl90IGN1cnJlbnRfcG9zLCBlbmRfcG9zOwotCiAgICAgICBpZiAoMCA8 IGZzdGF0dXMtPmZhaWxlZCkKICAgICAgICAgZnN0YXR1cy0+ZmFpbGVkID0gZnN0YXQgKGZk LCAmZnN0YXR1cy0+c3QpOwogCi0gICAgICBpZiAoISBmc3RhdHVzLT5mYWlsZWQgJiYgU19J U1JFRyAoZnN0YXR1cy0+c3Quc3RfbW9kZSkKLSAgICAgICAgICAmJiAoY3VycmVudF9wb3Mg PSBsc2VlayAoZmQsIDAsIFNFRUtfQ1VSKSkgIT0gLTEKLSAgICAgICAgICAmJiAoZW5kX3Bv cyA9IGxzZWVrIChmZCwgMCwgU0VFS19FTkQpKSAhPSAtMSkKKyAgICAgIC8qIEZvciBzaXpl ZCBmaWxlcywgc2VlayB0byBvbmUgYnVmZmVyIGJlZm9yZSBFT0YgcmF0aGVyIHRoYW4gdG8g RU9GLgorICAgICAgICAgVGhpcyB3b3JrcyBiZXR0ZXIgZm9yIGZpbGVzIGluIHByb2MtbGlr ZSBmaWxlIHN5c3RlbXMgd2hlcmUKKyAgICAgICAgIHRoZSBzaXplIGlzIG9ubHkgYXBwcm94 aW1hdGUuICAqLworICAgICAgaWYgKCEgZnN0YXR1cy0+ZmFpbGVkICYmIHVzYWJsZV9zdF9z aXplICgmZnN0YXR1cy0+c3QpCisgICAgICAgICAgJiYgMCA8PSBmc3RhdHVzLT5zdC5zdF9z aXplKQogICAgICAgICB7Ci0gICAgICAgICAgLyogQmUgY2FyZWZ1bCBoZXJlLiAgVGhlIGN1 cnJlbnQgcG9zaXRpb24gbWF5IGFjdHVhbGx5IGJlCi0gICAgICAgICAgICAgYmV5b25kIHRo ZSBlbmQgb2YgdGhlIGZpbGUuICBBcyBpbiB0aGUgZXhhbXBsZSBhYm92ZS4gICovCi0gICAg ICAgICAgYnl0ZXMgPSBlbmRfcG9zIDwgY3VycmVudF9wb3MgPyAwIDogZW5kX3BvcyAtIGN1 cnJlbnRfcG9zOworICAgICAgICAgIHNpemVfdCBlbmRfcG9zID0gZnN0YXR1cy0+c3Quc3Rf c2l6ZTsKKyAgICAgICAgICBvZmZfdCBoaV9wb3MgPSBlbmRfcG9zIC0gZW5kX3BvcyAlIEJV RkZFUl9TSVpFOworICAgICAgICAgIGlmIChjdXJyZW50X3BvcyA8IDApCisgICAgICAgICAg ICBjdXJyZW50X3BvcyA9IGxzZWVrIChmZCwgMCwgU0VFS19DVVIpOworICAgICAgICAgIGlm ICgwIDw9IGN1cnJlbnRfcG9zICYmIGN1cnJlbnRfcG9zIDwgaGlfcG9zCisgICAgICAgICAg ICAgICYmIDAgPD0gbHNlZWsgKGZkLCBoaV9wb3MsIFNFRUtfQ1VSKSkKKyAgICAgICAgICAg IGJ5dGVzID0gaGlfcG9zIC0gY3VycmVudF9wb3M7CiAgICAgICAgIH0KLSAgICAgIGVsc2UK KworICAgICAgZmRhZHZpc2UgKGZkLCAwLCAwLCBGQURWSVNFX1NFUVVFTlRJQUwpOworICAg ICAgd2hpbGUgKChieXRlc19yZWFkID0gc2FmZV9yZWFkIChmZCwgYnVmLCBCVUZGRVJfU0la RSkpID4gMCkKICAgICAgICAgewotICAgICAgICAgIGZkYWR2aXNlIChmZCwgMCwgMCwgRkFE VklTRV9TRVFVRU5USUFMKTsKLSAgICAgICAgICB3aGlsZSAoKGJ5dGVzX3JlYWQgPSBzYWZl X3JlYWQgKGZkLCBidWYsIEJVRkZFUl9TSVpFKSkgPiAwKQorICAgICAgICAgIGlmIChieXRl c19yZWFkID09IFNBRkVfUkVBRF9FUlJPUikKICAgICAgICAgICAgIHsKLSAgICAgICAgICAg ICAgaWYgKGJ5dGVzX3JlYWQgPT0gU0FGRV9SRUFEX0VSUk9SKQotICAgICAgICAgICAgICAg IHsKLSAgICAgICAgICAgICAgICAgIGVycm9yICgwLCBlcnJubywgIiVzIiwgZmlsZSk7Ci0g ICAgICAgICAgICAgICAgICBvayA9IGZhbHNlOwotICAgICAgICAgICAgICAgICAgYnJlYWs7 Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICBieXRlcyArPSBieXRlc19yZWFk OworICAgICAgICAgICAgICBlcnJvciAoMCwgZXJybm8sICIlcyIsIGZpbGUpOworICAgICAg ICAgICAgICBvayA9IGZhbHNlOworICAgICAgICAgICAgICBicmVhazsKICAgICAgICAgICAg IH0KKyAgICAgICAgICBieXRlcyArPSBieXRlc19yZWFkOwogICAgICAgICB9CiAgICAgfQog ICBlbHNlIGlmICghY291bnRfY2hhcnMgJiYgIWNvdW50X2NvbXBsaWNhdGVkKQpAQCAtNTAw LDcgKzUwMyw3IEBAIHdjX2ZpbGUgKGNoYXIgY29uc3QgKmZpbGUsIHN0cnVjdCBmc3RhdHVz ICpmc3RhdHVzKQogICAgICAgaGF2ZV9yZWFkX3N0ZGluID0gdHJ1ZTsKICAgICAgIGlmIChP X0JJTkFSWSAmJiAhIGlzYXR0eSAoU1RESU5fRklMRU5PKSkKICAgICAgICAgeGZyZW9wZW4g KE5VTEwsICJyYiIsIHN0ZGluKTsKLSAgICAgIHJldHVybiB3YyAoU1RESU5fRklMRU5PLCBm aWxlLCBmc3RhdHVzKTsKKyAgICAgIHJldHVybiB3YyAoU1RESU5fRklMRU5PLCBmaWxlLCBm c3RhdHVzLCAtMSk7CiAgICAgfQogICBlbHNlCiAgICAgewpAQCAtNTEyLDcgKzUxNSw3IEBA IHdjX2ZpbGUgKGNoYXIgY29uc3QgKmZpbGUsIHN0cnVjdCBmc3RhdHVzICpmc3RhdHVzKQog ICAgICAgICB9CiAgICAgICBlbHNlCiAgICAgICAgIHsKLSAgICAgICAgICBib29sIG9rID0g d2MgKGZkLCBmaWxlLCBmc3RhdHVzKTsKKyAgICAgICAgICBib29sIG9rID0gd2MgKGZkLCBm aWxlLCBmc3RhdHVzLCAwKTsKICAgICAgICAgICBpZiAoY2xvc2UgKGZkKSAhPSAwKQogICAg ICAgICAgICAgewogICAgICAgICAgICAgICBlcnJvciAoMCwgZXJybm8sICIlcyIsIGZpbGUp Owo= --------------000709090800090502020001-- From debbugs-submit-bounces@debbugs.gnu.org Tue Oct 07 19:52:18 2014 Received: (at 18621-done) by debbugs.gnu.org; 7 Oct 2014 23:52:18 +0000 Received: from localhost ([127.0.0.1]:37046 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1XbeYA-0000EX-N8 for submit@debbugs.gnu.org; Tue, 07 Oct 2014 19:52:17 -0400 Received: from smtp.cs.ucla.edu ([131.179.128.62]:55984) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1XbeY2-0000EG-BZ for 18621-done@debbugs.gnu.org; Tue, 07 Oct 2014 19:52:10 -0400 Received: from localhost (localhost.localdomain [127.0.0.1]) by smtp.cs.ucla.edu (Postfix) with ESMTP id 15C0DA60003; Tue, 7 Oct 2014 16:52:05 -0700 (PDT) X-Virus-Scanned: amavisd-new at smtp.cs.ucla.edu Received: from smtp.cs.ucla.edu ([127.0.0.1]) by localhost (smtp.cs.ucla.edu [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id 0G0+SCqTABTA; Tue, 7 Oct 2014 16:51:58 -0700 (PDT) Received: from [192.168.1.9] (pool-71-177-17-123.lsanca.dsl-w.verizon.net [71.177.17.123]) by smtp.cs.ucla.edu (Postfix) with ESMTPSA id 317AB39E8012; Tue, 7 Oct 2014 16:51:58 -0700 (PDT) Message-ID: <54347C93.9020906@cs.ucla.edu> Date: Tue, 07 Oct 2014 16:51:47 -0700 From: Paul Eggert Organization: UCLA Computer Science Department User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:31.0) Gecko/20100101 Thunderbird/31.1.2 MIME-Version: 1.0 To: Jim Meyering , =?UTF-8?B?UMOhZHJhaWcgQnJhZHk=?= Subject: Re: bug#18621: [BUG] wc -c incorrectly counts bytes in /sys References: <542EB6F7.3040207@gmail.com> <542ED354.6040008@draigBrady.com> <542EEF55.5000500@cs.ucla.edu> <543391A4.5070406@cs.ucla.edu> In-Reply-To: <543391A4.5070406@cs.ucla.edu> Content-Type: multipart/mixed; boundary="------------070304050207000608030907" X-Spam-Score: -2.3 (--) X-Debbugs-Envelope-To: 18621-done Cc: George Shuklin , 18621-done@debbugs.gnu.org X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -2.3 (--) This is a multi-part message in MIME format. --------------070304050207000608030907 Content-Type: text/plain; charset=utf-8; format=flowed Content-Transfer-Encoding: 7bit Paul Eggert wrote: > The attached patch still needs a changelog entry and test cases. I wrote those up and pushed the attached patch; this should fix the bug so I'm closing the bug report. --------------070304050207000608030907 Content-Type: text/plain; charset=UTF-8; name="0001-wc-don-t-miscount-sys-and-similar-file-systems.patch" Content-Transfer-Encoding: base64 Content-Disposition: attachment; filename*0="0001-wc-don-t-miscount-sys-and-similar-file-systems.patch" RnJvbSBjM2M4N2E5MmJhMDE2NDk1YzIwZDEzYjgwYTQyZDc1MGYzZTBmYmEwIE1vbiBTZXAg MTcgMDA6MDA6MDAgMjAwMQpGcm9tOiBQYXVsIEVnZ2VydCA8ZWdnZXJ0QGNzLnVjbGEuZWR1 PgpEYXRlOiBUdWUsIDcgT2N0IDIwMTQgMTY6NDY6MDggLTA3MDAKU3ViamVjdDogW1BBVENI XSB3YzogZG9uJ3QgbWlzY291bnQgL3N5cyBhbmQgc2ltaWxhciBmaWxlIHN5c3RlbXMKCkZp eCBzaW1pbGFyIHByb2JsZW1zIGluIGhlYWQsIG9kLCBzcGxpdCwgdGFjLCBhbmQgdGFpbC4K UmVwb3J0ZWQgYnkgR2VvcmdlIFNodWtsaW4gaW46IGh0dHA6Ly9idWdzLmdudS5vcmcvMTg2 MjEKKiBORVdTOiBEb2N1bWVudCB0aGlzLgoqIHNyYy9oZWFkLmMgKGVsc2Vlayk6IE1vdmUg dXAuCihlbGlkZV90YWlsX2J5dGVzX3BpcGUsIGVsaWRlX3RhaWxfbGluZXNfcGlwZSk6IE5l dyBhcmcKQ1VSUkVOVF9QT1MuICBBbGwgdXNlcyBjaGFuZ2VkLgooZWxpZGVfdGFpbF9ieXRl c19maWxlLCBlbGlkZV90YWlsX2xpbmVzX2ZpbGUpOgpOZXcgYXJnIFNUIGFuZCByZW1vdmUg YXJnIFNJWkUuICBBbGwgdXNlcyBjaGFuZ2VkLgoqIHNyYy9oZWFkLmMgKGVsaWRlX3RhaWxf Ynl0ZXNfZmlsZSk6Ciogc3JjL29kLmMgKHNraXApOiBBdm9pZCBvcHRpbWl6YXRpb24gZm9y IC9zeXMgZmlsZXMsIHdoZXJlCnN0X3NpemUgaXMgYm9ndXMgYW5kIHN0X3NpemUgPT0gc3Rf Ymxrc2l6ZS4KRG9uJ3QgcmVwb3J0IGVycm9yIGF0IEVPRiB3aGVuIG5vdCBvcHRpbWl6aW5n LgoqIHNyYy9oZWFkLmMsIHNyYy9vZC5jLCBzcmMvdGFpbC5jOiBJbmNsdWRlICJzdGF0LXNp emUuaCIuCiogc3JjL3NwbGl0LmMgKGlucHV0X2ZpbGVfc2l6ZSk6IE5ldyBmdW5jdGlvbi4K KGJ5dGVzX3NwbGl0LCBsaW5lc19jaHVua19zcGxpdCwgYnl0ZXNfY2h1bmtfZXh0cmFjdCk6 IE5ldyBhcmcKSU5JVElBTF9SRUFELiAgQWxsIHVzZXMgY2hhbmdlZC4gVXNlIGl0IHRvIGRv dWJsZS1jaGVjayBzdF9zaXplLgoqIHNyYy90YWMuYyAodGFjX3NlZWthYmxlKTogTmV3IGFy ZyBGSUxFX1BPUy4gIEFsbCB1c2VzIGNoYW5nZWQuCihjb3B5X3RvX3RlbXApOiBSZXR1cm4g c2l6ZSBvZiB0ZW1wIGZpbGUuICBBbGwgdXNlcyBjaGFuZ2VkLgoqIHNyYy90YWMuYyAodGFj X3NlZWthYmxlKToKKiBzcmMvdGFpbC5jICh0YWlsX2J5dGVzKToKKiBzcmMvd2MuYyAod2Mp OgpEb24ndCB0cnVzdCBzdF9zaXplOyBkb3VibGUtY2hlY2sgYnkgcmVhZGluZy4KKiBzcmMv d2MuYyAod2MpOiBOZXcgYXJnIENVUlJFTlRfUE9TLiAgQWxsIHVzZXMgY2hhbmdlZC4KKiB0 ZXN0cy9sb2NhbC5tayAoYWxsX3Rlc3RzKTogQWRkIHRlc3RzL21pc2Mvd2MtcHJvYy5zaCwK dGVzdHMvbWlzYy9vZC1qLnNoLCB0ZXN0cy90YWlsLTIvdGFpbC1jLnNoLgoqIHRlc3RzL21p c2MvaGVhZC1jLnNoOgoqIHRlc3RzL21pc2MvdGFjLTItbm9uc2Vla2FibGUuc2g6CiogdGVz dHMvc3BsaXQvYi1jaHVuay5zaDoKQWRkIHRlc3RzIGZvciBwcm9ibGVtcyB3aXRoIC9wcm9j IGFuZCAvc3lzIGZpbGVzLgoqIHRlc3RzL21pc2Mvb2Qtai5zaCwgdGVzdHMvbWlzYy93Yy1w cm9jLnNoLCB0ZXN0cy90YWlsLTIvdGFpbC1jLnNoOgpOZXcgZmlsZXMuCi0tLQogTkVXUyAg ICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAgMyArCiBzcmMvaGVhZC5jICAgICAgICAg ICAgICAgICAgICAgIHwgMTQ3ICsrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0t LS0tLS0KIHNyYy9vZC5jICAgICAgICAgICAgICAgICAgICAgICAgfCAgMjMgKysrKystLQog c3JjL3NwbGl0LmMgICAgICAgICAgICAgICAgICAgICB8IDE0NiArKysrKysrKysrKysrKysr KysrKysrKysrKysrKystLS0tLS0tLS0KIHNyYy90YWMuYyAgICAgICAgICAgICAgICAgICAg ICAgfCAgNzAgKysrKysrKysrKysrLS0tLS0tLQogc3JjL3RhaWwuYyAgICAgICAgICAgICAg ICAgICAgICB8ICA0MyArKysrKy0tLS0tLS0KIHNyYy93Yy5jICAgICAgICAgICAgICAgICAg ICAgICAgfCAgNDUgKysrKysrLS0tLS0tCiB0ZXN0cy9sb2NhbC5tayAgICAgICAgICAgICAg ICAgIHwgICAzICsKIHRlc3RzL21pc2MvaGVhZC1jLnNoICAgICAgICAgICAgfCAgMTIgKysr KwogdGVzdHMvbWlzYy9vZC1qLnNoICAgICAgICAgICAgICB8ICAzOSArKysrKysrKysrKwog dGVzdHMvbWlzYy90YWMtMi1ub25zZWVrYWJsZS5zaCB8ICAxNCArKystCiB0ZXN0cy9taXNj L3djLXByb2Muc2ggICAgICAgICAgIHwgIDMyICsrKysrKysrKwogdGVzdHMvc3BsaXQvYi1j aHVuay5zaCAgICAgICAgICB8ICAzOSArKysrKysrLS0tLQogdGVzdHMvdGFpbC0yL3RhaWwt Yy5zaCAgICAgICAgICB8ICAzNSArKysrKysrKysrCiAxNCBmaWxlcyBjaGFuZ2VkLCA0NjMg aW5zZXJ0aW9ucygrKSwgMTg4IGRlbGV0aW9ucygtKQogY3JlYXRlIG1vZGUgMTAwNzU1IHRl c3RzL21pc2Mvb2Qtai5zaAogY3JlYXRlIG1vZGUgMTAwNzU1IHRlc3RzL21pc2Mvd2MtcHJv Yy5zaAogY3JlYXRlIG1vZGUgMTAwNzU1IHRlc3RzL3RhaWwtMi90YWlsLWMuc2gKCmRpZmYg LS1naXQgYS9ORVdTIGIvTkVXUwppbmRleCAxODExYWU0Li5hMzIzYjBjIDEwMDY0NAotLS0g YS9ORVdTCisrKyBiL05FV1MKQEAgLTEyLDYgKzEyLDkgQEAgR05VIGNvcmV1dGlscyBORVdT ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLSotIG91dGxpbmUgLSotCiAg IGZpbGUgdHlwZXMsIGEgd2FybmluZyBpcyBpc3N1ZWQgZm9yIHNvdXJjZSBkaXJlY3Rvcmll cyB3aXRoIGR1cGxpY2F0ZSBuYW1lcywKICAgb3Igd2l0aCAtSCB0aGUgZGlyZWN0b3J5IGlz IGNvcGllZCBhZ2FpbiB1c2luZyB0aGUgc3ltbGluayBuYW1lLgogCisgIGhlYWQsIG9kLCBz cGxpdCwgdGFjLCB0YWlsLCBhbmQgd2Mgbm8gbG9uZ2VyIG1pc2hhbmRsZSBpbnB1dCBmcm9t IGZpbGVzIGluCisgIC9wcm9jIGFuZCAvc3lzIGZpbGUgc3lzdGVtcyB0aGF0IHJlcG9ydCBz b21ld2hhdC1pbmNvcnJlY3QgZmlsZSBzaXplcy4KKwogKiogTmV3IGZlYXR1cmVzCiAKICAg Y2hyb290IGFjY2VwdHMgdGhlIG5ldyAtLXNraXAtY2hkaXIgb3B0aW9uIHRvIG5vdCBjaGFu Z2UgdGhlIHdvcmtpbmcgZGlyZWN0b3J5CmRpZmYgLS1naXQgYS9zcmMvaGVhZC5jIGIvc3Jj L2hlYWQuYwppbmRleCBkMmYxZmNlLi4yNzgyZjhlIDEwMDY0NAotLS0gYS9zcmMvaGVhZC5j CisrKyBiL3NyYy9oZWFkLmMKQEAgLTM2LDYgKzM2LDcgQEAKICNpbmNsdWRlICJxdW90ZS5o IgogI2luY2x1ZGUgInF1b3RlYXJnLmgiCiAjaW5jbHVkZSAic2FmZS1yZWFkLmgiCisjaW5j bHVkZSAic3RhdC1zaXplLmgiCiAjaW5jbHVkZSAieGZyZW9wZW4uaCIKICNpbmNsdWRlICJ4 c3RydG9sLmgiCiAKQEAgLTIwNiwxMyArMjA3LDQyIEBAIGNvcHlfZmQgKGludCBzcmNfZmQs IHVpbnRtYXhfdCBuX2J5dGVzKQogICByZXR1cm4gQ09QWV9GRF9PSzsKIH0KIAotLyogUHJp bnQgYWxsIGJ1dCB0aGUgbGFzdCBOX0VMSURFIGJ5dGVzIGZyb20gdGhlIGlucHV0IGF2YWls YWJsZSB2aWEKLSAgIHRoZSBub24tc2Vla2FibGUgZmlsZSBkZXNjcmlwdG9yIEZELiAgUmV0 dXJuIHRydWUgdXBvbiBzdWNjZXNzLgorLyogQ2FsbCBsc2VlayAoRkQsIE9GRlNFVCwgV0hF TkNFKSwgd2hlcmUgZmlsZSBkZXNjcmlwdG9yIEZECisgICBjb3JyZXNwb25kcyB0byB0aGUg ZmlsZSBGSUxFTkFNRS4gIFdIRU5DRSBtdXN0IGJlIFNFRUtfU0VUIG9yCisgICBTRUVLX0NV Ui4gIFJldHVybiB0aGUgcmVzdWx0aW5nIG9mZnNldC4gIEdpdmUgYSBkaWFnbm9zdGljIGFu ZAorICAgcmV0dXJuIC0xIGlmIGxzZWVrIGZhaWxzLiAgKi8KKworc3RhdGljIG9mZl90Citl bHNlZWsgKGludCBmZCwgb2ZmX3Qgb2Zmc2V0LCBpbnQgd2hlbmNlLCBjaGFyIGNvbnN0ICpm aWxlbmFtZSkKK3sKKyAgb2ZmX3QgbmV3X29mZnNldCA9IGxzZWVrIChmZCwgb2Zmc2V0LCB3 aGVuY2UpOworICBjaGFyIGJ1ZltJTlRfQlVGU0laRV9CT1VORCAob2Zmc2V0KV07CisKKyAg aWYgKG5ld19vZmZzZXQgPCAwKQorICAgIGVycm9yICgwLCBlcnJubywKKyAgICAgICAgICAg Xyh3aGVuY2UgPT0gU0VFS19TRVQKKyAgICAgICAgICAgICA/IE5fKCIlczogY2Fubm90IHNl ZWsgdG8gb2Zmc2V0ICVzIikKKyAgICAgICAgICAgICA6IE5fKCIlczogY2Fubm90IHNlZWsg dG8gcmVsYXRpdmUgb2Zmc2V0ICVzIikpLAorICAgICAgICAgICBxdW90ZWFyZ19jb2xvbiAo ZmlsZW5hbWUpLAorICAgICAgICAgICBvZmZ0b3N0ciAob2Zmc2V0LCBidWYpKTsKKworICBy ZXR1cm4gbmV3X29mZnNldDsKK30KKworLyogRm9yIGFuIGlucHV0IGZpbGUgd2l0aCBuYW1l IEZJTEVOQU1FIGFuZCBkZXNjcmlwdG9yIEZELAorICAgb3V0cHV0IGFsbCBidXQgdGhlIGxh c3QgTl9FTElERV8wIGJ5dGVzLgorICAgSWYgQ1VSUkVOVF9QT1MgaXMgbm9ubmVnYXRpdmUs IGFzc3VtZSB0aGF0IHRoZSBpbnB1dCBmaWxlIGlzCisgICBwb3NpdGlvbmVkIGF0IENVUlJF TlRfUE9TIGFuZCB0aGF0IGl0IHNob3VsZCBiZSByZXBvc2l0aW9uZWQgdG8KKyAgIGp1c3Qg YmVmb3JlIHRoZSBlbGlkZWQgYnl0ZXMgYmVmb3JlIHJldHVybmluZy4KKyAgIFJldHVybiB0 cnVlIHVwb24gc3VjY2Vzcy4KICAgIEdpdmUgYSBkaWFnbm9zdGljIGFuZCByZXR1cm4gZmFs c2UgdXBvbiBlcnJvci4gICovCiBzdGF0aWMgYm9vbAotZWxpZGVfdGFpbF9ieXRlc19waXBl IChjb25zdCBjaGFyICpmaWxlbmFtZSwgaW50IGZkLCB1aW50bWF4X3Qgbl9lbGlkZV8wKQor ZWxpZGVfdGFpbF9ieXRlc19waXBlIChjb25zdCBjaGFyICpmaWxlbmFtZSwgaW50IGZkLCB1 aW50bWF4X3Qgbl9lbGlkZV8wLAorICAgICAgICAgICAgICAgICAgICAgICBvZmZfdCBjdXJy ZW50X3BvcykKIHsKICAgc2l6ZV90IG5fZWxpZGUgPSBuX2VsaWRlXzA7CisgIHVpbnRtYXhf dCBkZXNpcmVkX3BvcyA9IGN1cnJlbnRfcG9zOworICBib29sIG9rID0gdHJ1ZTsKIAogI2lm bmRlZiBIRUFEX1RBSUxfUElQRV9SRUFEX0JVRlNJWkUKICMgZGVmaW5lIEhFQURfVEFJTF9Q SVBFX1JFQURfQlVGU0laRSBCVUZTSVoKQEAgLTI1MSw3ICsyODEsNiBAQCBlbGlkZV90YWls X2J5dGVzX3BpcGUgKGNvbnN0IGNoYXIgKmZpbGVuYW1lLCBpbnQgZmQsIHVpbnRtYXhfdCBu X2VsaWRlXzApCiAKICAgaWYgKG5fZWxpZGUgPD0gSEVBRF9UQUlMX1BJUEVfQllURUNPVU5U X1RIUkVTSE9MRCkKICAgICB7Ci0gICAgICBib29sIG9rID0gdHJ1ZTsKICAgICAgIGJvb2wg Zmlyc3QgPSB0cnVlOwogICAgICAgYm9vbCBlb2YgPSBmYWxzZTsKICAgICAgIHNpemVfdCBu X3RvX3JlYWQgPSBSRUFEX0JVRlNJWkUgKyBuX2VsaWRlOwpAQCAtMjkzLDIyICszMjIsMjYg QEAgZWxpZGVfdGFpbF9ieXRlc19waXBlIChjb25zdCBjaGFyICpmaWxlbmFtZSwgaW50IGZk LCB1aW50bWF4X3Qgbl9lbGlkZV8wKQogICAgICAgICAgIC8qIE91dHB1dCBhbnkgKGJ1dCBt YXliZSBqdXN0IHBhcnQgb2YgdGhlKSBlbGlkZWQgZGF0YSBmcm9tCiAgICAgICAgICAgICAg dGhlIHByZXZpb3VzIHJvdW5kLiAgKi8KICAgICAgICAgICBpZiAoISBmaXJzdCkKLSAgICAg ICAgICAgIHh3cml0ZV9zdGRvdXQgKGJbIWldICsgUkVBRF9CVUZTSVpFLCBuX2VsaWRlIC0g ZGVsdGEpOworICAgICAgICAgICAgeworICAgICAgICAgICAgICBkZXNpcmVkX3BvcyArPSBu X2VsaWRlIC0gZGVsdGE7CisgICAgICAgICAgICAgIHh3cml0ZV9zdGRvdXQgKGJbIWldICsg UkVBRF9CVUZTSVpFLCBuX2VsaWRlIC0gZGVsdGEpOworICAgICAgICAgICAgfQogICAgICAg ICAgIGZpcnN0ID0gZmFsc2U7CiAKICAgICAgICAgICBpZiAobl9lbGlkZSA8IG5fcmVhZCkK LSAgICAgICAgICAgIHh3cml0ZV9zdGRvdXQgKGJbaV0sIG5fcmVhZCAtIG5fZWxpZGUpOwor ICAgICAgICAgICAgeworICAgICAgICAgICAgICBkZXNpcmVkX3BvcyArPSBuX3JlYWQgLSBu X2VsaWRlOworICAgICAgICAgICAgICB4d3JpdGVfc3Rkb3V0IChiW2ldLCBuX3JlYWQgLSBu X2VsaWRlKTsKKyAgICAgICAgICAgIH0KICAgICAgICAgfQogCiAgICAgICBmcmVlIChiWzBd KTsKLSAgICAgIHJldHVybiBvazsKICAgICB9CiAgIGVsc2UKICAgICB7CiAgICAgICAvKiBS ZWFkIGJsb2NrcyBvZiBzaXplIFJFQURfQlVGU0laRSwgdW50aWwgd2UndmUgcmVhZCBhdCBs ZWFzdCBuX2VsaWRlCiAgICAgICAgICBieXRlcy4gIFRoZW4sIGZvciBlYWNoIG5ldyBidWZm ZXIgd2UgcmVhZCwgYWxzbyB3cml0ZSBhbiBvbGQgb25lLiAgKi8KIAotICAgICAgYm9vbCBv ayA9IHRydWU7CiAgICAgICBib29sIGVvZiA9IGZhbHNlOwogICAgICAgc2l6ZV90IG5fcmVh ZDsKICAgICAgIGJvb2wgYnVmZmVyZWRfZW5vdWdoOwpAQCAtMzU3LDcgKzM5MCwxMCBAQCBl bGlkZV90YWlsX2J5dGVzX3BpcGUgKGNvbnN0IGNoYXIgKmZpbGVuYW1lLCBpbnQgZmQsIHVp bnRtYXhfdCBuX2VsaWRlXzApCiAgICAgICAgICAgICBidWZmZXJlZF9lbm91Z2ggPSB0cnVl OwogCiAgICAgICAgICAgaWYgKGJ1ZmZlcmVkX2Vub3VnaCkKLSAgICAgICAgICAgIHh3cml0 ZV9zdGRvdXQgKGJbaV9uZXh0XSwgbl9yZWFkKTsKKyAgICAgICAgICAgIHsKKyAgICAgICAg ICAgICAgZGVzaXJlZF9wb3MgKz0gbl9yZWFkOworICAgICAgICAgICAgICB4d3JpdGVfc3Rk b3V0IChiW2lfbmV4dF0sIG5fcmVhZCk7CisgICAgICAgICAgICB9CiAgICAgICAgIH0KIAog ICAgICAgLyogT3V0cHV0IGFueSByZW1haW5kZXI6IHJlbSBieXRlcyBmcm9tIGJbaV0gKyBu X3JlYWQuICAqLwpAQCAtMzY2LDYgKzQwMiw3IEBAIGVsaWRlX3RhaWxfYnl0ZXNfcGlwZSAo Y29uc3QgY2hhciAqZmlsZW5hbWUsIGludCBmZCwgdWludG1heF90IG5fZWxpZGVfMCkKICAg ICAgICAgICBpZiAoYnVmZmVyZWRfZW5vdWdoKQogICAgICAgICAgICAgewogICAgICAgICAg ICAgICBzaXplX3Qgbl9ieXRlc19sZWZ0X2luX2JfaSA9IFJFQURfQlVGU0laRSAtIG5fcmVh ZDsKKyAgICAgICAgICAgICAgZGVzaXJlZF9wb3MgKz0gcmVtOwogICAgICAgICAgICAgICBp ZiAocmVtIDwgbl9ieXRlc19sZWZ0X2luX2JfaSkKICAgICAgICAgICAgICAgICB7CiAgICAg ICAgICAgICAgICAgICB4d3JpdGVfc3Rkb3V0IChiW2ldICsgbl9yZWFkLCByZW0pOwpAQCAt MzkyLDYgKzQyOSw3IEBAIGVsaWRlX3RhaWxfYnl0ZXNfcGlwZSAoY29uc3QgY2hhciAqZmls ZW5hbWUsIGludCBmZCwgdWludG1heF90IG5fZWxpZGVfMCkKICAgICAgICAgICAgICAgICov CiAgICAgICAgICAgICAgIHNpemVfdCB5ID0gUkVBRF9CVUZTSVpFIC0gcmVtOwogICAgICAg ICAgICAgICBzaXplX3QgeCA9IG5fcmVhZCAtIHk7CisgICAgICAgICAgICAgIGRlc2lyZWRf cG9zICs9IHg7CiAgICAgICAgICAgICAgIHh3cml0ZV9zdGRvdXQgKGJbaV9uZXh0XSwgeCk7 CiAgICAgICAgICAgICB9CiAgICAgICAgIH0KQEAgLTQwMCwzNiArNDM4LDE2IEBAIGVsaWRl X3RhaWxfYnl0ZXNfcGlwZSAoY29uc3QgY2hhciAqZmlsZW5hbWUsIGludCBmZCwgdWludG1h eF90IG5fZWxpZGVfMCkKICAgICAgIGZvciAoaSA9IDA7IGkgPCBuX2FsbG9jOyBpKyspCiAg ICAgICAgIGZyZWUgKGJbaV0pOwogICAgICAgZnJlZSAoYik7Ci0KLSAgICAgIHJldHVybiBv azsKICAgICB9Ci19Ci0KLS8qIENhbGwgbHNlZWsgKEZELCBPRkZTRVQsIFdIRU5DRSksIHdo ZXJlIGZpbGUgZGVzY3JpcHRvciBGRAotICAgY29ycmVzcG9uZHMgdG8gdGhlIGZpbGUgRklM RU5BTUUuICBXSEVOQ0UgbXVzdCBiZSBTRUVLX1NFVCBvcgotICAgU0VFS19DVVIuICBSZXR1 cm4gdGhlIHJlc3VsdGluZyBvZmZzZXQuICBHaXZlIGEgZGlhZ25vc3RpYyBhbmQKLSAgIHJl dHVybiAtMSBpZiBsc2VlayBmYWlscy4gICovCi0KLXN0YXRpYyBvZmZfdAotZWxzZWVrIChp bnQgZmQsIG9mZl90IG9mZnNldCwgaW50IHdoZW5jZSwgY2hhciBjb25zdCAqZmlsZW5hbWUp Ci17Ci0gIG9mZl90IG5ld19vZmZzZXQgPSBsc2VlayAoZmQsIG9mZnNldCwgd2hlbmNlKTsK LSAgY2hhciBidWZbSU5UX0JVRlNJWkVfQk9VTkQgKG9mZnNldCldOwogCi0gIGlmIChuZXdf b2Zmc2V0IDwgMCkKLSAgICBlcnJvciAoMCwgZXJybm8sCi0gICAgICAgICAgIF8od2hlbmNl ID09IFNFRUtfU0VUCi0gICAgICAgICAgICAgPyBOXygiJXM6IGNhbm5vdCBzZWVrIHRvIG9m ZnNldCAlcyIpCi0gICAgICAgICAgICAgOiBOXygiJXM6IGNhbm5vdCBzZWVrIHRvIHJlbGF0 aXZlIG9mZnNldCAlcyIpKSwKLSAgICAgICAgICAgcXVvdGVhcmdfY29sb24gKGZpbGVuYW1l KSwKLSAgICAgICAgICAgb2ZmdG9zdHIgKG9mZnNldCwgYnVmKSk7Ci0KLSAgcmV0dXJuIG5l d19vZmZzZXQ7CisgIGlmICgwIDw9IGN1cnJlbnRfcG9zICYmIGVsc2VlayAoZmQsIGRlc2ly ZWRfcG9zLCBTRUVLX1NFVCwgZmlsZW5hbWUpIDwgMCkKKyAgICBvayA9IGZhbHNlOworICBy ZXR1cm4gb2s7CiB9CiAKIC8qIEZvciB0aGUgZmlsZSBGSUxFTkFNRSB3aXRoIGRlc2NyaXB0 b3IgRkQsIG91dHB1dCBhbGwgYnV0IHRoZSBsYXN0IE5fRUxJREUKICAgIGJ5dGVzLiAgSWYg U0laRSBpcyBub25uZWdhdGl2ZSwgdGhpcyBpcyBhIHJlZ3VsYXIgZmlsZSBwb3NpdGlvbmVk Ci0gICBhdCBTVEFSVF9QT1Mgd2l0aCBTSVpFIGJ5dGVzLiAgUmV0dXJuIHRydWUgb24gc3Vj Y2Vzcy4KKyAgIGF0IENVUlJFTlRfUE9TIHdpdGggU0laRSBieXRlcy4gIFJldHVybiB0cnVl IG9uIHN1Y2Nlc3MuCiAgICBHaXZlIGEgZGlhZ25vc3RpYyBhbmQgcmV0dXJuIGZhbHNlIHVw b24gZXJyb3IuICAqLwogCiAvKiBOT1RFOiBpZiB0aGUgaW5wdXQgZmlsZSBzaHJpbmtzIGJ5 IG1vcmUgdGhhbiBOX0VMSURFIGJ5dGVzIGJldHdlZW4KQEAgLTQzNywxMCArNDU1LDExIEBA IGVsc2VlayAoaW50IGZkLCBvZmZfdCBvZmZzZXQsIGludCB3aGVuY2UsIGNoYXIgY29uc3Qg KmZpbGVuYW1lKQogCiBzdGF0aWMgYm9vbAogZWxpZGVfdGFpbF9ieXRlc19maWxlIChjb25z dCBjaGFyICpmaWxlbmFtZSwgaW50IGZkLCB1aW50bWF4X3Qgbl9lbGlkZSwKLSAgICAgICAg ICAgICAgICAgICAgICAgb2ZmX3QgY3VycmVudF9wb3MsIG9mZl90IHNpemUpCisgICAgICAg ICAgICAgICAgICAgICAgIHN0cnVjdCBzdGF0IGNvbnN0ICpzdCwgb2ZmX3QgY3VycmVudF9w b3MpCiB7Ci0gIGlmIChzaXplIDwgMCkKLSAgICByZXR1cm4gZWxpZGVfdGFpbF9ieXRlc19w aXBlIChmaWxlbmFtZSwgZmQsIG5fZWxpZGUpOworICBvZmZfdCBzaXplID0gc3QtPnN0X3Np emU7CisgIGlmIChzaXplIDw9IFNUX0JMS1NJWkUgKCpzdCkpCisgICAgcmV0dXJuIGVsaWRl X3RhaWxfYnl0ZXNfcGlwZSAoZmlsZW5hbWUsIGZkLCBuX2VsaWRlLCBjdXJyZW50X3Bvcyk7 CiAgIGVsc2UKICAgICB7CiAgICAgICAvKiBCZSBjYXJlZnVsIGhlcmUuICBUaGUgY3VycmVu dCBwb3NpdGlvbiBtYXkgYWN0dWFsbHkgYmUKQEAgLTQ2MCwxMyArNDc5LDE2IEBAIGVsaWRl X3RhaWxfYnl0ZXNfZmlsZSAoY29uc3QgY2hhciAqZmlsZW5hbWUsIGludCBmZCwgdWludG1h eF90IG5fZWxpZGUsCiAgICAgfQogfQogCi0vKiBQcmludCBhbGwgYnV0IHRoZSBsYXN0IE5f RUxJREUgbGluZXMgZnJvbSB0aGUgaW5wdXQgc3RyZWFtCi0gICBvcGVuIGZvciByZWFkaW5n IHZpYSBmaWxlIGRlc2NyaXB0b3IgRkQuCisvKiBGb3IgYW4gaW5wdXQgZmlsZSB3aXRoIG5h bWUgRklMRU5BTUUgYW5kIGRlc2NyaXB0b3IgRkQsCisgICBvdXRwdXQgYWxsIGJ1dCB0aGUg bGFzdCBOX0VMSURFXzAgYnl0ZXMuCisgICBJZiBDVVJSRU5UX1BPUyBpcyBub25uZWdhdGl2 ZSwgdGhlIGlucHV0IGZpbGUgaXMgcG9zaXRpb25lZCB0aGVyZQorICAgYW5kIHNob3VsZCBi ZSByZXBvc2l0aW9uZWQgdG8ganVzdCBiZWZvcmUgdGhlIGVsaWRlZCBieXRlcy4KICAgIEJ1 ZmZlciB0aGUgc3BlY2lmaWVkIG51bWJlciBvZiBsaW5lcyBhcyBhIGxpbmtlZCBsaXN0IG9m IExCVUZGRVJzLAogICAgYWRkaW5nIHRoZW0gYXMgbmVlZGVkLiAgUmV0dXJuIHRydWUgaWYg c3VjY2Vzc2Z1bC4gICovCiAKIHN0YXRpYyBib29sCi1lbGlkZV90YWlsX2xpbmVzX3BpcGUg KGNvbnN0IGNoYXIgKmZpbGVuYW1lLCBpbnQgZmQsIHVpbnRtYXhfdCBuX2VsaWRlKQorZWxp ZGVfdGFpbF9saW5lc19waXBlIChjb25zdCBjaGFyICpmaWxlbmFtZSwgaW50IGZkLCB1aW50 bWF4X3Qgbl9lbGlkZSwKKyAgICAgICAgICAgICAgICAgICAgICAgb2ZmX3QgY3VycmVudF9w b3MpCiB7CiAgIHN0cnVjdCBsaW5lYnVmZmVyCiAgIHsKQEAgLTQ3NSw2ICs0OTcsNyBAQCBl bGlkZV90YWlsX2xpbmVzX3BpcGUgKGNvbnN0IGNoYXIgKmZpbGVuYW1lLCBpbnQgZmQsIHVp bnRtYXhfdCBuX2VsaWRlKQogICAgIHNpemVfdCBubGluZXM7CiAgICAgc3RydWN0IGxpbmVi dWZmZXIgKm5leHQ7CiAgIH07CisgIHVpbnRtYXhfdCBkZXNpcmVkX3BvcyA9IGN1cnJlbnRf cG9zOwogICB0eXBlZGVmIHN0cnVjdCBsaW5lYnVmZmVyIExCVUZGRVI7CiAgIExCVUZGRVIg KmZpcnN0LCAqbGFzdCwgKnRtcDsKICAgc2l6ZV90IHRvdGFsX2xpbmVzID0gMDsJLyogVG90 YWwgbnVtYmVyIG9mIG5ld2xpbmVzIGluIGFsbCBidWZmZXJzLiAgKi8KQEAgLTQ5Nyw2ICs1 MjAsNyBAQCBlbGlkZV90YWlsX2xpbmVzX3BpcGUgKGNvbnN0IGNoYXIgKmZpbGVuYW1lLCBp bnQgZmQsIHVpbnRtYXhfdCBuX2VsaWRlKQogCiAgICAgICBpZiAoISBuX2VsaWRlKQogICAg ICAgICB7CisgICAgICAgICAgZGVzaXJlZF9wb3MgKz0gbl9yZWFkOwogICAgICAgICAgIHh3 cml0ZV9zdGRvdXQgKHRtcC0+YnVmZmVyLCBuX3JlYWQpOwogICAgICAgICAgIGNvbnRpbnVl OwogICAgICAgICB9CkBAIC01MzYsNiArNTYwLDcgQEAgZWxpZGVfdGFpbF9saW5lc19waXBl IChjb25zdCBjaGFyICpmaWxlbmFtZSwgaW50IGZkLCB1aW50bWF4X3Qgbl9lbGlkZSkKICAg ICAgICAgICBsYXN0ID0gbGFzdC0+bmV4dCA9IHRtcDsKICAgICAgICAgICBpZiAobl9lbGlk ZSA8IHRvdGFsX2xpbmVzIC0gZmlyc3QtPm5saW5lcykKICAgICAgICAgICAgIHsKKyAgICAg ICAgICAgICAgZGVzaXJlZF9wb3MgKz0gZmlyc3QtPm5ieXRlczsKICAgICAgICAgICAgICAg eHdyaXRlX3N0ZG91dCAoZmlyc3QtPmJ1ZmZlciwgZmlyc3QtPm5ieXRlcyk7CiAgICAgICAg ICAgICAgIHRtcCA9IGZpcnN0OwogICAgICAgICAgICAgICB0b3RhbF9saW5lcyAtPSBmaXJz dC0+bmxpbmVzOwpAQCAtNTY1LDYgKzU5MCw3IEBAIGVsaWRlX3RhaWxfbGluZXNfcGlwZSAo Y29uc3QgY2hhciAqZmlsZW5hbWUsIGludCBmZCwgdWludG1heF90IG5fZWxpZGUpCiAKICAg Zm9yICh0bXAgPSBmaXJzdDsgbl9lbGlkZSA8IHRvdGFsX2xpbmVzIC0gdG1wLT5ubGluZXM7 IHRtcCA9IHRtcC0+bmV4dCkKICAgICB7CisgICAgICBkZXNpcmVkX3BvcyArPSB0bXAtPm5i eXRlczsKICAgICAgIHh3cml0ZV9zdGRvdXQgKHRtcC0+YnVmZmVyLCB0bXAtPm5ieXRlcyk7 CiAgICAgICB0b3RhbF9saW5lcyAtPSB0bXAtPm5saW5lczsKICAgICB9CkBAIC01ODEsNiAr NjA3LDcgQEAgZWxpZGVfdGFpbF9saW5lc19waXBlIChjb25zdCBjaGFyICpmaWxlbmFtZSwg aW50IGZkLCB1aW50bWF4X3Qgbl9lbGlkZSkKICAgICAgICAgICArK3RtcC0+bmxpbmVzOwog ICAgICAgICAgIC0tbjsKICAgICAgICAgfQorICAgICAgZGVzaXJlZF9wb3MgKz0gcCAtIHRt cC0+YnVmZmVyOwogICAgICAgeHdyaXRlX3N0ZG91dCAodG1wLT5idWZmZXIsIHAgLSB0bXAt PmJ1ZmZlcik7CiAgICAgfQogCkBAIC01OTEsNiArNjE4LDkgQEAgZnJlZV9sYnVmZmVyczoK ICAgICAgIGZyZWUgKGZpcnN0KTsKICAgICAgIGZpcnN0ID0gdG1wOwogICAgIH0KKworICBp ZiAoMCA8PSBjdXJyZW50X3BvcyAmJiBlbHNlZWsgKGZkLCBkZXNpcmVkX3BvcywgU0VFS19T RVQsIGZpbGVuYW1lKSA8IDApCisgICAgb2sgPSBmYWxzZTsKICAgcmV0dXJuIG9rOwogfQog CkBAIC03MTQsMTAgKzc0NCwxMSBAQCBlbGlkZV90YWlsX2xpbmVzX3NlZWthYmxlIChjb25z dCBjaGFyICpwcmV0dHlfZmlsZW5hbWUsIGludCBmZCwKIAogc3RhdGljIGJvb2wKIGVsaWRl X3RhaWxfbGluZXNfZmlsZSAoY29uc3QgY2hhciAqZmlsZW5hbWUsIGludCBmZCwgdWludG1h eF90IG5fZWxpZGUsCi0gICAgICAgICAgICAgICAgICAgICAgIG9mZl90IGN1cnJlbnRfcG9z LCBvZmZfdCBzaXplKQorICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qgc3RhdCBjb25z dCAqc3QsIG9mZl90IGN1cnJlbnRfcG9zKQogewotICBpZiAoc2l6ZSA8IDApCi0gICAgcmV0 dXJuIGVsaWRlX3RhaWxfbGluZXNfcGlwZSAoZmlsZW5hbWUsIGZkLCBuX2VsaWRlKTsKKyAg b2ZmX3Qgc2l6ZSA9IHN0LT5zdF9zaXplOworICBpZiAoc2l6ZSA8PSBTVF9CTEtTSVpFICgq c3QpKQorICAgIHJldHVybiBlbGlkZV90YWlsX2xpbmVzX3BpcGUgKGZpbGVuYW1lLCBmZCwg bl9lbGlkZSwgY3VycmVudF9wb3MpOwogICBlbHNlCiAgICAgewogICAgICAgLyogRmluZCB0 aGUgb2Zmc2V0LCBPRkYsIG9mIHRoZSBOdGggbmV3bGluZSBmcm9tIHRoZSBlbmQsCkBAIC04 MDIsMjggKzgzMywyNCBAQCBoZWFkIChjb25zdCBjaGFyICpmaWxlbmFtZSwgaW50IGZkLCB1 aW50bWF4X3Qgbl91bml0cywgYm9vbCBjb3VudF9saW5lcywKIAogICBpZiAoZWxpZGVfZnJv bV9lbmQpCiAgICAgewotICAgICAgb2ZmX3QgY3VycmVudF9wb3MgPSAtMSwgc2l6ZSA9IC0x OwotICAgICAgaWYgKCEgcHJlc3VtZV9pbnB1dF9waXBlKQorICAgICAgb2ZmX3QgY3VycmVu dF9wb3MgPSAtMTsKKyAgICAgIHN0cnVjdCBzdGF0IHN0OworICAgICAgaWYgKGZzdGF0IChm ZCwgJnN0KSAhPSAwKQogICAgICAgICB7Ci0gICAgICAgICAgc3RydWN0IHN0YXQgc3Q7Ci0g ICAgICAgICAgaWYgKGZzdGF0IChmZCwgJnN0KSAhPSAwKQotICAgICAgICAgICAgewotICAg ICAgICAgICAgICBlcnJvciAoMCwgZXJybm8sIF8oImNhbm5vdCBmc3RhdCAlcyIpLAotICAg ICAgICAgICAgICAgICAgICAgcXVvdGVhcmdfY29sb24gKGZpbGVuYW1lKSk7Ci0gICAgICAg ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICBpZiAoU19J U1JFRyAoc3Quc3RfbW9kZSkpCi0gICAgICAgICAgICB7Ci0gICAgICAgICAgICAgIHNpemUg PSBzdC5zdF9zaXplOwotICAgICAgICAgICAgICBjdXJyZW50X3BvcyA9IGVsc2VlayAoZmQs IDAsIFNFRUtfQ1VSLCBmaWxlbmFtZSk7Ci0gICAgICAgICAgICAgIGlmIChjdXJyZW50X3Bv cyA8IDApCi0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgfQor ICAgICAgICAgIGVycm9yICgwLCBlcnJubywgXygiY2Fubm90IGZzdGF0ICVzIiksCisgICAg ICAgICAgICAgICAgIHF1b3RlYXJnX2NvbG9uIChmaWxlbmFtZSkpOworICAgICAgICAgIHJl dHVybiBmYWxzZTsKKyAgICAgICAgfQorICAgICAgaWYgKCEgcHJlc3VtZV9pbnB1dF9waXBl ICYmIHVzYWJsZV9zdF9zaXplICgmc3QpKQorICAgICAgICB7CisgICAgICAgICAgY3VycmVu dF9wb3MgPSBlbHNlZWsgKGZkLCAwLCBTRUVLX0NVUiwgZmlsZW5hbWUpOworICAgICAgICAg IGlmIChjdXJyZW50X3BvcyA8IDApCisgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAg ICAgIH0KICAgICAgIGlmIChjb3VudF9saW5lcykKLSAgICAgICAgcmV0dXJuIGVsaWRlX3Rh aWxfbGluZXNfZmlsZSAoZmlsZW5hbWUsIGZkLCBuX3VuaXRzLCBjdXJyZW50X3Bvcywgc2l6 ZSk7CisgICAgICAgIHJldHVybiBlbGlkZV90YWlsX2xpbmVzX2ZpbGUgKGZpbGVuYW1lLCBm ZCwgbl91bml0cywgJnN0LCBjdXJyZW50X3Bvcyk7CiAgICAgICBlbHNlCi0gICAgICAgIHJl dHVybiBlbGlkZV90YWlsX2J5dGVzX2ZpbGUgKGZpbGVuYW1lLCBmZCwgbl91bml0cywgY3Vy cmVudF9wb3MsIHNpemUpOworICAgICAgICByZXR1cm4gZWxpZGVfdGFpbF9ieXRlc19maWxl IChmaWxlbmFtZSwgZmQsIG5fdW5pdHMsICZzdCwgY3VycmVudF9wb3MpOwogICAgIH0KICAg aWYgKGNvdW50X2xpbmVzKQogICAgIHJldHVybiBoZWFkX2xpbmVzIChmaWxlbmFtZSwgZmQs IG5fdW5pdHMpOwpkaWZmIC0tZ2l0IGEvc3JjL29kLmMgYi9zcmMvb2QuYwppbmRleCAxOGIx NjgzLi43YWM2NjNhIDEwMDY0NAotLS0gYS9zcmMvb2QuYworKysgYi9zcmMvb2QuYwpAQCAt MjcsNiArMjcsNyBAQAogI2luY2x1ZGUgImVycm9yLmgiCiAjaW5jbHVkZSAiZnRvYXN0ci5o IgogI2luY2x1ZGUgInF1b3RlLmgiCisjaW5jbHVkZSAic3RhdC1zaXplLmgiCiAjaW5jbHVk ZSAieGZyZW9wZW4uaCIKICNpbmNsdWRlICJ4cHJpbnRmLmgiCiAjaW5jbHVkZSAieHN0cnRv bC5oIgpAQCAtMTAzNCw5ICsxMDM1LDExIEBAIHNraXAgKHVpbnRtYXhfdCBuX3NraXApCiAg ICAgICAgICAgICAgSWYgdGhlIG51bWJlciBvZiBieXRlcyBsZWZ0IHRvIHNraXAgaXMgbGFy Z2VyIHRoYW4KICAgICAgICAgICAgICB0aGUgc2l6ZSBvZiB0aGUgY3VycmVudCBmaWxlLCB3 ZSBjYW4gZGVjcmVtZW50IG5fc2tpcAogICAgICAgICAgICAgIGFuZCBnbyBvbiB0byB0aGUg bmV4dCBmaWxlLiAgU2tpcCB0aGlzIG9wdGltaXphdGlvbiBhbHNvCi0gICAgICAgICAgICAg d2hlbiBzdF9zaXplIGlzIDAsIGJlY2F1c2Ugc29tZSBrZXJuZWxzIHJlcG9ydCB0aGF0Ci0g ICAgICAgICAgICAgbm9uZW1wdHkgZmlsZXMgaW4gL3Byb2MgaGF2ZSBzdF9zaXplID09IDAu ICAqLwotICAgICAgICAgIGlmIChTX0lTUkVHIChmaWxlX3N0YXRzLnN0X21vZGUpICYmIDAg PCBmaWxlX3N0YXRzLnN0X3NpemUpCisgICAgICAgICAgICAgd2hlbiBzdF9zaXplIGlzIG5v IGdyZWF0ZXIgdGhhbiB0aGUgYmxvY2sgc2l6ZSwgYmVjYXVzZQorICAgICAgICAgICAgIHNv bWUga2VybmVscyByZXBvcnQgbm9uc2Vuc2Ugc21hbGwgZmlsZSBzaXplcyBmb3IKKyAgICAg ICAgICAgICBwcm9jLWxpa2UgZmlsZSBzeXN0ZW1zLiAgKi8KKyAgICAgICAgICBpZiAodXNh YmxlX3N0X3NpemUgKCZmaWxlX3N0YXRzKQorICAgICAgICAgICAgICAmJiBTVF9CTEtTSVpF IChmaWxlX3N0YXRzKSA8IGZpbGVfc3RhdHMuc3Rfc2l6ZSkKICAgICAgICAgICAgIHsKICAg ICAgICAgICAgICAgaWYgKCh1aW50bWF4X3QpIGZpbGVfc3RhdHMuc3Rfc2l6ZSA8IG5fc2tp cCkKICAgICAgICAgICAgICAgICBuX3NraXAgLT0gZmlsZV9zdGF0cy5zdF9zaXplOwpAQCAt MTA1Miw2ICsxMDU1LDcgQEAgc2tpcCAodWludG1heF90IG5fc2tpcCkKICAgICAgICAgICAg IH0KIAogICAgICAgICAgIC8qIElmIGl0J3Mgbm90IGEgcmVndWxhciBmaWxlIHdpdGggbm9u bmVnYXRpdmUgc2l6ZSwKKyAgICAgICAgICAgICBvciBpZiBpdCdzIHNvIHNtYWxsIHRoYXQg aXQgbWlnaHQgYmUgaW4gYSBwcm9jLWxpa2UgZmlsZSBzeXN0ZW0sCiAgICAgICAgICAgICAg cG9zaXRpb24gdGhlIGZpbGUgcG9pbnRlciBieSByZWFkaW5nLiAgKi8KIAogICAgICAgICAg IGVsc2UKQEAgLTEwNjcsMTAgKzEwNzEsMTUgQEAgc2tpcCAodWludG1heF90IG5fc2tpcCkK ICAgICAgICAgICAgICAgICAgIG5fc2tpcCAtPSBuX2J5dGVzX3JlYWQ7CiAgICAgICAgICAg ICAgICAgICBpZiAobl9ieXRlc19yZWFkICE9IG5fYnl0ZXNfdG9fcmVhZCkKICAgICAgICAg ICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgIGluX2Vycm5vID0gZXJybm87 Ci0gICAgICAgICAgICAgICAgICAgICAgb2sgPSBmYWxzZTsKLSAgICAgICAgICAgICAgICAg ICAgICBuX3NraXAgPSAwOwotICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworICAgICAg ICAgICAgICAgICAgICAgIGlmIChmZXJyb3IgKGluX3N0cmVhbSkpCisgICAgICAgICAgICAg ICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAgICAgIGluX2Vycm5vID0gZXJy bm87CisgICAgICAgICAgICAgICAgICAgICAgICAgIG9rID0gZmFsc2U7CisgICAgICAgICAg ICAgICAgICAgICAgICAgIG5fc2tpcCA9IDA7CisgICAgICAgICAgICAgICAgICAgICAgICAg IGJyZWFrOworICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAg ICAgIGlmIChmZW9mIChpbl9zdHJlYW0pKQorICAgICAgICAgICAgICAgICAgICAgICAgYnJl YWs7CiAgICAgICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgICB9CiAgICAgICAg ICAgICB9CmRpZmYgLS1naXQgYS9zcmMvc3BsaXQuYyBiL3NyYy9zcGxpdC5jCmluZGV4IDli MjM4ZTQuLmVjMGRhN2QgMTAwNjQ0Ci0tLSBhL3NyYy9zcGxpdC5jCisrKyBiL3NyYy9zcGxp dC5jCkBAIC0yNDYsNiArMjQ2LDM3IEBAIHIvSy9OICAgbGlrZXdpc2UgYnV0IG9ubHkgb3V0 cHV0IEt0aCBvZiBOIHRvIHN0ZG91dFxuXAogICBleGl0IChzdGF0dXMpOwogfQogCisvKiBS ZXR1cm4gdGhlIG51bWJlciBvZiBieXRlcyB0aGF0IGNhbiBiZSByZWFkIGZyb20gRkQsIGEg ZmlsZSB3aXRoCisgICBhcHBhcmVudCBzaXplIFNJWkUuICBBY3R1YWxseSByZWFkIHRoZSBk YXRhIGludG8gQlVGIChvZiBzaXplCisgICBCVUZTSVpFKSBpZiB0aGUgZmlsZSBhcHBlYXJz IHRvIGJlIHNtYWxsZXIgdGhhbiBCVUZTSVpFLCBhcyB0aGlzCisgICB3b3JrcyBiZXR0ZXIg b24gcHJvYy1saWtlIGZpbGUgc3lzdGVtcy4gIElmIHRoZSByZXR1cm5lZCB2YWx1ZSBpcwor ICAgbGVzcyB0aGFuIEJVRlNJWkUsIHN0b3JlIGFsbCB0aGUgZmlsZSdzIGRhdGEgaW50byBC VUY7IG90aGVyd2lzZSwKKyAgIHJlc3RvcmUgdGhlIGlucHV0IGZpbGUncyBwb3NpdGlvbiBz byB0aGF0IHRoZSBmaWxlIGNhbiBiZSByZXJlYWQgaWYKKyAgIG5lZWRlZC4gICovCisKK3N0 YXRpYyBvZmZfdAoraW5wdXRfZmlsZV9zaXplIChpbnQgZmQsIG9mZl90IHNpemUsIGNoYXIg KmJ1Ziwgc2l6ZV90IGJ1ZnNpemUpCit7CisgIGlmIChzaXplIDwgYnVmc2l6ZSkKKyAgICB7 CisgICAgICBzaXplID0gMDsKKyAgICAgIHdoaWxlICh0cnVlKQorICAgICAgICB7CisgICAg ICAgICAgc2l6ZV90IHNhdmUgPSBzaXplIDwgYnVmc2l6ZSA/IHNpemUgOiAwOworICAgICAg ICAgIHNpemVfdCBuX3JlYWQgPSBzYWZlX3JlYWQgKGZkLCBidWYgKyBzYXZlLCBidWZzaXpl IC0gc2F2ZSk7CisgICAgICAgICAgaWYgKG5fcmVhZCA9PSAwKQorICAgICAgICAgICAgYnJl YWs7CisgICAgICAgICAgaWYgKG5fcmVhZCA9PSBTQUZFX1JFQURfRVJST1IpCisgICAgICAg ICAgICBlcnJvciAoRVhJVF9GQUlMVVJFLCBlcnJubywgIiVzIiwgaW5maWxlKTsKKyAgICAg ICAgICBzaXplICs9IG5fcmVhZDsKKyAgICAgICAgfQorICAgICAgaWYgKGJ1ZnNpemUgPD0g c2l6ZSAmJiBsc2VlayAoZmQsIC0gc2l6ZSwgU0VFS19DVVIpIDwgMCkKKyAgICAgICAgZXJy b3IgKEVYSVRfRkFJTFVSRSwgZXJybm8sICIlcyIsIGluZmlsZSk7CisgICAgfQorCisgIHJl dHVybiBzaXplOworfQorCiAvKiBDb21wdXRlIHRoZSBuZXh0IHNlcXVlbnRpYWwgb3V0cHV0 IGZpbGUgbmFtZSBhbmQgc3RvcmUgaXQgaW50byB0aGUKICAgIHN0cmluZyAnb3V0ZmlsZScu ICAqLwogCkBAIC01MTEsMTAgKzU0MiwxMyBAQCBjd3JpdGUgKGJvb2wgbmV3X2ZpbGVfZmxh ZywgY29uc3QgY2hhciAqYnAsIHNpemVfdCBieXRlcykKIH0KIAogLyogU3BsaXQgaW50byBw aWVjZXMgb2YgZXhhY3RseSBOX0JZVEVTIGJ5dGVzLgotICAgVXNlIGJ1ZmZlciBCVUYsIHdo b3NlIHNpemUgaXMgQlVGU0laRS4gICovCisgICBVc2UgYnVmZmVyIEJVRiwgd2hvc2Ugc2l6 ZSBpcyBCVUZTSVpFLgorICAgSWYgSU5JVElBTF9SRUFEICE9IFNJWkVfTUFYLCB0aGUgZW50 aXJlIGlucHV0IGZpbGUgaGFzIGFscmVhZHkgYmVlbgorICAgcGFydGx5IHJlYWQgaW50byBC VUYgYW5kIEJVRiBjb250YWlucyBJTklUSUFMX1JFQUQgaW5wdXQgYnl0ZXMuICAqLwogCiBz dGF0aWMgdm9pZAotYnl0ZXNfc3BsaXQgKHVpbnRtYXhfdCBuX2J5dGVzLCBjaGFyICpidWYs IHNpemVfdCBidWZzaXplLCB1aW50bWF4X3QgbWF4X2ZpbGVzKQorYnl0ZXNfc3BsaXQgKHVp bnRtYXhfdCBuX2J5dGVzLCBjaGFyICpidWYsIHNpemVfdCBidWZzaXplLCBzaXplX3QgaW5p dGlhbF9yZWFkLAorICAgICAgICAgICAgIHVpbnRtYXhfdCBtYXhfZmlsZXMpCiB7CiAgIHNp emVfdCBuX3JlYWQ7CiAgIGJvb2wgbmV3X2ZpbGVfZmxhZyA9IHRydWU7CkBAIC01MjUsOSAr NTU5LDE3IEBAIGJ5dGVzX3NwbGl0ICh1aW50bWF4X3Qgbl9ieXRlcywgY2hhciAqYnVmLCBz aXplX3QgYnVmc2l6ZSwgdWludG1heF90IG1heF9maWxlcykKIAogICBkbwogICAgIHsKLSAg ICAgIG5fcmVhZCA9IHNhZmVfcmVhZCAoU1RESU5fRklMRU5PLCBidWYsIGJ1ZnNpemUpOwot ICAgICAgaWYgKG5fcmVhZCA9PSBTQUZFX1JFQURfRVJST1IpCi0gICAgICAgIGVycm9yIChF WElUX0ZBSUxVUkUsIGVycm5vLCAiJXMiLCBpbmZpbGUpOworICAgICAgaWYgKGluaXRpYWxf cmVhZCAhPSBTSVpFX01BWCkKKyAgICAgICAgeworICAgICAgICAgIG5fcmVhZCA9IGluaXRp YWxfcmVhZDsKKyAgICAgICAgICBpbml0aWFsX3JlYWQgPSBTSVpFX01BWDsKKyAgICAgICAg fQorICAgICAgZWxzZQorICAgICAgICB7CisgICAgICAgICAgbl9yZWFkID0gc2FmZV9yZWFk IChTVERJTl9GSUxFTk8sIGJ1ZiwgYnVmc2l6ZSk7CisgICAgICAgICAgaWYgKG5fcmVhZCA9 PSBTQUZFX1JFQURfRVJST1IpCisgICAgICAgICAgICBlcnJvciAoRVhJVF9GQUlMVVJFLCBl cnJubywgIiVzIiwgaW5maWxlKTsKKyAgICAgICAgfQogICAgICAgYnBfb3V0ID0gYnVmOwog ICAgICAgdG9fcmVhZCA9IG5fcmVhZDsKICAgICAgIHdoaWxlICh0cnVlKQpAQCAtNzM2LDcg Kzc3OCw3IEBAIGxpbmVfYnl0ZXNfc3BsaXQgKHVpbnRtYXhfdCBuX2J5dGVzLCBjaGFyICpi dWYsIHNpemVfdCBidWZzaXplKQogCiBzdGF0aWMgdm9pZAogbGluZXNfY2h1bmtfc3BsaXQg KHVpbnRtYXhfdCBrLCB1aW50bWF4X3QgbiwgY2hhciAqYnVmLCBzaXplX3QgYnVmc2l6ZSwK LSAgICAgICAgICAgICAgICAgICBvZmZfdCBmaWxlX3NpemUpCisgICAgICAgICAgICAgICAg ICAgc2l6ZV90IGluaXRpYWxfcmVhZCwgb2ZmX3QgZmlsZV9zaXplKQogewogICBhc3NlcnQg KG4gJiYgayA8PSBuICYmIG4gPD0gZmlsZV9zaXplKTsKIApAQCAtNzUxLDcgKzc5MywxMiBA QCBsaW5lc19jaHVua19zcGxpdCAodWludG1heF90IGssIHVpbnRtYXhfdCBuLCBjaGFyICpi dWYsIHNpemVfdCBidWZzaXplLAogICAgIHsKICAgICAgIC8qIFN0YXJ0IHJlYWRpbmcgMSBi eXRlIGJlZm9yZSBrdGggY2h1bmsgb2YgZmlsZS4gICovCiAgICAgICBvZmZfdCBzdGFydCA9 IChrIC0gMSkgKiBjaHVua19zaXplIC0gMTsKLSAgICAgIGlmIChsc2VlayAoU1RESU5fRklM RU5PLCBzdGFydCwgU0VFS19DVVIpIDwgMCkKKyAgICAgIGlmIChpbml0aWFsX3JlYWQgIT0g U0laRV9NQVgpCisgICAgICAgIHsKKyAgICAgICAgICBtZW1tb3ZlIChidWYsIGJ1ZiArIHN0 YXJ0LCBpbml0aWFsX3JlYWQgLSBzdGFydCk7CisgICAgICAgICAgaW5pdGlhbF9yZWFkIC09 IHN0YXJ0OworICAgICAgICB9CisgICAgICBlbHNlIGlmIChsc2VlayAoU1RESU5fRklMRU5P LCBzdGFydCwgU0VFS19DVVIpIDwgMCkKICAgICAgICAgZXJyb3IgKEVYSVRfRkFJTFVSRSwg ZXJybm8sICIlcyIsIGluZmlsZSk7CiAgICAgICBuX3dyaXR0ZW4gPSBzdGFydDsKICAgICAg IGNodW5rX25vID0gayAtIDE7CkBAIC03NjEsMTAgKzgwOCwxOSBAQCBsaW5lc19jaHVua19z cGxpdCAodWludG1heF90IGssIHVpbnRtYXhfdCBuLCBjaGFyICpidWYsIHNpemVfdCBidWZz aXplLAogICB3aGlsZSAobl93cml0dGVuIDwgZmlsZV9zaXplKQogICAgIHsKICAgICAgIGNo YXIgKmJwID0gYnVmLCAqZW9iOwotICAgICAgc2l6ZV90IG5fcmVhZCA9IHNhZmVfcmVhZCAo U1RESU5fRklMRU5PLCBidWYsIGJ1ZnNpemUpOwotICAgICAgaWYgKG5fcmVhZCA9PSBTQUZF X1JFQURfRVJST1IpCi0gICAgICAgIGVycm9yIChFWElUX0ZBSUxVUkUsIGVycm5vLCAiJXMi LCBpbmZpbGUpOwotICAgICAgZWxzZSBpZiAobl9yZWFkID09IDApCisgICAgICBzaXplX3Qg bl9yZWFkOworICAgICAgaWYgKGluaXRpYWxfcmVhZCAhPSBTSVpFX01BWCkKKyAgICAgICAg eworICAgICAgICAgIG5fcmVhZCA9IGluaXRpYWxfcmVhZDsKKyAgICAgICAgICBpbml0aWFs X3JlYWQgPSBTSVpFX01BWDsKKyAgICAgICAgfQorICAgICAgZWxzZQorICAgICAgICB7Cisg ICAgICAgICAgbl9yZWFkID0gc2FmZV9yZWFkIChTVERJTl9GSUxFTk8sIGJ1ZiwgYnVmc2l6 ZSk7CisgICAgICAgICAgaWYgKG5fcmVhZCA9PSBTQUZFX1JFQURfRVJST1IpCisgICAgICAg ICAgICBlcnJvciAoRVhJVF9GQUlMVVJFLCBlcnJubywgIiVzIiwgaW5maWxlKTsKKyAgICAg ICAgfQorICAgICAgaWYgKG5fcmVhZCA9PSAwKQogICAgICAgICBicmVhazsgLyogZW9mLiAg Ki8KICAgICAgIG5fcmVhZCA9IE1JTiAobl9yZWFkLCBmaWxlX3NpemUgLSBuX3dyaXR0ZW4p OwogICAgICAgY2h1bmtfdHJ1bmNhdGVkID0gZmFsc2U7CkBAIC04NDEsNyArODk3LDcgQEAg bGluZXNfY2h1bmtfc3BsaXQgKHVpbnRtYXhfdCBrLCB1aW50bWF4X3QgbiwgY2hhciAqYnVm LCBzaXplX3QgYnVmc2l6ZSwKIAogc3RhdGljIHZvaWQKIGJ5dGVzX2NodW5rX2V4dHJhY3Qg KHVpbnRtYXhfdCBrLCB1aW50bWF4X3QgbiwgY2hhciAqYnVmLCBzaXplX3QgYnVmc2l6ZSwK LSAgICAgICAgICAgICAgICAgICAgIG9mZl90IGZpbGVfc2l6ZSkKKyAgICAgICAgICAgICAg ICAgICAgIHNpemVfdCBpbml0aWFsX3JlYWQsIG9mZl90IGZpbGVfc2l6ZSkKIHsKICAgb2Zm X3Qgc3RhcnQ7CiAgIG9mZl90IGVuZDsKQEAgLTg1MSwxNSArOTA3LDI5IEBAIGJ5dGVzX2No dW5rX2V4dHJhY3QgKHVpbnRtYXhfdCBrLCB1aW50bWF4X3QgbiwgY2hhciAqYnVmLCBzaXpl X3QgYnVmc2l6ZSwKICAgc3RhcnQgPSAoayAtIDEpICogKGZpbGVfc2l6ZSAvIG4pOwogICBl bmQgPSAoayA9PSBuKSA/IGZpbGVfc2l6ZSA6IGsgKiAoZmlsZV9zaXplIC8gbik7CiAKLSAg aWYgKGxzZWVrIChTVERJTl9GSUxFTk8sIHN0YXJ0LCBTRUVLX0NVUikgPCAwKQorICBpZiAo aW5pdGlhbF9yZWFkICE9IFNJWkVfTUFYKQorICAgIHsKKyAgICAgIG1lbW1vdmUgKGJ1Ziwg YnVmICsgc3RhcnQsIGluaXRpYWxfcmVhZCAtIHN0YXJ0KTsKKyAgICAgIGluaXRpYWxfcmVh ZCAtPSBzdGFydDsKKyAgICB9CisgIGVsc2UgaWYgKGxzZWVrIChTVERJTl9GSUxFTk8sIHN0 YXJ0LCBTRUVLX0NVUikgPCAwKQogICAgIGVycm9yIChFWElUX0ZBSUxVUkUsIGVycm5vLCAi JXMiLCBpbmZpbGUpOwogCiAgIHdoaWxlIChzdGFydCA8IGVuZCkKICAgICB7Ci0gICAgICBz aXplX3Qgbl9yZWFkID0gc2FmZV9yZWFkIChTVERJTl9GSUxFTk8sIGJ1ZiwgYnVmc2l6ZSk7 Ci0gICAgICBpZiAobl9yZWFkID09IFNBRkVfUkVBRF9FUlJPUikKLSAgICAgICAgZXJyb3Ig KEVYSVRfRkFJTFVSRSwgZXJybm8sICIlcyIsIGluZmlsZSk7Ci0gICAgICBlbHNlIGlmIChu X3JlYWQgPT0gMCkKKyAgICAgIHNpemVfdCBuX3JlYWQ7CisgICAgICBpZiAoaW5pdGlhbF9y ZWFkICE9IFNJWkVfTUFYKQorICAgICAgICB7CisgICAgICAgICAgbl9yZWFkID0gaW5pdGlh bF9yZWFkOworICAgICAgICAgIGluaXRpYWxfcmVhZCA9IFNJWkVfTUFYOworICAgICAgICB9 CisgICAgICBlbHNlCisgICAgICAgIHsKKyAgICAgICAgICBuX3JlYWQgPSBzYWZlX3JlYWQg KFNURElOX0ZJTEVOTywgYnVmLCBidWZzaXplKTsKKyAgICAgICAgICBpZiAobl9yZWFkID09 IFNBRkVfUkVBRF9FUlJPUikKKyAgICAgICAgICAgIGVycm9yIChFWElUX0ZBSUxVUkUsIGVy cm5vLCAiJXMiLCBpbmZpbGUpOworICAgICAgICB9CisgICAgICBpZiAobl9yZWFkID09IDAp CiAgICAgICAgIGJyZWFrOyAvKiBlb2YuICAqLwogICAgICAgbl9yZWFkID0gTUlOIChuX3Jl YWQsIGVuZCAtIHN0YXJ0KTsKICAgICAgIGlmIChmdWxsX3dyaXRlIChTVERPVVRfRklMRU5P LCBidWYsIG5fcmVhZCkgIT0gbl9yZWFkCkBAIC0xNDAzLDIyICsxNDczLDM0IEBAIG1haW4g KGludCBhcmdjLCBjaGFyICoqYXJndikKICAgaWYgKGluX2Jsa19zaXplID09IDApCiAgICAg aW5fYmxrX3NpemUgPSBpb19ibGtzaXplIChpbl9zdGF0X2J1Zik7CiAKKyAgdm9pZCAqYiA9 IHhtYWxsb2MgKGluX2Jsa19zaXplICsgMSArIHBhZ2Vfc2l6ZSAtIDEpOworICBjaGFyICpi dWYgPSBwdHJfYWxpZ24gKGIsIHBhZ2Vfc2l6ZSk7CisgIHNpemVfdCBpbml0aWFsX3JlYWQg PSBTSVpFX01BWDsKKwogICBpZiAoc3BsaXRfdHlwZSA9PSB0eXBlX2NodW5rX2J5dGVzIHx8 IHNwbGl0X3R5cGUgPT0gdHlwZV9jaHVua19saW5lcykKICAgICB7CiAgICAgICBvZmZfdCBp bnB1dF9vZmZzZXQgPSBsc2VlayAoU1RESU5fRklMRU5PLCAwLCBTRUVLX0NVUik7Ci0gICAg ICBpZiAodXNhYmxlX3N0X3NpemUgKCZpbl9zdGF0X2J1ZikpCi0gICAgICAgIGZpbGVfc2l6 ZSA9IGluX3N0YXRfYnVmLnN0X3NpemU7Ci0gICAgICBlbHNlIGlmICgwIDw9IGlucHV0X29m ZnNldCkKKyAgICAgIGlmICgwIDw9IGlucHV0X29mZnNldCkKICAgICAgICAgewotICAgICAg ICAgIGZpbGVfc2l6ZSA9IGxzZWVrIChTVERJTl9GSUxFTk8sIDAsIFNFRUtfRU5EKTsKLSAg ICAgICAgICBpbnB1dF9vZmZzZXQgPSAoZmlsZV9zaXplIDwgMAotICAgICAgICAgICAgICAg ICAgICAgICAgICA/IGZpbGVfc2l6ZQotICAgICAgICAgICAgICAgICAgICAgICAgICA6IGxz ZWVrIChTVERJTl9GSUxFTk8sIGlucHV0X29mZnNldCwgU0VFS19TRVQpKTsKKyAgICAgICAg ICBpZiAodXNhYmxlX3N0X3NpemUgKCZpbl9zdGF0X2J1ZikpCisgICAgICAgICAgICB7Cisg ICAgICAgICAgICAgIGZpbGVfc2l6ZSA9IGlucHV0X2ZpbGVfc2l6ZSAoU1RESU5fRklMRU5P LCBpbl9zdGF0X2J1Zi5zdF9zaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGJ1ZiwgaW5fYmxrX3NpemUpOworICAgICAgICAgICAgICBpZiAoZmls ZV9zaXplIDwgaW5fYmxrX3NpemUpCisgICAgICAgICAgICAgICAgaW5pdGlhbF9yZWFkID0g ZmlsZV9zaXplOworICAgICAgICAgICAgfQorICAgICAgICAgIGVsc2UKKyAgICAgICAgICAg IHsKKyAgICAgICAgICAgICAgZmlsZV9zaXplID0gbHNlZWsgKFNURElOX0ZJTEVOTywgMCwg U0VFS19FTkQpOworICAgICAgICAgICAgICBpbnB1dF9vZmZzZXQgPSAoZmlsZV9zaXplIDwg MAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPyBmaWxlX3NpemUKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIDogbHNlZWsgKFNURElOX0ZJTEVOTywgaW5wdXRfb2Zm c2V0LCBTRUVLX1NFVCkpOworICAgICAgICAgICAgICBmaWxlX3NpemUgLT0gaW5wdXRfb2Zm c2V0OworICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgICBpZiAoaW5wdXRfb2Zmc2V0 IDwgMCkKICAgICAgICAgZXJyb3IgKEVYSVRfRkFJTFVSRSwgMCwgXygiJXM6IGNhbm5vdCBk ZXRlcm1pbmUgZmlsZSBzaXplIiksCiAgICAgICAgICAgICAgICBxdW90ZSAoaW5maWxlKSk7 Ci0gICAgICBmaWxlX3NpemUgLT0gaW5wdXRfb2Zmc2V0OwogICAgICAgLyogT3ZlcmZsb3cs IGFuZCBzYW5pdHkgY2hlY2tpbmcuICAqLwogICAgICAgaWYgKE9GRl9UX01BWCA8IG5fdW5p dHMpCiAgICAgICAgIHsKQEAgLTE0MzEsOSArMTUxMyw2IEBAIG1haW4gKGludCBhcmdjLCBj aGFyICoqYXJndikKICAgICAgIGZpbGVfc2l6ZSA9IE1BWCAoZmlsZV9zaXplLCBuX3VuaXRz KTsKICAgICB9CiAKLSAgdm9pZCAqYiA9IHhtYWxsb2MgKGluX2Jsa19zaXplICsgMSArIHBh Z2Vfc2l6ZSAtIDEpOwotICBjaGFyICpidWYgPSBwdHJfYWxpZ24gKGIsIHBhZ2Vfc2l6ZSk7 Ci0KICAgLyogV2hlbiBmaWx0ZXJpbmcsIGNsb3N1cmUgb2Ygb25lIHBpcGUgbXVzdCBub3Qg dGVybWluYXRlIHRoZSBwcm9jZXNzLAogICAgICBhcyB0aGVyZSBtYXkgc3RpbGwgYmUgb3Ro ZXIgc3RyZWFtcyBleHBlY3RpbmcgaW5wdXQgZnJvbSB1cy4gICovCiAgIGlmIChmaWx0ZXJf Y29tbWFuZCkKQEAgLTE0NTQsNyArMTUzMyw3IEBAIG1haW4gKGludCBhcmdjLCBjaGFyICoq YXJndikKICAgICAgIGJyZWFrOwogCiAgICAgY2FzZSB0eXBlX2J5dGVzOgotICAgICAgYnl0 ZXNfc3BsaXQgKG5fdW5pdHMsIGJ1ZiwgaW5fYmxrX3NpemUsIDApOworICAgICAgYnl0ZXNf c3BsaXQgKG5fdW5pdHMsIGJ1ZiwgaW5fYmxrX3NpemUsIFNJWkVfTUFYLCAwKTsKICAgICAg IGJyZWFrOwogCiAgICAgY2FzZSB0eXBlX2J5dGVzbGluZXM6CkBAIC0xNDYzLDEzICsxNTQy LDE2IEBAIG1haW4gKGludCBhcmdjLCBjaGFyICoqYXJndikKIAogICAgIGNhc2UgdHlwZV9j aHVua19ieXRlczoKICAgICAgIGlmIChrX3VuaXRzID09IDApCi0gICAgICAgIGJ5dGVzX3Nw bGl0IChmaWxlX3NpemUgLyBuX3VuaXRzLCBidWYsIGluX2Jsa19zaXplLCBuX3VuaXRzKTsK KyAgICAgICAgYnl0ZXNfc3BsaXQgKGZpbGVfc2l6ZSAvIG5fdW5pdHMsIGJ1ZiwgaW5fYmxr X3NpemUsIGluaXRpYWxfcmVhZCwKKyAgICAgICAgICAgICAgICAgICAgIG5fdW5pdHMpOwog ICAgICAgZWxzZQotICAgICAgICBieXRlc19jaHVua19leHRyYWN0IChrX3VuaXRzLCBuX3Vu aXRzLCBidWYsIGluX2Jsa19zaXplLCBmaWxlX3NpemUpOworICAgICAgICBieXRlc19jaHVu a19leHRyYWN0IChrX3VuaXRzLCBuX3VuaXRzLCBidWYsIGluX2Jsa19zaXplLCBpbml0aWFs X3JlYWQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVfc2l6ZSk7CiAgICAg ICBicmVhazsKIAogICAgIGNhc2UgdHlwZV9jaHVua19saW5lczoKLSAgICAgIGxpbmVzX2No dW5rX3NwbGl0IChrX3VuaXRzLCBuX3VuaXRzLCBidWYsIGluX2Jsa19zaXplLCBmaWxlX3Np emUpOworICAgICAgbGluZXNfY2h1bmtfc3BsaXQgKGtfdW5pdHMsIG5fdW5pdHMsIGJ1Ziwg aW5fYmxrX3NpemUsIGluaXRpYWxfcmVhZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBm aWxlX3NpemUpOwogICAgICAgYnJlYWs7CiAKICAgICBjYXNlIHR5cGVfcnI6CmRpZmYgLS1n aXQgYS9zcmMvdGFjLmMgYi9zcmMvdGFjLmMKaW5kZXggMTkyZGJkMy4uMjQ4YWZhOSAxMDA2 NDQKLS0tIGEvc3JjL3RhYy5jCisrKyBiL3NyYy90YWMuYwpAQCAtMTg3LDEwICsxODcsMTEg QEAgb3V0cHV0IChjb25zdCBjaGFyICpzdGFydCwgY29uc3QgY2hhciAqcGFzdF9lbmQpCiB9 CiAKIC8qIFByaW50IGluIHJldmVyc2UgdGhlIGZpbGUgb3BlbiBvbiBkZXNjcmlwdG9yIEZE IGZvciByZWFkaW5nIEZJTEUuCisgICBUaGUgZmlsZSBpcyBhbHJlYWR5IHBvc2l0aW9uZWQg YXQgRklMRV9QT1MsIHdoaWNoIHNob3VsZCBiZSBuZWFyIGl0cyBlbmQuCiAgICBSZXR1cm4g dHJ1ZSBpZiBzdWNjZXNzZnVsLiAgKi8KIAogc3RhdGljIGJvb2wKLXRhY19zZWVrYWJsZSAo aW50IGlucHV0X2ZkLCBjb25zdCBjaGFyICpmaWxlKQordGFjX3NlZWthYmxlIChpbnQgaW5w dXRfZmQsIGNvbnN0IGNoYXIgKmZpbGUsIG9mZl90IGZpbGVfcG9zKQogewogICAvKiBQb2lu dGVyIHRvIHRoZSBsb2NhdGlvbiBpbiAnR19idWZmZXInIHdoZXJlIHRoZSBzZWFyY2ggZm9y CiAgICAgIHRoZSBuZXh0IHNlcGFyYXRvciB3aWxsIGJlZ2luLiAqLwpAQCAtMjAzLDkgKzIw NCw2IEBAIHRhY19zZWVrYWJsZSAoaW50IGlucHV0X2ZkLCBjb25zdCBjaGFyICpmaWxlKQog ICAvKiBMZW5ndGggb2YgdGhlIHJlY29yZCBncm93aW5nIGluICdHX2J1ZmZlcicuICovCiAg IHNpemVfdCBzYXZlZF9yZWNvcmRfc2l6ZTsKIAotICAvKiBPZmZzZXQgaW4gdGhlIGZpbGUg b2YgdGhlIG5leHQgcmVhZC4gKi8KLSAgb2ZmX3QgZmlsZV9wb3M7Ci0KICAgLyogVHJ1ZSBp ZiAnb3V0cHV0JyBoYXMgbm90IGJlZW4gY2FsbGVkIHlldCBmb3IgYW55IGZpbGUuCiAgICAg IE9ubHkgdXNlZCB3aGVuIHRoZSBzZXBhcmF0b3IgaXMgYXR0YWNoZWQgdG8gdGhlIHByZWNl ZGluZyByZWNvcmQuICovCiAgIGJvb2wgZmlyc3RfdGltZSA9IHRydWU7CkBAIC0yMTMsMjcg KzIxMSw0MyBAQCB0YWNfc2Vla2FibGUgKGludCBpbnB1dF9mZCwgY29uc3QgY2hhciAqZmls ZSkKICAgY2hhciBjb25zdCAqc2VwYXJhdG9yMSA9IHNlcGFyYXRvciArIDE7IC8qIFNwZWVk IG9wdGltaXphdGlvbiwgbm9uLXJlZ2V4cC4gKi8KICAgc2l6ZV90IG1hdGNoX2xlbmd0aDEg PSBtYXRjaF9sZW5ndGggLSAxOyAvKiBTcGVlZCBvcHRpbWl6YXRpb24sIG5vbi1yZWdleHAu ICovCiAKLSAgLyogRmluZCB0aGUgc2l6ZSBvZiB0aGUgaW5wdXQgZmlsZS4gKi8KLSAgZmls ZV9wb3MgPSBsc2VlayAoaW5wdXRfZmQsIDAsIFNFRUtfRU5EKTsKLSAgaWYgKGZpbGVfcG9z IDwgMSkKLSAgICByZXR1cm4gdHJ1ZTsJCQkvKiBJdCdzIGFuIGVtcHR5IGZpbGUuICovCi0K ICAgLyogQXJyYW5nZSBmb3IgdGhlIGZpcnN0IHJlYWQgdG8gbG9wIG9mZiBlbm91Z2ggdG8g bGVhdmUgdGhlIHJlc3Qgb2YgdGhlCiAgICAgIGZpbGUgYSBtdWx0aXBsZSBvZiAncmVhZF9z aXplJy4gIFNpbmNlICdyZWFkX3NpemUnIGNhbiBjaGFuZ2UsIHRoaXMgbWF5CiAgICAgIG5v dCBhbHdheXMgaG9sZCBkdXJpbmcgdGhlIHByb2dyYW0gcnVuLCBidXQgc2luY2UgaXQgdXN1 YWxseSB3aWxsLCBsZWF2ZQogICAgICBpdCBoZXJlIGZvciBpL28gZWZmaWNpZW5jeSAocGFn ZS9zZWN0b3IgYm91bmRhcmllcyBhbmQgYWxsIHRoYXQpLgogICAgICBOb3RlOiB0aGUgZWZm aWNpZW5jeSBnYWluIGhhcyBub3QgYmVlbiB2ZXJpZmllZC4gKi8KLSAgc2F2ZWRfcmVjb3Jk X3NpemUgPSBmaWxlX3BvcyAlIHJlYWRfc2l6ZTsKLSAgaWYgKHNhdmVkX3JlY29yZF9zaXpl ID09IDApCi0gICAgc2F2ZWRfcmVjb3JkX3NpemUgPSByZWFkX3NpemU7Ci0gIGZpbGVfcG9z IC09IHNhdmVkX3JlY29yZF9zaXplOwotICAvKiAnZmlsZV9wb3MnIG5vdyBwb2ludHMgdG8g dGhlIHN0YXJ0IG9mIHRoZSBsYXN0IChwcm9iYWJseSBwYXJ0aWFsKSBibG9jawotICAgICBp biB0aGUgaW5wdXQgZmlsZS4gKi8KKyAgc2l6ZV90IHJlbWFpbmRlciA9IGZpbGVfcG9zICUg cmVhZF9zaXplOworICBpZiAocmVtYWluZGVyICE9IDApCisgICAgeworICAgICAgZmlsZV9w b3MgLT0gcmVtYWluZGVyOworICAgICAgaWYgKGxzZWVrIChpbnB1dF9mZCwgZmlsZV9wb3Ms IFNFRUtfU0VUKSA8IDApCisgICAgICAgIGVycm9yICgwLCBlcnJubywgXygiJXM6IHNlZWsg ZmFpbGVkIiksIHF1b3RlYXJnX2NvbG9uIChmaWxlKSk7CisgICAgfQogCi0gIGlmIChsc2Vl ayAoaW5wdXRfZmQsIGZpbGVfcG9zLCBTRUVLX1NFVCkgPCAwKQotICAgIGVycm9yICgwLCBl cnJubywgXygiJXM6IHNlZWsgZmFpbGVkIiksIHF1b3RlYXJnX2NvbG9uIChmaWxlKSk7Cisg IC8qIFNjYW4gYmFja3dhcmQsIGxvb2tpbmcgZm9yIGVuZCBvZiBmaWxlLiAgVGhpcyBjYXRl cnMgdG8gcHJvYy1saWtlCisgICAgIGZpbGUgc3lzdGVtcyB3aGVyZSB0aGUgZmlsZSBzaXpl IGlzIGp1c3QgYW4gZXN0aW1hdGUuICAqLworICB3aGlsZSAoKHNhdmVkX3JlY29yZF9zaXpl ID0gc2FmZV9yZWFkIChpbnB1dF9mZCwgR19idWZmZXIsIHJlYWRfc2l6ZSkpID09IDAKKyAg ICAgICAgICYmIGZpbGVfcG9zICE9IDApCisgICAgeworICAgICAgb2ZmX3QgcnNpemUgPSBy ZWFkX3NpemU7CisgICAgICBpZiAobHNlZWsgKGlucHV0X2ZkLCAtcnNpemUsIFNFRUtfQ1VS KSA8IDApCisgICAgICAgIGVycm9yICgwLCBlcnJubywgXygiJXM6IHNlZWsgZmFpbGVkIiks IHF1b3RlYXJnX2NvbG9uIChmaWxlKSk7CisgICAgICBmaWxlX3BvcyAtPSByZWFkX3NpemU7 CisgICAgfQogCi0gIGlmIChzYWZlX3JlYWQgKGlucHV0X2ZkLCBHX2J1ZmZlciwgc2F2ZWRf cmVjb3JkX3NpemUpICE9IHNhdmVkX3JlY29yZF9zaXplKQorICAvKiBOb3cgc2NhbiBmb3J3 YXJkLCBsb29raW5nIGZvciBlbmQgb2YgZmlsZS4gICovCisgIHdoaWxlIChzYXZlZF9yZWNv cmRfc2l6ZSA9PSByZWFkX3NpemUpCisgICAgeworICAgICAgc2l6ZV90IG5yZWFkID0gc2Fm ZV9yZWFkIChpbnB1dF9mZCwgR19idWZmZXIsIHJlYWRfc2l6ZSk7CisgICAgICBpZiAobnJl YWQgPT0gMCkKKyAgICAgICAgYnJlYWs7CisgICAgICBzYXZlZF9yZWNvcmRfc2l6ZSA9IG5y ZWFkOworICAgICAgaWYgKHNhdmVkX3JlY29yZF9zaXplID09IFNBRkVfUkVBRF9FUlJPUikK KyAgICAgICAgYnJlYWs7CisgICAgICBmaWxlX3BvcyArPSBucmVhZDsKKyAgICB9CisKKyAg aWYgKHNhdmVkX3JlY29yZF9zaXplID09IFNBRkVfUkVBRF9FUlJPUikKICAgICB7CiAgICAg ICBlcnJvciAoMCwgZXJybm8sIF8oIiVzOiByZWFkIGVycm9yIiksIHF1b3RlYXJnX2NvbG9u IChmaWxlKSk7CiAgICAgICByZXR1cm4gZmFsc2U7CkBAIC00ODUsMTUgKzQ5OSwxNiBAQCB0 ZW1wX3N0cmVhbSAoRklMRSAqKmZwLCBjaGFyICoqZmlsZV9uYW1lKQogCiAvKiBDb3B5IGZy b20gZmlsZSBkZXNjcmlwdG9yIElOUFVUX0ZEIChjb3JyZXNwb25kaW5nIHRvIHRoZSBuYW1l ZCBGSUxFKSB0bwogICAgYSB0ZW1wb3JhcnkgZmlsZSwgYW5kIHNldCAqR19UTVAgYW5kICpH X1RFTVBGSUxFIHRvIHRoZSByZXN1bHRpbmcgc3RyZWFtCi0gICBhbmQgZmlsZSBuYW1lLiAg UmV0dXJuIHRydWUgaWYgc3VjY2Vzc2Z1bC4gICovCisgICBhbmQgZmlsZSBuYW1lLiAgUmV0 dXJuIHRoZSBudW1iZXIgb2YgYnl0ZXMgY29waWVkLCBvciAtMSBvbiBlcnJvci4gICovCiAK LXN0YXRpYyBib29sCitzdGF0aWMgb2ZmX3QKIGNvcHlfdG9fdGVtcCAoRklMRSAqKmdfdG1w LCBjaGFyICoqZ190ZW1wZmlsZSwgaW50IGlucHV0X2ZkLCBjaGFyIGNvbnN0ICpmaWxlKQog ewogICBGSUxFICpmcDsKICAgY2hhciAqZmlsZV9uYW1lOworICBvZmZfdCBieXRlc19jb3Bp ZWQgPSAwOwogICBpZiAoIXRlbXBfc3RyZWFtICgmZnAsICZmaWxlX25hbWUpKQotICAgIHJl dHVybiBmYWxzZTsKKyAgICByZXR1cm4gLTE7CiAKICAgd2hpbGUgKDEpCiAgICAgewpAQCAt NTExLDYgKzUyNiw4IEBAIGNvcHlfdG9fdGVtcCAoRklMRSAqKmdfdG1wLCBjaGFyICoqZ190 ZW1wZmlsZSwgaW50IGlucHV0X2ZkLCBjaGFyIGNvbnN0ICpmaWxlKQogICAgICAgICAgIGVy cm9yICgwLCBlcnJubywgXygiJXM6IHdyaXRlIGVycm9yIiksIHF1b3RlYXJnX2NvbG9uIChm aWxlX25hbWUpKTsKICAgICAgICAgICBnb3RvIEZhaWw7CiAgICAgICAgIH0KKworICAgICAg Ynl0ZXNfY29waWVkICs9IGJ5dGVzX3JlYWQ7CiAgICAgfQogCiAgIGlmIChmZmx1c2ggKGZw KSAhPSAwKQpAQCAtNTIxLDExICs1MzgsMTEgQEAgY29weV90b190ZW1wIChGSUxFICoqZ190 bXAsIGNoYXIgKipnX3RlbXBmaWxlLCBpbnQgaW5wdXRfZmQsIGNoYXIgY29uc3QgKmZpbGUp CiAKICAgKmdfdG1wID0gZnA7CiAgICpnX3RlbXBmaWxlID0gZmlsZV9uYW1lOwotICByZXR1 cm4gdHJ1ZTsKKyAgcmV0dXJuIGJ5dGVzX2NvcGllZDsKIAogIEZhaWw6CiAgIGZjbG9zZSAo ZnApOwotICByZXR1cm4gZmFsc2U7CisgIHJldHVybiAtMTsKIH0KIAogLyogQ29weSBJTlBV VF9GRCB0byBhIHRlbXBvcmFyeSwgdGhlbiB0YWMgdGhhdCBmaWxlLgpAQCAtNTM2LDEwICs1 NTMsMTEgQEAgdGFjX25vbnNlZWthYmxlIChpbnQgaW5wdXRfZmQsIGNvbnN0IGNoYXIgKmZp bGUpCiB7CiAgIEZJTEUgKnRtcF9zdHJlYW07CiAgIGNoYXIgKnRtcF9maWxlOwotICBpZiAo IWNvcHlfdG9fdGVtcCAoJnRtcF9zdHJlYW0sICZ0bXBfZmlsZSwgaW5wdXRfZmQsIGZpbGUp KQorICBvZmZfdCBieXRlc19jb3BpZWQgPSBjb3B5X3RvX3RlbXAgKCZ0bXBfc3RyZWFtLCAm dG1wX2ZpbGUsIGlucHV0X2ZkLCBmaWxlKTsKKyAgaWYgKGJ5dGVzX2NvcGllZCA8IDApCiAg ICAgcmV0dXJuIGZhbHNlOwogCi0gIGJvb2wgb2sgPSB0YWNfc2Vla2FibGUgKGZpbGVubyAo dG1wX3N0cmVhbSksIHRtcF9maWxlKTsKKyAgYm9vbCBvayA9IHRhY19zZWVrYWJsZSAoZmls ZW5vICh0bXBfc3RyZWFtKSwgdG1wX2ZpbGUsIGJ5dGVzX2NvcGllZCk7CiAgIHJldHVybiBv azsKIH0KIApAQCAtNTc4LDcgKzU5Niw3IEBAIHRhY19maWxlIChjb25zdCBjaGFyICpmaWxl bmFtZSkKIAogICBvayA9IChmaWxlX3NpemUgPCAwIHx8IGlzYXR0eSAoZmQpCiAgICAgICAg ID8gdGFjX25vbnNlZWthYmxlIChmZCwgZmlsZW5hbWUpCi0gICAgICAgIDogdGFjX3NlZWth YmxlIChmZCwgZmlsZW5hbWUpKTsKKyAgICAgICAgOiB0YWNfc2Vla2FibGUgKGZkLCBmaWxl bmFtZSwgZmlsZV9zaXplKSk7CiAKICAgaWYgKCFpc19zdGRpbiAmJiBjbG9zZSAoZmQpICE9 IDApCiAgICAgewpkaWZmIC0tZ2l0IGEvc3JjL3RhaWwuYyBiL3NyYy90YWlsLmMKaW5kZXgg ZjVkMjU4NS4uNGM1Zjk0MyAxMDA2NDQKLS0tIGEvc3JjL3RhaWwuYworKysgYi9zcmMvdGFp bC5jCkBAIC00MCw2ICs0MCw3IEBACiAjaW5jbHVkZSAicG9zaXh2ZXIuaCIKICNpbmNsdWRl ICJxdW90ZS5oIgogI2luY2x1ZGUgInNhZmUtcmVhZC5oIgorI2luY2x1ZGUgInN0YXQtc2l6 ZS5oIgogI2luY2x1ZGUgInN0YXQtdGltZS5oIgogI2luY2x1ZGUgInhmcmVvcGVuLmgiCiAj aW5jbHVkZSAieG5hbm9zbGVlcC5oIgpAQCAtMTY2NSw0MCArMTY2NiwzMCBAQCB0YWlsX2J5 dGVzIChjb25zdCBjaGFyICpwcmV0dHlfZmlsZW5hbWUsIGludCBmZCwgdWludG1heF90IG5f Ynl0ZXMsCiAgICAgICAgICAgaWYgKHQpCiAgICAgICAgICAgICByZXR1cm4gdCA8IDA7CiAg ICAgICAgIH0KLSAgICAgICpyZWFkX3BvcyArPSBkdW1wX3JlbWFpbmRlciAocHJldHR5X2Zp bGVuYW1lLCBmZCwgQ09QWV9UT19FT0YpOworICAgICAgbl9ieXRlcyA9IENPUFlfVE9fRU9G OwogICAgIH0KICAgZWxzZQogICAgIHsKLSAgICAgIGlmICggISBwcmVzdW1lX2lucHV0X3Bp cGUKLSAgICAgICAgICAgJiYgU19JU1JFRyAoc3RhdHMuc3RfbW9kZSkgJiYgbl9ieXRlcyA8 PSBPRkZfVF9NQVgpCisgICAgICBvZmZfdCBlbmRfcG9zID0gKCghIHByZXN1bWVfaW5wdXRf cGlwZSAmJiB1c2FibGVfc3Rfc2l6ZSAoJnN0YXRzKQorICAgICAgICAgICAgICAgICAgICAg ICAgJiYgbl9ieXRlcyA8PSBPRkZfVF9NQVgpCisgICAgICAgICAgICAgICAgICAgICAgID8g c3RhdHMuc3Rfc2l6ZSA6IC0xKTsKKyAgICAgIGlmIChlbmRfcG9zIDw9IFNUX0JMS1NJWkUg KHN0YXRzKSkKKyAgICAgICAgcmV0dXJuIHBpcGVfYnl0ZXMgKHByZXR0eV9maWxlbmFtZSwg ZmQsIG5fYnl0ZXMsIHJlYWRfcG9zKTsKKyAgICAgIG9mZl90IGN1cnJlbnRfcG9zID0geGxz ZWVrIChmZCwgMCwgU0VFS19DVVIsIHByZXR0eV9maWxlbmFtZSk7CisgICAgICBpZiAoY3Vy cmVudF9wb3MgPCBlbmRfcG9zKQogICAgICAgICB7Ci0gICAgICAgICAgb2ZmX3QgY3VycmVu dF9wb3MgPSB4bHNlZWsgKGZkLCAwLCBTRUVLX0NVUiwgcHJldHR5X2ZpbGVuYW1lKTsKLSAg ICAgICAgICBvZmZfdCBlbmRfcG9zID0geGxzZWVrIChmZCwgMCwgU0VFS19FTkQsIHByZXR0 eV9maWxlbmFtZSk7Ci0gICAgICAgICAgb2ZmX3QgZGlmZiA9IGVuZF9wb3MgLSBjdXJyZW50 X3BvczsKLSAgICAgICAgICAvKiBCZSBjYXJlZnVsIGhlcmUuICBUaGUgY3VycmVudCBwb3Np dGlvbiBtYXkgYWN0dWFsbHkgYmUKLSAgICAgICAgICAgICBiZXlvbmQgdGhlIGVuZCBvZiB0 aGUgZmlsZS4gICovCi0gICAgICAgICAgb2ZmX3QgYnl0ZXNfcmVtYWluaW5nID0gZGlmZiA8 IDAgPyAwIDogZGlmZjsKLSAgICAgICAgICBvZmZfdCBuYiA9IG5fYnl0ZXM7Ci0KLSAgICAg ICAgICBpZiAoYnl0ZXNfcmVtYWluaW5nIDw9IG5iKQotICAgICAgICAgICAgewotICAgICAg ICAgICAgICAvKiBGcm9tIHRoZSBjdXJyZW50IHBvc2l0aW9uIHRvIGVuZCBvZiBmaWxlLCB0 aGVyZSBhcmUgbm8KLSAgICAgICAgICAgICAgICAgbW9yZSBieXRlcyB0aGFuIGhhdmUgYmVl biByZXF1ZXN0ZWQuICBTbyByZXBvc2l0aW9uIHRoZQotICAgICAgICAgICAgICAgICBmaWxl IHBvaW50ZXIgdG8gdGhlIGluY29taW5nIGN1cnJlbnQgcG9zaXRpb24gYW5kIHByaW50Ci0g ICAgICAgICAgICAgICAgIGV2ZXJ5dGhpbmcgYWZ0ZXIgdGhhdC4gICovCi0gICAgICAgICAg ICAgICpyZWFkX3BvcyA9IHhsc2VlayAoZmQsIGN1cnJlbnRfcG9zLCBTRUVLX1NFVCwgcHJl dHR5X2ZpbGVuYW1lKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICBlbHNlCisgICAgICAg ICAgb2ZmX3QgYnl0ZXNfcmVtYWluaW5nID0gZW5kX3BvcyAtIGN1cnJlbnRfcG9zOworCisg ICAgICAgICAgaWYgKG5fYnl0ZXMgPCBieXRlc19yZW1haW5pbmcpCiAgICAgICAgICAgICB7 Ci0gICAgICAgICAgICAgIC8qIFRoZXJlIGFyZSBtb3JlIGJ5dGVzIHJlbWFpbmluZyB0aGFu IHdlcmUgcmVxdWVzdGVkLgotICAgICAgICAgICAgICAgICBCYWNrIHVwLiAgKi8KLSAgICAg ICAgICAgICAgKnJlYWRfcG9zID0geGxzZWVrIChmZCwgLW5iLCBTRUVLX0VORCwgcHJldHR5 X2ZpbGVuYW1lKTsKKyAgICAgICAgICAgICAgY3VycmVudF9wb3MgPSBlbmRfcG9zIC0gbl9i eXRlczsKKyAgICAgICAgICAgICAgeGxzZWVrIChmZCwgY3VycmVudF9wb3MsIFNFRUtfU0VU LCBwcmV0dHlfZmlsZW5hbWUpOwogICAgICAgICAgICAgfQotICAgICAgICAgICpyZWFkX3Bv cyArPSBkdW1wX3JlbWFpbmRlciAocHJldHR5X2ZpbGVuYW1lLCBmZCwgbl9ieXRlcyk7CiAg ICAgICAgIH0KLSAgICAgIGVsc2UKLSAgICAgICAgcmV0dXJuIHBpcGVfYnl0ZXMgKHByZXR0 eV9maWxlbmFtZSwgZmQsIG5fYnl0ZXMsIHJlYWRfcG9zKTsKKyAgICAgICpyZWFkX3BvcyA9 IGN1cnJlbnRfcG9zOwogICAgIH0KKworICAqcmVhZF9wb3MgKz0gZHVtcF9yZW1haW5kZXIg KHByZXR0eV9maWxlbmFtZSwgZmQsIG5fYnl0ZXMpOwogICByZXR1cm4gdHJ1ZTsKIH0KIApk aWZmIC0tZ2l0IGEvc3JjL3djLmMgYi9zcmMvd2MuYwppbmRleCAxZmYwMDdkLi4yNDA2OWY3 IDEwMDY0NAotLS0gYS9zcmMvd2MuYworKysgYi9zcmMvd2MuYwpAQCAtMTg0LDkgKzE4NCwx MCBAQCB3cml0ZV9jb3VudHMgKHVpbnRtYXhfdCBsaW5lcywKIAogLyogQ291bnQgd29yZHMu ICBGSUxFX1ggaXMgdGhlIG5hbWUgb2YgdGhlIGZpbGUgKG9yIE5VTEwgZm9yIHN0YW5kYXJk CiAgICBpbnB1dCkgdGhhdCBpcyBvcGVuIG9uIGRlc2NyaXB0b3IgRkQuICAqRlNUQVRVUyBp cyBpdHMgc3RhdHVzLgorICAgQ1VSUkVOVF9QT1MgaXMgdGhlIGN1cnJlbnQgZmlsZSBvZmZz ZXQgaWYga25vd24sIG5lZ2F0aXZlIGlmIHVua25vd24uCiAgICBSZXR1cm4gdHJ1ZSBpZiBz dWNjZXNzZnVsLiAgKi8KIHN0YXRpYyBib29sCi13YyAoaW50IGZkLCBjaGFyIGNvbnN0ICpm aWxlX3gsIHN0cnVjdCBmc3RhdHVzICpmc3RhdHVzKQord2MgKGludCBmZCwgY2hhciBjb25z dCAqZmlsZV94LCBzdHJ1Y3QgZnN0YXR1cyAqZnN0YXR1cywgb2ZmX3QgY3VycmVudF9wb3Mp CiB7CiAgIGJvb2wgb2sgPSB0cnVlOwogICBjaGFyIGJ1ZltCVUZGRVJfU0laRSArIDFdOwpA QCAtMjI5LDMyICsyMzAsMzQgQEAgd2MgKGludCBmZCwgY2hhciBjb25zdCAqZmlsZV94LCBz dHJ1Y3QgZnN0YXR1cyAqZnN0YXR1cykKIAogICBpZiAoY291bnRfYnl0ZXMgJiYgIWNvdW50 X2NoYXJzICYmICFwcmludF9saW5lcyAmJiAhY291bnRfY29tcGxpY2F0ZWQpCiAgICAgewot ICAgICAgb2ZmX3QgY3VycmVudF9wb3MsIGVuZF9wb3M7Ci0KICAgICAgIGlmICgwIDwgZnN0 YXR1cy0+ZmFpbGVkKQogICAgICAgICBmc3RhdHVzLT5mYWlsZWQgPSBmc3RhdCAoZmQsICZm c3RhdHVzLT5zdCk7CiAKLSAgICAgIGlmICghIGZzdGF0dXMtPmZhaWxlZCAmJiBTX0lTUkVH IChmc3RhdHVzLT5zdC5zdF9tb2RlKQotICAgICAgICAgICYmIChjdXJyZW50X3BvcyA9IGxz ZWVrIChmZCwgMCwgU0VFS19DVVIpKSAhPSAtMQotICAgICAgICAgICYmIChlbmRfcG9zID0g bHNlZWsgKGZkLCAwLCBTRUVLX0VORCkpICE9IC0xKQorICAgICAgLyogRm9yIHNpemVkIGZp bGVzLCBzZWVrIHRvIG9uZSBidWZmZXIgYmVmb3JlIEVPRiByYXRoZXIgdGhhbiB0byBFT0Yu CisgICAgICAgICBUaGlzIHdvcmtzIGJldHRlciBmb3IgZmlsZXMgaW4gcHJvYy1saWtlIGZp bGUgc3lzdGVtcyB3aGVyZQorICAgICAgICAgdGhlIHNpemUgaXMgb25seSBhcHByb3hpbWF0 ZS4gICovCisgICAgICBpZiAoISBmc3RhdHVzLT5mYWlsZWQgJiYgdXNhYmxlX3N0X3NpemUg KCZmc3RhdHVzLT5zdCkKKyAgICAgICAgICAmJiAwIDw9IGZzdGF0dXMtPnN0LnN0X3NpemUp CiAgICAgICAgIHsKLSAgICAgICAgICAvKiBCZSBjYXJlZnVsIGhlcmUuICBUaGUgY3VycmVu dCBwb3NpdGlvbiBtYXkgYWN0dWFsbHkgYmUKLSAgICAgICAgICAgICBiZXlvbmQgdGhlIGVu ZCBvZiB0aGUgZmlsZS4gIEFzIGluIHRoZSBleGFtcGxlIGFib3ZlLiAgKi8KLSAgICAgICAg ICBieXRlcyA9IGVuZF9wb3MgPCBjdXJyZW50X3BvcyA/IDAgOiBlbmRfcG9zIC0gY3VycmVu dF9wb3M7CisgICAgICAgICAgc2l6ZV90IGVuZF9wb3MgPSBmc3RhdHVzLT5zdC5zdF9zaXpl OworICAgICAgICAgIG9mZl90IGhpX3BvcyA9IGVuZF9wb3MgLSBlbmRfcG9zICUgQlVGRkVS X1NJWkU7CisgICAgICAgICAgaWYgKGN1cnJlbnRfcG9zIDwgMCkKKyAgICAgICAgICAgIGN1 cnJlbnRfcG9zID0gbHNlZWsgKGZkLCAwLCBTRUVLX0NVUik7CisgICAgICAgICAgaWYgKDAg PD0gY3VycmVudF9wb3MgJiYgY3VycmVudF9wb3MgPCBoaV9wb3MKKyAgICAgICAgICAgICAg JiYgMCA8PSBsc2VlayAoZmQsIGhpX3BvcywgU0VFS19DVVIpKQorICAgICAgICAgICAgYnl0 ZXMgPSBoaV9wb3MgLSBjdXJyZW50X3BvczsKICAgICAgICAgfQotICAgICAgZWxzZQorCisg ICAgICBmZGFkdmlzZSAoZmQsIDAsIDAsIEZBRFZJU0VfU0VRVUVOVElBTCk7CisgICAgICB3 aGlsZSAoKGJ5dGVzX3JlYWQgPSBzYWZlX3JlYWQgKGZkLCBidWYsIEJVRkZFUl9TSVpFKSkg PiAwKQogICAgICAgICB7Ci0gICAgICAgICAgZmRhZHZpc2UgKGZkLCAwLCAwLCBGQURWSVNF X1NFUVVFTlRJQUwpOwotICAgICAgICAgIHdoaWxlICgoYnl0ZXNfcmVhZCA9IHNhZmVfcmVh ZCAoZmQsIGJ1ZiwgQlVGRkVSX1NJWkUpKSA+IDApCisgICAgICAgICAgaWYgKGJ5dGVzX3Jl YWQgPT0gU0FGRV9SRUFEX0VSUk9SKQogICAgICAgICAgICAgewotICAgICAgICAgICAgICBp ZiAoYnl0ZXNfcmVhZCA9PSBTQUZFX1JFQURfRVJST1IpCi0gICAgICAgICAgICAgICAgewot ICAgICAgICAgICAgICAgICAgZXJyb3IgKDAsIGVycm5vLCAiJXMiLCBmaWxlKTsKLSAgICAg ICAgICAgICAgICAgIG9rID0gZmFsc2U7Ci0gICAgICAgICAgICAgICAgICBicmVhazsKLSAg ICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgIGJ5dGVzICs9IGJ5dGVzX3JlYWQ7Cisg ICAgICAgICAgICAgIGVycm9yICgwLCBlcnJubywgIiVzIiwgZmlsZSk7CisgICAgICAgICAg ICAgIG9rID0gZmFsc2U7CisgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgfQor ICAgICAgICAgIGJ5dGVzICs9IGJ5dGVzX3JlYWQ7CiAgICAgICAgIH0KICAgICB9CiAgIGVs c2UgaWYgKCFjb3VudF9jaGFycyAmJiAhY291bnRfY29tcGxpY2F0ZWQpCkBAIC01MDAsNyAr NTAzLDcgQEAgd2NfZmlsZSAoY2hhciBjb25zdCAqZmlsZSwgc3RydWN0IGZzdGF0dXMgKmZz dGF0dXMpCiAgICAgICBoYXZlX3JlYWRfc3RkaW4gPSB0cnVlOwogICAgICAgaWYgKE9fQklO QVJZICYmICEgaXNhdHR5IChTVERJTl9GSUxFTk8pKQogICAgICAgICB4ZnJlb3BlbiAoTlVM TCwgInJiIiwgc3RkaW4pOwotICAgICAgcmV0dXJuIHdjIChTVERJTl9GSUxFTk8sIGZpbGUs IGZzdGF0dXMpOworICAgICAgcmV0dXJuIHdjIChTVERJTl9GSUxFTk8sIGZpbGUsIGZzdGF0 dXMsIC0xKTsKICAgICB9CiAgIGVsc2UKICAgICB7CkBAIC01MTIsNyArNTE1LDcgQEAgd2Nf ZmlsZSAoY2hhciBjb25zdCAqZmlsZSwgc3RydWN0IGZzdGF0dXMgKmZzdGF0dXMpCiAgICAg ICAgIH0KICAgICAgIGVsc2UKICAgICAgICAgewotICAgICAgICAgIGJvb2wgb2sgPSB3YyAo ZmQsIGZpbGUsIGZzdGF0dXMpOworICAgICAgICAgIGJvb2wgb2sgPSB3YyAoZmQsIGZpbGUs IGZzdGF0dXMsIDApOwogICAgICAgICAgIGlmIChjbG9zZSAoZmQpICE9IDApCiAgICAgICAg ICAgICB7CiAgICAgICAgICAgICAgIGVycm9yICgwLCBlcnJubywgIiVzIiwgZmlsZSk7CmRp ZmYgLS1naXQgYS90ZXN0cy9sb2NhbC5tayBiL3Rlc3RzL2xvY2FsLm1rCmluZGV4IDg0OThh Y2IuLmUwMWY0ZDggMTAwNjQ0Ci0tLSBhL3Rlc3RzL2xvY2FsLm1rCisrKyBiL3Rlc3RzL2xv Y2FsLm1rCkBAIC0yNTYsNiArMjU2LDcgQEAgYWxsX3Rlc3RzID0JCQkJCVwKICAgdGVzdHMv bWlzYy93Yy1maWxlczAtZnJvbS5wbAkJCVwKICAgdGVzdHMvbWlzYy93Yy1maWxlczAuc2gJ CQlcCiAgIHRlc3RzL21pc2Mvd2MtcGFyYWxsZWwuc2gJCQlcCisgIHRlc3RzL21pc2Mvd2Mt cHJvYy5zaAkJCQlcCiAgIHRlc3RzL21pc2MvY2F0LXByb2Muc2gJCQlcCiAgIHRlc3RzL21p c2MvY2F0LWJ1Zi5zaAkJCQlcCiAgIHRlc3RzL21pc2MvY2F0LXNlbGYuc2gJCQlcCkBAIC0y OTUsNiArMjk2LDcgQEAgYWxsX3Rlc3RzID0JCQkJCVwKICAgdGVzdHMvbWlzYy9ucHJvYy1w b3NpdGl2ZS5zaAkJCVwKICAgdGVzdHMvbWlzYy9udW1mbXQucGwJCQkJXAogICB0ZXN0cy9t aXNjL29kLU4uc2gJCQkJXAorICB0ZXN0cy9taXNjL29kLWouc2gJCQkJXAogICB0ZXN0cy9t aXNjL29kLW11bHRpcGxlLXQuc2gJCQlcCiAgIHRlc3RzL21pc2Mvb2QteDguc2gJCQkJXAog ICB0ZXN0cy9taXNjL3Bhc3RlLnBsCQkJCVwKQEAgLTM5OSw2ICs0MDEsNyBAQCBhbGxfdGVz dHMgPQkJCQkJXAogICB0ZXN0cy90YWlsLTIvd2FpdC5zaAkJCQlcCiAgIHRlc3RzL3RhaWwt Mi9yZXRyeS5zaAkJCQlcCiAgIHRlc3RzL3RhaWwtMi9zeW1saW5rLnNoCQkJCVwKKyAgdGVz dHMvdGFpbC0yL3RhaWwtYy5zaAkJCVwKICAgdGVzdHMvY2htb2QvYy1vcHRpb24uc2gJCQlc CiAgIHRlc3RzL2NobW9kL2VxdWFsLXguc2gJCQlcCiAgIHRlc3RzL2NobW9kL2VxdWFscy5z aAkJCQlcCmRpZmYgLS1naXQgYS90ZXN0cy9taXNjL2hlYWQtYy5zaCBiL3Rlc3RzL21pc2Mv aGVhZC1jLnNoCmluZGV4IGQ2NDMzZDAuLjgwN2U5NjUgMTAwNzU1Ci0tLSBhL3Rlc3RzL21p c2MvaGVhZC1jLnNoCisrKyBiL3Rlc3RzL21pc2MvaGVhZC1jLnNoCkBAIC00Miw0ICs0Miwx NiBAQCBlc2FjCiAjIGJhc2VkIG9uIHRoZSB2YWx1ZSBwYXNzZWQgdG8gLWMKICh1bGltaXQg LXYgMjAwMDA7IGhlYWQgLS1ieXRlcz0tJFNTSVpFX01BWCA8IC9kZXYvbnVsbCkgfHwgZmFp bD0xCiAKKyMgTWFrZSBzdXJlIGl0IHdvcmtzIG9uIGZ1bm55IGZpbGVzIGluIC9wcm9jIGFu ZCAvc3lzLgorCitmb3IgZmlsZSBpbiAvcHJvYy9jcHVpbmZvIC9zeXMva2VybmVsL3Byb2Zp bGluZzsgZG8KKyAgaWYgdGVzdCAtciAkZmlsZTsgdGhlbgorICAgIGNwIC1mICRmaWxlIGNv cHkgJiYKKyAgICBoZWFkIC1jIC0xIGNvcHkgPiBleHAxIHx8IGZyYW1ld29ya19mYWlsdXJl XworCisgICAgaGVhZCAtYyAtMSAkZmlsZSA+IG91dDEgfHwgZmFpbD0xCisgICAgY29tcGFy ZSBleHAxIG91dDEgfHwgZmFpbD0xCisgIGZpCitkb25lCisKIEV4aXQgJGZhaWwKZGlmZiAt LWdpdCBhL3Rlc3RzL21pc2Mvb2Qtai5zaCBiL3Rlc3RzL21pc2Mvb2Qtai5zaApuZXcgZmls ZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi5hNDBhOTlmCi0tLSAvZGV2L251bGwKKysr IGIvdGVzdHMvbWlzYy9vZC1qLnNoCkBAIC0wLDAgKzEsMzkgQEAKKyMhL2Jpbi9zaAorIyBW ZXJpZnkgdGhhdCAnb2QgLWogTicgc2tpcHMgTiBieXRlcyBvZiBpbnB1dC4KKworIyBDb3B5 cmlnaHQgMjAxNCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKworIyBUaGlzIHBy b2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y IG1vZGlmeQorIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1Ymxp YyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0 aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgorIyAoYXQgeW91ciBv cHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorCisjIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmli dXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorIyBidXQgV0lUSE9V VCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgor IyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Uu ICBTZWUgdGhlCisjIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFp bHMuCisKKyMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdl bmVyYWwgUHVibGljIExpY2Vuc2UKKyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBu b3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisKKy4gIiR7c3JjZGly PS59L3Rlc3RzL2luaXQuc2giOyBwYXRoX3ByZXBlbmRfIC4vc3JjCitwcmludF92ZXJfIG9k CisKK2ZvciBmaWxlIGluICR7c3JjZGlyPS59L3Rlc3RzL2luaXQuc2ggL3Byb2MvdmVyc2lv biAvc3lzL2tlcm5lbC9wcm9maWxpbmc7IGRvCisgIHRlc3QgLXIgJGZpbGUgfHwgY29udGlu dWUKKworICBjcCAtZiAkZmlsZSBjb3B5ICYmCisgIGJ5dGVzPSQod2MgLWMgPCBjb3B5KSB8 fCBmcmFtZXdvcmtfZmFpbHVyZV8KKworICBvZCAtQW4gJGZpbGUgPiBleHAgfHwgZmFpbD0x CisgIG9kIC1BbiAtaiAkYnl0ZXMgJGZpbGUgJGZpbGUgPiBvdXQgfHwgZmFpbD0xCisgIGNv bXBhcmUgb3V0IGV4cCB8fCBmYWlsPTEKKworICBvZCAtQW4gLWogNDA5NiBjb3B5IGNvcHkg PiBleHAxIDI+IGV4cGVycjE7IGV4cHN0YXR1cz0kPworICBvZCAtQW4gLWogNDA5NiAkZmls ZSAkZmlsZSA+IG91dDEgMj4gZXJyMTsgc3RhdHVzPSQ/CisgIHRlc3QgJHN0YXR1cyAtZXEg JGV4cHN0YXR1cyB8fCBmYWlsPTEKKyAgY29tcGFyZSBvdXQxIGV4cDEgfHwgZmFpbD0xCisg IGNvbXBhcmUgZXJyMSBleHBlcnIxIHx8IGZhaWw9MQorZG9uZQorCitFeGl0ICRmYWlsCmRp ZmYgLS1naXQgYS90ZXN0cy9taXNjL3RhYy0yLW5vbnNlZWthYmxlLnNoIGIvdGVzdHMvbWlz Yy90YWMtMi1ub25zZWVrYWJsZS5zaAppbmRleCBjMjc2OTRjLi5hNGEzNWFiIDEwMDc1NQot LS0gYS90ZXN0cy9taXNjL3RhYy0yLW5vbnNlZWthYmxlLnNoCisrKyBiL3Rlc3RzL21pc2Mv dGFjLTItbm9uc2Vla2FibGUuc2gKQEAgLTEsNSArMSw1IEBACiAjIS9iaW4vc2gKLSMgZW5z dXJlIHRoYXQgdGFjIHdvcmtzIHdpdGggdHdvIG9yIG1vcmUgbm9uLXNlZWthYmxlIGlucHV0 cworIyBlbnN1cmUgdGhhdCB0YWMgd29ya3Mgd2l0aCBub24tc2Vla2FibGUgb3IgcXVhc2kt c2Vla2FibGUgaW5wdXRzCiAKICMgQ29weXJpZ2h0IChDKSAyMDExLTIwMTQgRnJlZSBTb2Z0 d2FyZSBGb3VuZGF0aW9uLCBJbmMuCiAKQEAgLTI0LDQgKzI0LDE2IEBAIGVjaG8geCA+IGV4 cCB8fCBmYWlsPTEKIGNvbXBhcmUgZXhwIG91dCB8fCBmYWlsPTEKIGNvbXBhcmUgL2Rldi9u dWxsIGVyciB8fCBmYWlsPTEKIAorIyBNYWtlIHN1cmUgaXQgd29ya3Mgb24gZnVubnkgZmls ZXMgaW4gL3Byb2MgYW5kIC9zeXMuCisKK2ZvciBmaWxlIGluIC9wcm9jL3ZlcnNpb24gL3N5 cy9rZXJuZWwvcHJvZmlsaW5nOyBkbworICBpZiB0ZXN0IC1yICRmaWxlOyB0aGVuCisgICAg Y3AgLWYgJGZpbGUgY29weSAmJgorICAgIHRhYyBjb3B5ID4gZXhwMSB8fCBmcmFtZXdvcmtf ZmFpbHVyZV8KKworICAgIHRhYyAkZmlsZSA+IG91dDEgfHwgZmFpbD0xCisgICAgY29tcGFy ZSBleHAxIG91dDEgfHwgZmFpbD0xCisgIGZpCitkb25lCisKIEV4aXQgJGZhaWwKZGlmZiAt LWdpdCBhL3Rlc3RzL21pc2Mvd2MtcHJvYy5zaCBiL3Rlc3RzL21pc2Mvd2MtcHJvYy5zaApu ZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi44MjgxNjBkCi0tLSAvZGV2L251 bGwKKysrIGIvdGVzdHMvbWlzYy93Yy1wcm9jLnNoCkBAIC0wLDAgKzEsMzIgQEAKKyMhL2Jp bi9zaAorIyBUZXN0IHdjIG9uIC9wcm9jIGFuZCAvc3lzIGZpbGVzLgorCisjIENvcHlyaWdo dCAyMDE0IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorCisjIFRoaXMgcHJvZ3Jh bSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9k aWZ5CisjIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExp Y2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisjIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24s IGVpdGhlciB2ZXJzaW9uIDMgb2YgdGhlIExpY2Vuc2UsIG9yCisjIChhdCB5b3VyIG9wdGlv bikgYW55IGxhdGVyIHZlcnNpb24uCisKKyMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVk IGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisjIGJ1dCBXSVRIT1VUIEFO WSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisjIE1F UkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNl ZSB0aGUKKyMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4K KworIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJh bCBQdWJsaWMgTGljZW5zZQorIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwg c2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KKworLiAiJHtzcmNkaXI9Ln0v dGVzdHMvaW5pdC5zaCI7IHBhdGhfcHJlcGVuZF8gLi9zcmMKK3ByaW50X3Zlcl8gd2MKKwor Zm9yIGZpbGUgaW4gL3Byb2MvdmVyc2lvbiAvc3lzL2tlcm5lbC9wcm9maWxpbmc7IGRvCisg IGlmIHRlc3QgLXIgJGZpbGU7IHRoZW4KKyAgICBjcCAtZiAkZmlsZSBjb3B5ICYmCisgICAg d2MgLWMgPCBjb3B5ID4gZXhwMSB8fCBmcmFtZXdvcmtfZmFpbHVyZV8KKworICAgIHdjIC1j IDwgJGZpbGUgPiBvdXQxIHx8IGZhaWw9MQorICAgIGNvbXBhcmUgZXhwMSBvdXQxIHx8IGZh aWw9MQorICBmaQorZG9uZQorCitFeGl0ICRmYWlsCmRpZmYgLS1naXQgYS90ZXN0cy9zcGxp dC9iLWNodW5rLnNoIGIvdGVzdHMvc3BsaXQvYi1jaHVuay5zaAppbmRleCA4NmY5NWEwLi5m ZWZhMDkwIDEwMDc1NQotLS0gYS90ZXN0cy9zcGxpdC9iLWNodW5rLnNoCisrKyBiL3Rlc3Rz L3NwbGl0L2ItY2h1bmsuc2gKQEAgLTMxLDIwICszMSwyOSBAQCBzdGF0IHg/PyAyPi9kZXYv bnVsbCAmJiBmYWlsPTEKIAogcHJpbnRmICcxXG4yXG4zXG40XG41XG4nID4gaW4gfHwgZnJh bWV3b3JrX2ZhaWx1cmVfCiAKLXNwbGl0IC1uIDMgaW4gPiBvdXQgfHwgZmFpbD0xCi1zcGxp dCAtbiAxLzMgaW4gPiBiMSB8fCBmYWlsPTEKLXNwbGl0IC1uIDIvMyBpbiA+IGIyIHx8IGZh aWw9MQotc3BsaXQgLW4gMy8zIGluID4gYjMgfHwgZmFpbD0xCi1wcmludGYgJzFcbjInID4g ZXhwLTEKLXByaW50ZiAnXG4zXG4nID4gZXhwLTIKLXByaW50ZiAnNFxuNVxuJyA+IGV4cC0z Ci0KLWNvbXBhcmUgZXhwLTEgeGFhIHx8IGZhaWw9MQotY29tcGFyZSBleHAtMiB4YWIgfHwg ZmFpbD0xCi1jb21wYXJlIGV4cC0zIHhhYyB8fCBmYWlsPTEKLWNvbXBhcmUgZXhwLTEgYjEg fHwgZmFpbD0xCi1jb21wYXJlIGV4cC0yIGIyIHx8IGZhaWw9MQotY29tcGFyZSBleHAtMyBi MyB8fCBmYWlsPTEKLXRlc3QgLWYgeGFkICYmIGZhaWw9MQorZm9yIGZpbGUgaW4gaW4gL3By b2MvdmVyc2lvbiAvc3lzL2tlcm5lbC9wcm9maWxpbmc7IGRvCisgIHNwbGl0IC1uIDMgJGZp bGUgPiBvdXQgfHwgZmFpbD0xCisgIHNwbGl0IC1uIDEvMyAkZmlsZSA+IGIxIHx8IGZhaWw9 MQorICBzcGxpdCAtbiAyLzMgJGZpbGUgPiBiMiB8fCBmYWlsPTEKKyAgc3BsaXQgLW4gMy8z ICRmaWxlID4gYjMgfHwgZmFpbD0xCisKKyAgY2FzZSAkZmlsZSBpbgorICAgIGluKQorICAg ICAgcHJpbnRmICcxXG4yJyA+IGV4cC0xCisgICAgICBwcmludGYgJ1xuM1xuJyA+IGV4cC0y CisgICAgICBwcmludGYgJzRcbjVcbicgPiBleHAtMworCisgICAgICBjb21wYXJlIGV4cC0x IHhhYSB8fCBmYWlsPTEKKyAgICAgIGNvbXBhcmUgZXhwLTIgeGFiIHx8IGZhaWw9MQorICAg ICAgY29tcGFyZSBleHAtMyB4YWMgfHwgZmFpbD0xCisgICAgICA7OworICBlc2FjCisKKyAg Y29tcGFyZSB4YWEgYjEgfHwgZmFpbD0xCisgIGNvbXBhcmUgeGFiIGIyIHx8IGZhaWw9MQor ICBjb21wYXJlIHhhYyBiMyB8fCBmYWlsPTEKKyAgY2F0IHhhYSB4YWIgeGFjIHwgY29tcGFy ZSAtICRmaWxlIHx8IGZhaWw9MQorICB0ZXN0IC1mIHhhZCAmJiBmYWlsPTEKK2RvbmUKIAog RXhpdCAkZmFpbApkaWZmIC0tZ2l0IGEvdGVzdHMvdGFpbC0yL3RhaWwtYy5zaCBiL3Rlc3Rz L3RhaWwtMi90YWlsLWMuc2gKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4u Y2RiYWE0NgotLS0gL2Rldi9udWxsCisrKyBiL3Rlc3RzL3RhaWwtMi90YWlsLWMuc2gKQEAg LTAsMCArMSwzNSBAQAorIyEvYmluL3NoCisjIGV4ZXJjaXNlIHRhaWwgLWMKKworIyBDb3B5 cmlnaHQgMjAxNCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKworIyBUaGlzIHBy b2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29y IG1vZGlmeQorIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1Ymxp YyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0 aW9uLCBlaXRoZXIgdmVyc2lvbiAzIG9mIHRoZSBMaWNlbnNlLCBvcgorIyAoYXQgeW91ciBv cHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorCisjIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmli dXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorIyBidXQgV0lUSE9V VCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgor IyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0Uu ICBTZWUgdGhlCisjIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFp bHMuCisKKyMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdl bmVyYWwgUHVibGljIExpY2Vuc2UKKyMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBu b3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisKKy4gIiR7c3JjZGly PS59L3Rlc3RzL2luaXQuc2giOyBwYXRoX3ByZXBlbmRfIC4vc3JjCitwcmludF92ZXJfIHRh aWwKK3JlcXVpcmVfdWxpbWl0X3ZfCisKKyMgTWFrZSBzdXJlIGl0IHdvcmtzIG9uIGZ1bm55 IGZpbGVzIGluIC9wcm9jIGFuZCAvc3lzLgorCitmb3IgZmlsZSBpbiAvcHJvYy92ZXJzaW9u IC9zeXMva2VybmVsL3Byb2ZpbGluZzsgZG8KKyAgaWYgdGVzdCAtciAkZmlsZTsgdGhlbgor ICAgIGNwIC1mICRmaWxlIGNvcHkgJiYKKyAgICB0YWlsIC1jIC0xIGNvcHkgPiBleHAxIHx8 IGZyYW1ld29ya19mYWlsdXJlXworCisgICAgdGFpbCAtYyAtMSAkZmlsZSA+IG91dDEgfHwg ZmFpbD0xCisgICAgY29tcGFyZSBleHAxIG91dDEgfHwgZmFpbD0xCisgIGZpCitkb25lCisK K0V4aXQgJGZhaWwKLS0gCjEuOS4zCgo= --------------070304050207000608030907-- From debbugs-submit-bounces@debbugs.gnu.org Tue Oct 07 20:36:47 2014 Received: (at 18621) by debbugs.gnu.org; 8 Oct 2014 00:36:47 +0000 Received: from localhost ([127.0.0.1]:37065 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1XbfFG-0001Kd-WC for submit@debbugs.gnu.org; Tue, 07 Oct 2014 20:36:47 -0400 Received: from mx1.redhat.com ([209.132.183.28]:10196) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1XbfFE-0001KV-UK for 18621@debbugs.gnu.org; Tue, 07 Oct 2014 20:36:45 -0400 Received: from int-mx11.intmail.prod.int.phx2.redhat.com (int-mx11.intmail.prod.int.phx2.redhat.com [10.5.11.24]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id s980aZmW012344 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=FAIL); Tue, 7 Oct 2014 20:36:35 -0400 Received: from [10.36.116.25] (ovpn-116-25.ams2.redhat.com [10.36.116.25]) by int-mx11.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id s980aUUE021408 (version=TLSv1/SSLv3 cipher=DHE-RSA-CAMELLIA256-SHA bits=256 verify=NO); Tue, 7 Oct 2014 20:36:32 -0400 Message-ID: <5434870E.1000508@draigBrady.com> Date: Wed, 08 Oct 2014 01:36:30 +0100 From: =?UTF-8?B?UMOhZHJhaWcgQnJhZHk=?= User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:17.0) Gecko/20130110 Thunderbird/17.0.2 MIME-Version: 1.0 To: Paul Eggert Subject: Re: bug#18621: [BUG] wc -c incorrectly counts bytes in /sys References: <542EB6F7.3040207@gmail.com> <542ED354.6040008@draigBrady.com> <542EEF55.5000500@cs.ucla.edu> <543391A4.5070406@cs.ucla.edu> <54347C93.9020906@cs.ucla.edu> In-Reply-To: <54347C93.9020906@cs.ucla.edu> X-Enigmail-Version: 1.6 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-Scanned-By: MIMEDefang 2.68 on 10.5.11.24 X-Spam-Score: -5.0 (-----) X-Debbugs-Envelope-To: 18621 Cc: 18621@debbugs.gnu.org, George Shuklin , Jim Meyering X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -5.0 (-----) On 10/08/2014 12:51 AM, Paul Eggert wrote: > Paul Eggert wrote: > >> The attached patch still needs a changelog entry and test cases. > > I wrote those up and pushed the attached patch; this should fix the bug so I'm closing the bug report. I was just going through the patch as it happens, and I found no issues. I see the tac changes should also avoid erroneous errors if a file was truncated while reading for example. I pushed a follow up to avoid some new syntax check errors. thanks! Pádraig. From debbugs-submit-bounces@debbugs.gnu.org Tue Oct 07 21:12:26 2014 Received: (at 18621) by debbugs.gnu.org; 8 Oct 2014 01:12:26 +0000 Received: from localhost ([127.0.0.1]:37111 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1Xbfnm-0002IM-2Q for submit@debbugs.gnu.org; Tue, 07 Oct 2014 21:12:26 -0400 Received: from mail-wi0-f176.google.com ([209.85.212.176]:64726) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1Xbfnj-0002IC-TJ for 18621@debbugs.gnu.org; Tue, 07 Oct 2014 21:12:24 -0400 Received: by mail-wi0-f176.google.com with SMTP id hi2so9434847wib.15 for <18621@debbugs.gnu.org>; Tue, 07 Oct 2014 18:12:23 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:sender:in-reply-to:references:from:date:message-id :subject:to:cc:content-type:content-transfer-encoding; bh=xZzinLaCQoV3XdQEsuXlTDJXSKcDKFZrfzxvB7PNgnM=; b=j0LnVixYpUChkqXhXBnBTlc5aj1Gwrwo3W84D1+VLwM5hWwz4eAJwvIwqz/ZL+vbds eUYDzVusM3575ZJz5OyRa3ZkZA4bncppfyQfMacQ7V7EtrXQ8AKAB080aKeLxpAYdV6w k9ymkApg+QYmu7hVfDhwRE3xQuy6IB0sZcLLzHaL9FXfVf+jMx3r7zztKDb/qC4AKMKs Xpy7fwM+DPbGw7PsnFp6KVDdlyi6vep6Ug3N82Y/Gi6/tNwdu8caNyInXtkTi2NjPknu RwpB6sCcb8f6V2V2PNNwFxuLwEHGiU/m/NJb9/pe5YURI7lkq03jmM84bZfRtAF0eQEe XTBw== X-Received: by 10.195.12.46 with SMTP id en14mr108932wjd.95.1412730743166; Tue, 07 Oct 2014 18:12:23 -0700 (PDT) MIME-Version: 1.0 Received: by 10.194.86.131 with HTTP; Tue, 7 Oct 2014 18:12:02 -0700 (PDT) In-Reply-To: <5434870E.1000508@draigBrady.com> References: <542EB6F7.3040207@gmail.com> <542ED354.6040008@draigBrady.com> <542EEF55.5000500@cs.ucla.edu> <543391A4.5070406@cs.ucla.edu> <54347C93.9020906@cs.ucla.edu> <5434870E.1000508@draigBrady.com> From: Jim Meyering Date: Tue, 7 Oct 2014 18:12:02 -0700 X-Google-Sender-Auth: R1HFxYKGfMbAdLMNHD3ynh4rghA Message-ID: Subject: Re: bug#18621: [BUG] wc -c incorrectly counts bytes in /sys To: =?ISO-8859-1?Q?P=E1draig_Brady?= Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: quoted-printable X-Spam-Score: -0.7 (/) X-Debbugs-Envelope-To: 18621 Cc: George Shuklin , Paul Eggert , 18621 <18621@debbugs.gnu.org> X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -0.7 (/) On Tue, Oct 7, 2014 at 5:36 PM, P=E1draig Brady wrote: > On 10/08/2014 12:51 AM, Paul Eggert wrote: >> Paul Eggert wrote: >> >>> The attached patch still needs a changelog entry and test cases. >> >> I wrote those up and pushed the attached patch; this should fix the bug = so I'm closing the bug report. > > I was just going through the patch as it happens, and I found no issues. > I see the tac changes should also avoid erroneous errors if a file was tr= uncated while reading for example. > I pushed a follow up to avoid some new syntax check errors. > > thanks! > P=E1draig. I pushed a patch to avoid a new failiure of the split/b-chunk.sh test on non-Linux. From debbugs-submit-bounces@debbugs.gnu.org Wed Oct 08 07:51:38 2014 Received: (at 18621) by debbugs.gnu.org; 8 Oct 2014 11:51:38 +0000 Received: from localhost ([127.0.0.1]:37474 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1XbpmL-0004ys-A3 for submit@debbugs.gnu.org; Wed, 08 Oct 2014 07:51:37 -0400 Received: from mx1.redhat.com ([209.132.183.28]:53476) by debbugs.gnu.org with esmtp (Exim 4.80) (envelope-from ) id 1XbpmI-0004yh-3f for 18621@debbugs.gnu.org; Wed, 08 Oct 2014 07:51:35 -0400 Received: from int-mx09.intmail.prod.int.phx2.redhat.com (int-mx09.intmail.prod.int.phx2.redhat.com [10.5.11.22]) by mx1.redhat.com (8.14.4/8.14.4) with ESMTP id s98BpVF7011678 (version=TLSv1/SSLv3 cipher=DHE-RSA-AES256-GCM-SHA384 bits=256 verify=FAIL); Wed, 8 Oct 2014 07:51:31 -0400 Received: from [10.36.116.106] (ovpn-116-106.ams2.redhat.com [10.36.116.106]) by int-mx09.intmail.prod.int.phx2.redhat.com (8.14.4/8.14.4) with ESMTP id s98BpSHc013776 (version=TLSv1/SSLv3 cipher=DHE-RSA-CAMELLIA256-SHA bits=256 verify=NO); Wed, 8 Oct 2014 07:51:30 -0400 Message-ID: <54352540.6000306@draigBrady.com> Date: Wed, 08 Oct 2014 12:51:28 +0100 From: =?ISO-8859-1?Q?P=E1draig_Brady?= User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:17.0) Gecko/20130110 Thunderbird/17.0.2 MIME-Version: 1.0 To: Jim Meyering Subject: Re: bug#18621: [BUG] wc -c incorrectly counts bytes in /sys References: <542EB6F7.3040207@gmail.com> <542ED354.6040008@draigBrady.com> <542EEF55.5000500@cs.ucla.edu> <543391A4.5070406@cs.ucla.edu> <54347C93.9020906@cs.ucla.edu> <5434870E.1000508@draigBrady.com> In-Reply-To: X-Enigmail-Version: 1.6 Content-Type: multipart/mixed; boundary="------------060805000704090603000903" X-Scanned-By: MIMEDefang 2.68 on 10.5.11.22 X-Spam-Score: -5.0 (-----) X-Debbugs-Envelope-To: 18621 Cc: 18621 <18621@debbugs.gnu.org>, George Shuklin , Paul Eggert X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: debbugs-submit-bounces@debbugs.gnu.org Sender: "Debbugs-submit" X-Spam-Score: -5.0 (-----) This is a multi-part message in MIME format. --------------060805000704090603000903 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 8bit On 10/08/2014 02:12 AM, Jim Meyering wrote: > On Tue, Oct 7, 2014 at 5:36 PM, Pádraig Brady wrote: >> On 10/08/2014 12:51 AM, Paul Eggert wrote: >>> Paul Eggert wrote: >>> >>>> The attached patch still needs a changelog entry and test cases. >>> >>> I wrote those up and pushed the attached patch; this should fix the bug so I'm closing the bug report. >> >> I was just going through the patch as it happens, and I found no issues. >> I see the tac changes should also avoid erroneous errors if a file was truncated while reading for example. >> I pushed a follow up to avoid some new syntax check errors. >> >> thanks! >> Pádraig. > > I pushed a patch to avoid a new failiure of the > split/b-chunk.sh test on non-Linux. The attached is needed to avoid a new warning on 32 bit. thanks, Pádraig. --------------060805000704090603000903 Content-Type: text/x-patch; name="tac-i686-warning.patch" Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename="tac-i686-warning.patch" >From 16c7267d7425fe59b6919e77fa572d104d72c2bf Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?P=C3=A1draig=20Brady?= Date: Wed, 8 Oct 2014 12:35:36 +0100 Subject: [PATCH] maint: avoid new signed overflow warning on 32 bit Prompted by http://hydra.nixos.org/build/15682577 with GCC 4.8.3 on i686 src/tac.c:557:6: error: assuming signed overflow does not occur when simplifying conditional to constant [-Werror=strict-overflow] if (bytes_copied < 0) This happens because copy_to_temp() is inlined in tac_nonseekable(), thus reducing the comparison to the bytes_copied variable in copy_to_temp. Now this can't overflow on either 32 or 64 bit due to the protection of the preceding fwrite(). We could use a guard like "if (bytes_copied <= OFF_T_MAX - bytes_read)" to avoid the warning, but rather than a runtime branch, just use an unsigned type to avoid apparent signed overflow on systems where the accumulation is not promoted to unsigned (32 bit size_t, 64 bit off_t). * src/tac.c (copy_to_temp): Increment an unsigned type to avoid the subsequent signed overflow warning. --- src/tac.c | 5 ++++- 1 files changed, 4 insertions(+), 1 deletions(-) diff --git a/src/tac.c b/src/tac.c index 248afa9..777ec91 100644 --- a/src/tac.c +++ b/src/tac.c @@ -506,7 +506,7 @@ copy_to_temp (FILE **g_tmp, char **g_tempfile, int input_fd, char const *file) { FILE *fp; char *file_name; - off_t bytes_copied = 0; + uintmax_t bytes_copied = 0; if (!temp_stream (&fp, &file_name)) return -1; @@ -527,6 +527,9 @@ copy_to_temp (FILE **g_tmp, char **g_tempfile, int input_fd, char const *file) goto Fail; } + /* Implicitly <= OFF_T_MAX due to preceding fwrite(), + but unsigned type used to avoid compiler warnings + not aware of this fact. */ bytes_copied += bytes_read; } -- 1.7.7.6 --------------060805000704090603000903-- From unknown Mon Aug 18 18:13:19 2025 Received: (at fakecontrol) by fakecontrolmessage; To: internal_control@debbugs.gnu.org From: Debbugs Internal Request Subject: Internal Control Message-Id: bug archived. Date: Wed, 05 Nov 2014 12:24:03 +0000 User-Agent: Fakemail v42.6.9 # This is a fake control message. # # The action: # bug archived. thanks # This fakemail brought to you by your local debbugs # administrator