diff options
author | Sergey Poznyakoff <gray@gnu.org> | 2019-03-10 10:55:54 +0200 |
---|---|---|
committer | Sergey Poznyakoff <gray@gnu.org> | 2019-03-10 11:00:06 +0200 |
commit | ddf85fb13b49c218a8c33d6eda52d23a888aba60 (patch) | |
tree | 1942d2b2d9a1f16fe8b7beee5ba259cdeb6dd3ea | |
parent | 57d9a048fecafa6ba73810c14802720b2873264d (diff) | |
download | mailutils-ddf85fb13b49c218a8c33d6eda52d23a888aba60.tar.gz mailutils-ddf85fb13b49c218a8c33d6eda52d23a888aba60.tar.bz2 |
Fix encoding of empty input by DOT filter.
* libmailutils/filter/dot.c (_dot_encoder): Don't emit additional
empty line on empty input (i.e. if mu_filter_lastbuf arrives when
dfa is in dot_encode_init state).
* libmailutils/tests/dot.at: Test empty input.
-rw-r--r-- | libmailutils/filter/dot.c | 3 | ||||
-rw-r--r-- | libmailutils/tests/dot.at | 8 | ||||
-rw-r--r-- | libmailutils/tests/testsuite.at | 2 |
3 files changed, 11 insertions, 2 deletions
diff --git a/libmailutils/filter/dot.c b/libmailutils/filter/dot.c index 1e41df12c..d3a3aab34 100644 --- a/libmailutils/filter/dot.c +++ b/libmailutils/filter/dot.c | |||
@@ -178,7 +178,7 @@ _dot_encoder (void *xd, | |||
178 | size_t isize; | 178 | size_t isize; |
179 | char *optr; | 179 | char *optr; |
180 | size_t osize; | 180 | size_t osize; |
181 | int *state = xd; | 181 | enum dot_encode_state *state = xd; |
182 | 182 | ||
183 | switch (cmd) | 183 | switch (cmd) |
184 | { | 184 | { |
@@ -229,6 +229,7 @@ _dot_encoder (void *xd, | |||
229 | { | 229 | { |
230 | switch (*state) | 230 | switch (*state) |
231 | { | 231 | { |
232 | case dot_encode_init: | ||
232 | case dot_encode_lf: | 233 | case dot_encode_lf: |
233 | if (j + 2 > osize) | 234 | if (j + 2 > osize) |
234 | result = mu_filter_again; | 235 | result = mu_filter_again; |
diff --git a/libmailutils/tests/dot.at b/libmailutils/tests/dot.at index 1516a1bf8..7be7bb6b2 100644 --- a/libmailutils/tests/dot.at +++ b/libmailutils/tests/dot.at | |||
@@ -48,6 +48,14 @@ end. | |||
48 | ]) | 48 | ]) |
49 | AT_CLEANUP | 49 | AT_CLEANUP |
50 | 50 | ||
51 | AT_SETUP([DOT empty input]) | ||
52 | AT_KEYWORDS([DOT empty input]) | ||
53 | AT_CHECK([fltst dot encode read < /dev/null], | ||
54 | [0], | ||
55 | [. | ||
56 | ]) | ||
57 | AT_CLEANUP | ||
58 | |||
51 | AT_SETUP([DOT reversibility]) | 59 | AT_SETUP([DOT reversibility]) |
52 | AT_KEYWORDS([filter dot]) | 60 | AT_KEYWORDS([filter dot]) |
53 | AT_CHECK([ | 61 | AT_CHECK([ |
diff --git a/libmailutils/tests/testsuite.at b/libmailutils/tests/testsuite.at index db284fd86..5e302ee6a 100644 --- a/libmailutils/tests/testsuite.at +++ b/libmailutils/tests/testsuite.at | |||
@@ -215,9 +215,9 @@ m4_include([hdrcpy.at]) | |||
215 | m4_include([linecon.at]) | 215 | m4_include([linecon.at]) |
216 | m4_include([htmlent.at]) | 216 | m4_include([htmlent.at]) |
217 | m4_include([xml.at]) | 217 | m4_include([xml.at]) |
218 | m4_include([dot.at]) | ||
218 | m4_include([crlf.at]) | 219 | m4_include([crlf.at]) |
219 | m4_include([crlfdot.at]) | 220 | m4_include([crlfdot.at]) |
220 | m4_include([dot.at]) | ||
221 | 221 | ||
222 | AT_BANNER(Debug Specification) | 222 | AT_BANNER(Debug Specification) |
223 | m4_include([debugspec.at]) | 223 | m4_include([debugspec.at]) |