Base64: we need the length of the string; else we fail
authorWilfried Goesgens <dothebart@citadel.org>
Sun, 31 Aug 2014 23:41:32 +0000 (01:41 +0200)
committerWilfried Goesgens <dothebart@citadel.org>
Sun, 31 Aug 2014 23:41:32 +0000 (01:41 +0200)
citadel/modules/managesieve/serv_managesieve.c
citadel/modules/smtp/serv_smtp.c

index 4fa99a72aa0da21da3dd13b867dc61ee25b23106..7158f4c009543ed5b613f5da446c99703ad2c2d7 100644 (file)
@@ -276,10 +276,10 @@ void cmd_mgsve_auth(int num_parms, char **parms, struct sdm_userdata *u)
                        message = ReadString(GetSizeToken(parms[2]), parms[0]);
                
                if (message != NULL) {/**< do we have tokenized login? */
-                       CtdlDecodeBase64(auth, MGSVE->transmitted_message, SIZ);
+                       CtdlDecodeBase64(auth, MGSVE->transmitted_message, strlen(MGSVE->transmitted_message));
                }
                else 
-                       CtdlDecodeBase64(auth, parms[2], SIZ);
+                       CtdlDecodeBase64(auth, parms[2], strlen(parms[2]));
                username = auth;
                if ((*username == '\0') && (*(username + 1) != '\0'))
                        username ++;
index 892d8e7a7885d4aef9e851923284b9e0a9057333..eddad6be71fb2f5bad8f63ed6c2ab784383bfc39 100644 (file)
@@ -394,12 +394,12 @@ void smtp_help(long offset, long Flags) {
 void smtp_get_user(long offset)
 {
        char buf[SIZ];
-       char username[SIZ];
        citsmtp *sSMTP = SMTP;
 
-       CtdlDecodeBase64(username, ChrPtr(sSMTP->Cmd) + offset, SIZ);
+       StrBufDecodeBase64(sSMTP->Cmd);
+
        /* syslog(LOG_DEBUG, "Trying <%s>\n", username); */
-       if (CtdlLoginExistingUser(NULL, username) == login_ok) {
+       if (CtdlLoginExistingUser(NULL, ChrPtr(sSMTP->Cmd)) == login_ok) {
                CtdlEncodeBase64(buf, "Password:", 9, 0);
                cprintf("334 %s\r\n", buf);
                sSMTP->command_state = smtp_password;
@@ -418,12 +418,11 @@ void smtp_get_pass(long offset, long Flags)
 {
        citsmtp *sSMTP = SMTP;
        char password[SIZ];
-       long len;
 
-       memset(password, 0, sizeof(password));  
-       len = CtdlDecodeBase64(password, ChrPtr(sSMTP->Cmd), SIZ);
+       memset(password, 0, sizeof(password));
+       StrBufDecodeBase64(sSMTP->Cmd);
        /* syslog(LOG_DEBUG, "Trying <%s>\n", password); */
-       if (CtdlTryPassword(password, len) == pass_ok) {
+       if (CtdlTryPassword(SKEY(sSMTP->Cmd)) == pass_ok) {
                smtp_auth_greeting(offset, Flags);
        }
        else {