]> git.ipfire.org Git - thirdparty/dovecot/core.git/commitdiff
lmtp: Fixes to handling "." correctly in DATA.
authorTimo Sirainen <tss@iki.fi>
Tue, 16 Jun 2009 22:48:14 +0000 (18:48 -0400)
committerTimo Sirainen <tss@iki.fi>
Tue, 16 Jun 2009 22:48:14 +0000 (18:48 -0400)
--HG--
branch : HEAD

src/lmtp/commands.c

index 248c7fd0e67dbac2e725442ca0783555a82678e5..bded03312da818e86da3b3b2c422b08b40e681af 100644 (file)
@@ -425,15 +425,18 @@ static void client_input_data_handle(struct client *client)
                        }
                } else if (client->state.data_end_idx == DATA_DOT_NEXT_POS) {
                        /* saw a dot at the beginning of line. drop it. */
-                       if (client_input_add(client, data, i-1) < 0) {
+                       if (client_input_add(client, data + start,
+                                            i - start - 1) < 0) {
                                client_destroy(client, "451 4.3.0",
                                               "Temporary internal failure");
                                return;
                        }
                        start = i;
-                       client->state.data_end_idx = 0;
+                       client->state.data_end_idx =
+                               data[i] == data_end[0] ? 1 : 0;
                } else {
-                       client->state.data_end_idx = 0;
+                       client->state.data_end_idx =
+                               data[i] == data_end[0] ? 1 : 0;
                }
        }
        if (client->state.data_end_idx >= DATA_DOT_NEXT_POS) {