summaryrefslogtreecommitdiff
path: root/libmailutils/imapio/getline.c
diff options
context:
space:
mode:
Diffstat (limited to 'libmailutils/imapio/getline.c')
-rw-r--r--libmailutils/imapio/getline.c16
1 files changed, 9 insertions, 7 deletions
diff --git a/libmailutils/imapio/getline.c b/libmailutils/imapio/getline.c
index d0e5105e5..d5769bb98 100644
--- a/libmailutils/imapio/getline.c
+++ b/libmailutils/imapio/getline.c
@@ -1,5 +1,5 @@
/* GNU Mailutils -- a suite of utilities for electronic mail
- Copyright (C) 2011-2019 Free Software Foundation, Inc.
+ Copyright (C) 2011-2024 Free Software Foundation, Inc.
GNU Mailutils is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
@@ -216,7 +216,7 @@ mu_imapio_getline (struct _mu_imapio *io)
xlev = mu_imapio_set_xscript_level (io, MU_XSCRIPT_PAYLOAD);
number = strtoul (last_arg + 1, &sp, 10);
- /* Client can ask for non-synchronised literal,
+ /* Client can ask for non-synchronized literal,
if a '+' is appended to the octet count. */
if (*sp == '}')
{
@@ -256,14 +256,16 @@ mu_imapio_getline (struct _mu_imapio *io)
io->_imap_buf_base[io->_imap_buf_level++] = 0;
free (last_arg);
- io->_imap_ws.ws_wordv[--io->_imap_ws.ws_wordc] = NULL;
- if (mu_wordsplit_len (io->_imap_buf_base, io->_imap_buf_level,
- &io->_imap_ws,
- io->_imap_ws_flags|MU_WRDSF_NOSPLIT))
+ last_arg = malloc (io->_imap_buf_level + 1);
+ if (!last_arg)
{
- rc = MU_ERR_PARSE;
+ rc = errno;
+ io->_imap_ws.ws_wordv[--io->_imap_ws.ws_wordc] = NULL;
break;
}
+ last_arg[io->_imap_buf_level] = 0;
+ memcpy (last_arg, io->_imap_buf_base, io->_imap_buf_level);
+ io->_imap_ws.ws_wordv[io->_imap_ws.ws_wordc-1] = last_arg;
}
else
break;

Return to:

Send suggestions and report system problems to the System administrator.