mirror of
https://git.notmuchmail.org/git/notmuch
synced 2024-12-22 09:24:54 +01:00
notmuch-restore: handle empty input file, leading blank lines and comments.
This patch corrects several undesirable behaviours: 1) Empty files were not detected, leading to buffer read overrun. 2) An initial blank line cause restore to silently abort 3) Initial comment line caused format detection to fail
This commit is contained in:
parent
4dea9bb442
commit
d705a6a45b
2 changed files with 13 additions and 8 deletions
|
@ -181,11 +181,6 @@ notmuch_restore_command (unused (void *ctx), int argc, char *argv[])
|
|||
argv[opt_index]);
|
||||
return 1;
|
||||
}
|
||||
char *p;
|
||||
|
||||
line_len = getline (&line, &line_size, input);
|
||||
if (line_len == 0)
|
||||
return 0;
|
||||
|
||||
tag_ops = tag_op_list_create (ctx);
|
||||
if (tag_ops == NULL) {
|
||||
|
@ -193,6 +188,19 @@ notmuch_restore_command (unused (void *ctx), int argc, char *argv[])
|
|||
return 1;
|
||||
}
|
||||
|
||||
do {
|
||||
line_len = getline (&line, &line_size, input);
|
||||
|
||||
/* empty input file not considered an error */
|
||||
if (line_len < 0)
|
||||
return 0;
|
||||
|
||||
} while ((line_len == 0) ||
|
||||
(line[0] == '#') ||
|
||||
/* the cast is safe because we checked about for line_len < 0 */
|
||||
(strspn (line, " \t\n") == (unsigned)line_len));
|
||||
|
||||
char *p;
|
||||
for (p = line; (input_format == DUMP_FORMAT_AUTO) && *p; p++) {
|
||||
if (*p == '(')
|
||||
input_format = DUMP_FORMAT_SUP;
|
||||
|
|
|
@ -146,13 +146,11 @@ cat <<EOF > comments-and-blanks
|
|||
EOF
|
||||
|
||||
test_begin_subtest 'restoring empty file is not an error'
|
||||
test_subtest_known_broken
|
||||
notmuch restore < /dev/null 2>OUTPUT.$test_count
|
||||
cp /dev/null EXPECTED
|
||||
test_expect_equal_file EXPECTED OUTPUT.$test_count
|
||||
|
||||
test_begin_subtest 'file of comments and blank lines is not an error'
|
||||
test_subtest_known_broken
|
||||
notmuch restore --input=comments-and-blanks
|
||||
ret_val=$?
|
||||
test_expect_equal "$ret_val" "0"
|
||||
|
@ -172,7 +170,6 @@ echo "yun1vjwegii.fsf@aiko.keithp.com (another_tag)" \
|
|||
>> leading-comments-blanks-sup
|
||||
|
||||
test_begin_subtest 'detect format=sup with leading comments and blanks'
|
||||
test_subtest_known_broken
|
||||
notmuch restore --input=leading-comments-blanks-sup
|
||||
notmuch search --output=tags id:yun1vjwegii.fsf@aiko.keithp.com > OUTPUT.$test_count
|
||||
echo "another_tag" > EXPECTED
|
||||
|
|
Loading…
Reference in a new issue