From 573e0a9eaa9861044a0fda9d8e11b147fcda7424 Mon Sep 17 00:00:00 2001 From: Alexander Vdolainen Date: Fri, 19 Mar 2021 00:16:38 +0200 Subject: [PATCH] imap fix; --- src/Makefile.am | 2 +- src/imap.c | 12 ++++++++++++ 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/src/Makefile.am b/src/Makefile.am index aec543a..18a53f3 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -11,7 +11,7 @@ AM_CFLAGS = -Wall -g bin_PROGRAMS = ejabberdauth -ejabberdauth_SOURCES = main.c eport.c tls.c +ejabberdauth_SOURCES = main.c eport.c tls.c imap.c ejabberdauth_LDADD = $(LIBS) $(OPENSSL_LIBS) diff --git a/src/imap.c b/src/imap.c index 3ba4aee..b6314b7 100644 --- a/src/imap.c +++ b/src/imap.c @@ -76,5 +76,17 @@ int imap_auth(struct tlsport *p, struct ejabber_msg *m) if(strncmp(buf, "a OK", 4)) return -1; + /* check for leftovers */ + if(len == IMAPLINE_LENGTH - sizeof(char)) { + do { + len = tls_io(p, buf, IMAPLINE_LENGTH - sizeof(char), TLSIO_READ); + } while(len == IMAPLINE_LENGTH - sizeof(char)); + memset(buf, '\0', IMAPLINE_LENGTH); + } else memset(buf, '\0', len = sizeof(char)); + + /* say logout */ + snprintf(buf, IMAPLINE_LENGTH - sizeof(char), "a logout"); + len = tls_io(p, buf, 9, TLSIO_WRITE); + return 0; }