[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[msmtp-users] Password parameters patch
I've found that msmtp crashes when '--passwordeval' parameter is used. This is
due to the parameters argument being set as "optional" in msmtp.c. Only one value to
change to fix it.
Besides, there is sadly no '--password' parameter available. This is useful for
using msmtp from an external program such as mutt, while not saving the password
in any clear file. So I added support for the '--password' parameter. Quite
simple in fact, and seems to work pretty well.
You'll find the whole patch attached.
Cheers
Pierre
diff -aur msmtp-1.4.28/src/msmtp.c msmtp-1.4.28-patch/src/msmtp.c
--- msmtp-1.4.28/src/msmtp.c 2012-05-01 16:58:26.000000000 +0100
+++ msmtp-1.4.28-patch/src/msmtp.c 2012-07-02 13:49:11.002259302 +0100
@@ -2457,27 +2457,28 @@
#define LONGONLYOPT_TIMEOUT 4
#define LONGONLYOPT_AUTH 5
#define LONGONLYOPT_USER 6
-#define LONGONLYOPT_PASSWORDEVAL 7
-#define LONGONLYOPT_TLS 8
-#define LONGONLYOPT_TLS_STARTTLS 9
-#define LONGONLYOPT_TLS_TRUST_FILE 10
-#define LONGONLYOPT_TLS_CRL_FILE 11
-#define LONGONLYOPT_TLS_FINGERPRINT 12
-#define LONGONLYOPT_TLS_KEY_FILE 13
-#define LONGONLYOPT_TLS_CERT_FILE 14
-#define LONGONLYOPT_TLS_CERTCHECK 15
-#define LONGONLYOPT_TLS_FORCE_SSLV3 16
-#define LONGONLYOPT_TLS_MIN_DH_PRIME_BITS 17
-#define LONGONLYOPT_TLS_PRIORITIES 18
-#define LONGONLYOPT_PROTOCOL 19
-#define LONGONLYOPT_DOMAIN 20
-#define LONGONLYOPT_KEEPBCC 21
-#define LONGONLYOPT_RMQS 22
-#define LONGONLYOPT_SYSLOG 23
-#define LONGONLYOPT_MAILDOMAIN 24
-#define LONGONLYOPT_AUTO_FROM 25
-#define LONGONLYOPT_READ_ENVELOPE_FROM 26
-#define LONGONLYOPT_ALIASES 27
+#define LONGONLYOPT_PASSWORD 7
+#define LONGONLYOPT_PASSWORDEVAL 8
+#define LONGONLYOPT_TLS 9
+#define LONGONLYOPT_TLS_STARTTLS 10
+#define LONGONLYOPT_TLS_TRUST_FILE 11
+#define LONGONLYOPT_TLS_CRL_FILE 12
+#define LONGONLYOPT_TLS_FINGERPRINT 13
+#define LONGONLYOPT_TLS_KEY_FILE 14
+#define LONGONLYOPT_TLS_CERT_FILE 15
+#define LONGONLYOPT_TLS_CERTCHECK 16
+#define LONGONLYOPT_TLS_FORCE_SSLV3 17
+#define LONGONLYOPT_TLS_MIN_DH_PRIME_BITS 18
+#define LONGONLYOPT_TLS_PRIORITIES 19
+#define LONGONLYOPT_PROTOCOL 20
+#define LONGONLYOPT_DOMAIN 21
+#define LONGONLYOPT_KEEPBCC 22
+#define LONGONLYOPT_RMQS 23
+#define LONGONLYOPT_SYSLOG 24
+#define LONGONLYOPT_MAILDOMAIN 25
+#define LONGONLYOPT_AUTO_FROM 26
+#define LONGONLYOPT_READ_ENVELOPE_FROM 27
+#define LONGONLYOPT_ALIASES 28
int msmtp_cmdline(msmtp_cmdline_conf_t *conf, int argc, char *argv[])
{
@@ -2504,7 +2505,8 @@
LONGONLYOPT_MAILDOMAIN },
{ "auth", optional_argument, 0, LONGONLYOPT_AUTH },
{ "user", required_argument, 0, LONGONLYOPT_USER },
- { "passwordeval", optional_argument, 0, LONGONLYOPT_PASSWORDEVAL },
+ { "passwordeval", required_argument, 0, LONGONLYOPT_PASSWORDEVAL },
+ { "password", required_argument, 0, LONGONLYOPT_PASSWORD },
{ "tls", optional_argument, 0, LONGONLYOPT_TLS },
{ "tls-starttls", optional_argument, 0,
LONGONLYOPT_TLS_STARTTLS },
@@ -2781,6 +2783,13 @@
conf->cmdline_account->mask |= ACC_USERNAME;
break;
+ case LONGONLYOPT_PASSWORD:
+ free(conf->cmdline_account->password);
+ conf->cmdline_account->password =
+ (*optarg == '\0') ? NULL : xstrdup(optarg);
+ conf->cmdline_account->mask |= ACC_PASSWORD;
+ break;
+
case LONGONLYOPT_PASSWORDEVAL:
free(conf->cmdline_account->passwordeval);
conf->cmdline_account->passwordeval =
@@ -3725,6 +3734,7 @@
goto exit;
}
}
+
if (account->port == 0)
{
if (account->protocol == SMTP_PROTO_SMTP)