1 Return-Path: <bremner@tethera.net>
\r
2 X-Original-To: notmuch@notmuchmail.org
\r
3 Delivered-To: notmuch@notmuchmail.org
\r
4 Received: from localhost (localhost [127.0.0.1])
\r
5 by olra.theworths.org (Postfix) with ESMTP id 67967431FC3
\r
6 for <notmuch@notmuchmail.org>; Wed, 26 Dec 2012 11:36:57 -0800 (PST)
\r
7 X-Virus-Scanned: Debian amavisd-new at olra.theworths.org
\r
11 X-Spam-Status: No, score=0 tagged_above=-999 required=5 tests=[none]
\r
13 Received: from olra.theworths.org ([127.0.0.1])
\r
14 by localhost (olra.theworths.org [127.0.0.1]) (amavisd-new, port 10024)
\r
15 with ESMTP id REOtWhsLxg02 for <notmuch@notmuchmail.org>;
\r
16 Wed, 26 Dec 2012 11:36:56 -0800 (PST)
\r
17 Received: from tesseract.cs.unb.ca (tesseract.cs.unb.ca [131.202.240.238])
\r
18 (using TLSv1 with cipher AES256-SHA (256/256 bits))
\r
19 (No client certificate requested)
\r
20 by olra.theworths.org (Postfix) with ESMTPS id 4E95F431FAF
\r
21 for <notmuch@notmuchmail.org>; Wed, 26 Dec 2012 11:36:56 -0800 (PST)
\r
22 Received: from fctnnbsc30w-156034082078.dhcp-dynamic.fibreop.nb.bellaliant.net
\r
23 ([156.34.82.78] helo=zancas.localnet)
\r
24 by tesseract.cs.unb.ca with esmtpsa
\r
25 (TLS1.0:DHE_RSA_AES_128_CBC_SHA1:16) (Exim 4.72)
\r
26 (envelope-from <bremner@tethera.net>)
\r
27 id 1Tnwmd-0002oq-Co; Wed, 26 Dec 2012 15:36:55 -0400
\r
28 Received: from bremner by zancas.localnet with local (Exim 4.80)
\r
29 (envelope-from <bremner@tethera.net>)
\r
30 id 1TnwmX-0005eQ-Ri; Wed, 26 Dec 2012 15:36:49 -0400
\r
31 From: david@tethera.net
\r
32 To: notmuch@notmuchmail.org
\r
33 Subject: [PATCH 2/2] notmuch-restore: handle empty input file,
\r
34 leading blank lines and comments.
\r
35 Date: Wed, 26 Dec 2012 15:36:33 -0400
\r
36 Message-Id: <1356550593-21683-2-git-send-email-david@tethera.net>
\r
37 X-Mailer: git-send-email 1.7.10.4
\r
38 In-Reply-To: <1356550593-21683-1-git-send-email-david@tethera.net>
\r
39 References: <1356550593-21683-1-git-send-email-david@tethera.net>
\r
41 Cc: David Bremner <bremner@debian.org>
\r
42 X-BeenThere: notmuch@notmuchmail.org
\r
43 X-Mailman-Version: 2.1.13
\r
45 List-Id: "Use and development of the notmuch mail system."
\r
46 <notmuch.notmuchmail.org>
\r
47 List-Unsubscribe: <http://notmuchmail.org/mailman/options/notmuch>,
\r
48 <mailto:notmuch-request@notmuchmail.org?subject=unsubscribe>
\r
49 List-Archive: <http://notmuchmail.org/pipermail/notmuch>
\r
50 List-Post: <mailto:notmuch@notmuchmail.org>
\r
51 List-Help: <mailto:notmuch-request@notmuchmail.org?subject=help>
\r
52 List-Subscribe: <http://notmuchmail.org/mailman/listinfo/notmuch>,
\r
53 <mailto:notmuch-request@notmuchmail.org?subject=subscribe>
\r
54 X-List-Received-Date: Wed, 26 Dec 2012 19:36:57 -0000
\r
56 From: David Bremner <bremner@debian.org>
\r
58 This patch corrects several undesirable behaviours:
\r
60 1) Empty files were not detected, leading to buffer read overrun.
\r
62 2) An initial blank line cause restore to silently abort
\r
64 3) Initial comment line caused format detection to fail
\r
66 notmuch-restore.c | 17 ++++++++++++-----
\r
67 test/dump-restore | 3 ---
\r
68 2 files changed, 12 insertions(+), 8 deletions(-)
\r
70 diff --git a/notmuch-restore.c b/notmuch-restore.c
\r
71 index 9ed9b51..c93f1ac 100644
\r
72 --- a/notmuch-restore.c
\r
73 +++ b/notmuch-restore.c
\r
74 @@ -180,11 +180,6 @@ notmuch_restore_command (unused (void *ctx), int argc, char *argv[])
\r
80 - line_len = getline (&line, &line_size, input);
\r
81 - if (line_len == 0)
\r
84 tag_ops = tag_op_list_create (ctx);
\r
85 if (tag_ops == NULL) {
\r
86 @@ -192,6 +187,18 @@ notmuch_restore_command (unused (void *ctx), int argc, char *argv[])
\r
91 + line_len = getline (&line, &line_size, input);
\r
93 + /* empty input file not considered an error */
\r
97 + } while ((line_len == 0) ||
\r
98 + (line[0] == '#') ||
\r
99 + (strspn (line, " \t\n") == strlen (line)));
\r
102 for (p = line; (input_format == DUMP_FORMAT_AUTO) && *p; p++) {
\r
104 input_format = DUMP_FORMAT_SUP;
\r
105 diff --git a/test/dump-restore b/test/dump-restore
\r
106 index c2ddb92..ae30cd1 100755
\r
107 --- a/test/dump-restore
\r
108 +++ b/test/dump-restore
\r
109 @@ -146,13 +146,11 @@ cat <<EOF > comments-and-blanks
\r
112 test_begin_subtest 'restoring empty file is not an error'
\r
113 -test_subtest_known_broken
\r
114 notmuch restore < /dev/null 2>OUTPUT.$test_count
\r
115 cp /dev/null EXPECTED
\r
116 test_expect_equal_file EXPECTED OUTPUT.$test_count
\r
118 test_begin_subtest 'file of comments and blank lines is not an error'
\r
119 -test_subtest_known_broken
\r
120 notmuch restore --input=comments-and-blanks
\r
122 test_expect_equal "$ret_val" "0"
\r
123 @@ -172,7 +170,6 @@ echo "yun1vjwegii.fsf@aiko.keithp.com (another_tag)" \
\r
124 >> leading-comments-blanks-sup
\r
126 test_begin_subtest 'detect format=sup with leading comments and blanks'
\r
127 -test_subtest_known_broken
\r
128 notmuch restore --input=leading-comments-blanks-sup
\r
129 notmuch search --output=tags id:yun1vjwegii.fsf@aiko.keithp.com > OUTPUT.$test_count
\r
130 echo "another_tag" > EXPECTED
\r