isync

mailbox synchronization program
git clone https://git.code.sf.net/p/isync/isync
Log | Files | Refs | README | LICENSE

commit fd872a7ff7078c76fa255305c630258d02934d49
parent 0dfbf6f6fba286e901cfdf52157cf35e106da583
Author: Oswald Buddenhagen <ossi@users.sf.net>
Date:   Sat, 12 Apr 2014 14:58:18 +0200

don't crash on truncated LIST response

found by coverity.

Diffstat:
Msrc/drv_imap.c | 6++++--
1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/src/drv_imap.c b/src/drv_imap.c @@ -1040,8 +1040,9 @@ parse_list_rsp( imap_store_t *ctx, list_t *list, char *cmd ) list_t *lp; if (!is_list( list )) { - error( "IMAP error: malformed LIST response\n" ); free_list( list ); + bad_list: + error( "IMAP error: malformed LIST response\n" ); return LIST_BAD; } for (lp = list->child; lp; lp = lp->next) @@ -1050,7 +1051,8 @@ parse_list_rsp( imap_store_t *ctx, list_t *list, char *cmd ) return LIST_OK; } free_list( list ); - arg = next_arg( &cmd ); + if (!(arg = next_arg( &cmd ))) + goto bad_list; if (!ctx->delimiter) ctx->delimiter = nfstrdup( arg ); return parse_list( ctx, cmd, parse_list_rsp_p2 );