On 09/18/2015 03:23 PM, Matt Brookings wrote:
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
Applies perfectly! Thanks!
On 09/18/2015 09:21 AM, Drew Wells wrote:
On 09/18/2015 02:47 PM, Matt Brookings wrote:
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1
Drew, I know you've put a lot of effort into these patches, but they do not
succeed against
the 5.5.0 trunk. Patches should be made against the most recent revision,
which can be checked
out via Subversion from Sourceforge.
On 09/18/2015 08:11 AM, Drew Wells wrote:
On 09/17/2015 04:55 PM, Matt Brookings wrote:
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1
On 09/17/2015 10:52 AM, Drew Wells wrote:
I basically did a diff from 5.4.29 to 5.4.33 and implemented that diff to
5.5.0, some
of it had already been done to 5.5.0 and alot of it centered around the
snprintf tidy
up's and the string_list implementation. The attached patch does not include
any of
the changes I recently sent to the mailing list, just the changes from
5.4.[29->33].
This patch was generated from the 5.5.0 .tar.bz2, I had a look at SVN trunk and
from what
I could see, it was 5.4.34.
The trunk on Sourceforge is the current 5.5.0. The 5.4 series only appears in
the tags
and branches area now. I'll look over this patch and get it applied. Thanks
for putting
it together!
And lastly for now, someone has done a lot of work in tidying up/making safe
all the calls
to snprintf(), the attached patch completes this work (I think). This patch
comes after the
5.4.[29->33] patch I did.
Ok, have have downloaded a snapshot .zip file from Sourceforge
(vpopmail-code-1034.zip) and
applied the changes to that and attached the patch. This is the 5.4.[29-33]
changes patch, I'll
do the snprintf() one later. Let me know if you need me to do anything else
with it.
Not a problem do excuse my use of the 5.5.0 tar, I'll use SVN trunk from
now on. Here is the snprintf() patch for vpopmail-code-1034.zip.
!DSPAM:55fc201141551341917110!
diff -uPr vpopmail-code-1034-trunk.orig/vpopmaild.c
vpopmail-code-1034-trunk/vpopmaild.c
--- vpopmail-code-1034-trunk.orig/vpopmaild.c 2015-09-18 15:00:27.747095095
+0100
+++ vpopmail-code-1034-trunk/vpopmaild.c 2015-09-18 15:24:04.655095039
+0100
@@ -429,7 +429,7 @@
return(-2);
}
-// snprintf(WriteBuf,sizeof(WriteBuf), RET_OK_MORE);
+// snprintf(WriteBuf,sizeof(WriteBuf), "%s", RET_OK_MORE);
// wait_write();
AuthVpw.pw_name = strdup(tmpvpw->pw_name);
@@ -460,7 +460,7 @@
logged_in = 1;
if(output_type < 2 ) {
- snprintf(WriteBuf,sizeof(WriteBuf), RET_OK_MORE);
+ snprintf(WriteBuf,sizeof(WriteBuf), "%s", RET_OK_MORE);
wait_write();
snprintf(WriteBuf,sizeof(WriteBuf), "vpopmail_dir_bin %s" RET_CRLF,
VPOPMAIL_DIR_BIN);
@@ -485,10 +485,10 @@
send_user_info(&AuthVpw);
- snprintf(WriteBuf, sizeof(WriteBuf), "." RET_CRLF);
+ snprintf(WriteBuf, sizeof(WriteBuf), "%s", "." RET_CRLF);
}
else
- snprintf(WriteBuf,sizeof(WriteBuf), RET_OK);
+ snprintf(WriteBuf,sizeof(WriteBuf), "%s", RET_OK);
return(0);
}
@@ -525,7 +525,7 @@
return(-1);
}
- snprintf(WriteBuf,sizeof(WriteBuf), RET_OK);
+ snprintf(WriteBuf,sizeof(WriteBuf), "%s", RET_OK);
if ((ret=vadduser(TmpUser, TmpDomain, password, TmpUser, USE_POP )) < 0 ) {
snprintf(WriteBuf,sizeof(WriteBuf),RET_ERR "0.305 %s" RET_CRLF,
verror(ret));
return(-1);
@@ -564,7 +564,7 @@
return(-1);
}
- snprintf(WriteBuf,sizeof(WriteBuf), RET_OK);
+ snprintf(WriteBuf,sizeof(WriteBuf), "%s", RET_OK);
return(0);
}
@@ -626,7 +626,7 @@
}
- snprintf(WriteBuf,sizeof(WriteBuf), RET_OK);
+ snprintf(WriteBuf,sizeof(WriteBuf), "%s", RET_OK);
wait_write();
while(fgets(ReadBuf,sizeof(ReadBuf),stdin)!=NULL ) {
@@ -751,7 +751,7 @@
if ( (ret=vauth_setpw( tmpvpw, TmpDomain )) != 0 ) {
snprintf(WriteBuf,sizeof(WriteBuf),RET_ERR "0.507 %s" RET_CRLF,
verror(ret));
} else {
- snprintf(WriteBuf,sizeof(WriteBuf), RET_OK);
+ snprintf(WriteBuf,sizeof(WriteBuf), "%s", RET_OK);
}
return(0);
@@ -787,11 +787,11 @@
return(-1);
}
- snprintf(WriteBuf,sizeof(WriteBuf), RET_OK_MORE);
+ snprintf(WriteBuf,sizeof(WriteBuf), "%s", RET_OK_MORE);
wait_write();
send_user_info(tmpvpw);
- snprintf(WriteBuf, sizeof(WriteBuf), "." RET_CRLF);
+ snprintf(WriteBuf, sizeof(WriteBuf), "%s", "." RET_CRLF);
return(0);
}
@@ -826,120 +826,79 @@
} else {
- if ( tmpvpw->pw_gid & NO_PASSWD_CHNG ) {
- snprintf(WriteBuf, sizeof(WriteBuf), "no_password_change 1" RET_CRLF);
- } else {
- snprintf(WriteBuf, sizeof(WriteBuf), "no_password_change 0" RET_CRLF);
- }
+ snprintf(WriteBuf, sizeof(WriteBuf), "no_password_change %d" RET_CRLF,
+ tmpvpw->pw_gid & NO_PASSWD_CHNG ? 1 : 0);
wait_write();
- if ( tmpvpw->pw_gid & NO_POP ) {
- snprintf(WriteBuf, sizeof(WriteBuf), "no_pop 1" RET_CRLF);
- } else {
- snprintf(WriteBuf, sizeof(WriteBuf), "no_pop 0" RET_CRLF);
- }
+ snprintf(WriteBuf, sizeof(WriteBuf), "no_pop %d" RET_CRLF,
+ tmpvpw->pw_gid & NO_POP ? 1 : 0);
wait_write();
- if ( tmpvpw->pw_gid & NO_WEBMAIL ) {
- snprintf(WriteBuf, sizeof(WriteBuf), "no_webmail 1" RET_CRLF);
- } else {
- snprintf(WriteBuf, sizeof(WriteBuf), "no_webmail 0" RET_CRLF);
- }
+ snprintf(WriteBuf, sizeof(WriteBuf), "no_webmail %d" RET_CRLF,
+ tmpvpw->pw_gid & NO_WEBMAIL ? 1 : 0);
wait_write();
- if ( tmpvpw->pw_gid & NO_IMAP ) {
- snprintf(WriteBuf, sizeof(WriteBuf), "no_imap 1" RET_CRLF);
- } else {
- snprintf(WriteBuf, sizeof(WriteBuf), "no_imap 0" RET_CRLF);
- }
+ snprintf(WriteBuf, sizeof(WriteBuf), "no_imap %d" RET_CRLF,
+ tmpvpw->pw_gid & NO_IMAP ? 1 : 0);
wait_write();
- if ( tmpvpw->pw_gid & BOUNCE_MAIL ) {
- snprintf(WriteBuf, sizeof(WriteBuf), "bounce_mail 1" RET_CRLF);
- } else {
- snprintf(WriteBuf, sizeof(WriteBuf), "bounce_mail 0" RET_CRLF);
- }
+ snprintf(WriteBuf, sizeof(WriteBuf), "bounce_mail %d" RET_CRLF,
+ tmpvpw->pw_gid & BOUNCE_MAIL ? 1 : 0);
wait_write();
- if ( tmpvpw->pw_gid & NO_RELAY ) {
- snprintf(WriteBuf, sizeof(WriteBuf), "no_relay 1" RET_CRLF);
- } else {
- snprintf(WriteBuf, sizeof(WriteBuf), "no_relay 0" RET_CRLF);
- }
+
+ snprintf(WriteBuf, sizeof(WriteBuf), "no_relay %d" RET_CRLF,
+ tmpvpw->pw_gid & NO_RELAY ? 1 : 0, RET_CRLF);
wait_write();
- if ( tmpvpw->pw_gid & NO_DIALUP ) {
- snprintf(WriteBuf, sizeof(WriteBuf), "no_dialup 1" RET_CRLF);
- } else {
- snprintf(WriteBuf, sizeof(WriteBuf), "no_dialup 0" RET_CRLF);
- }
+
+ snprintf(WriteBuf, sizeof(WriteBuf), "no_dialup %d" RET_CRLF,
+ tmpvpw->pw_gid & NO_DIALUP ? 1 : 0);
wait_write();
- if ( tmpvpw->pw_gid & V_USER0 ) {
- snprintf(WriteBuf, sizeof(WriteBuf), "user_flag_0 1" RET_CRLF);
- } else {
- snprintf(WriteBuf, sizeof(WriteBuf), "user_flag_0 0" RET_CRLF);
- }
+
+ snprintf(WriteBuf, sizeof(WriteBuf), "user_flag_0 %d" RET_CRLF,
+ tmpvpw->pw_gid & V_USER0 ? 1 : 0);
wait_write();
- if ( tmpvpw->pw_gid & V_USER1 ) {
- snprintf(WriteBuf, sizeof(WriteBuf), "user_flag_1 1" RET_CRLF);
- } else {
- snprintf(WriteBuf, sizeof(WriteBuf), "user_flag_1 0" RET_CRLF);
- }
+
+ snprintf(WriteBuf, sizeof(WriteBuf), "user_flag_1 %d" RET_CRLF,
+ tmpvpw->pw_gid & V_USER1 ? 1 : 0);
wait_write();
- if ( tmpvpw->pw_gid & V_USER2 ) {
- snprintf(WriteBuf, sizeof(WriteBuf), "user_flag_2 1" RET_CRLF);
- } else {
- snprintf(WriteBuf, sizeof(WriteBuf), "user_flag_2 0" RET_CRLF);
- }
+
+ snprintf(WriteBuf, sizeof(WriteBuf), "user_flag_2 %d" RET_CRLF,
+ tmpvpw->pw_gid & V_USER2 ? 1 : 0);
wait_write();
- if ( tmpvpw->pw_gid & V_USER3 ) {
- snprintf(WriteBuf, sizeof(WriteBuf), "user_flag_3 1" RET_CRLF);
- } else {
- snprintf(WriteBuf, sizeof(WriteBuf), "user_flag_3 0" RET_CRLF);
- }
+
+ snprintf(WriteBuf, sizeof(WriteBuf), "user_flag_3 %d" RET_CRLF,
+ tmpvpw->pw_gid & V_USER3 ? 1 : 0);
wait_write();
- if ( tmpvpw->pw_gid & NO_SMTP ) {
- snprintf(WriteBuf, sizeof(WriteBuf), "no_smtp 1" RET_CRLF);
- } else {
- snprintf(WriteBuf, sizeof(WriteBuf), "no_smtp 0" RET_CRLF);
- }
+
+ snprintf(WriteBuf, sizeof(WriteBuf), "no_smtp %d" RET_CRLF,
+ tmpvpw->pw_gid & NO_SMTP ? 1 : 0);
wait_write();
- if ( tmpvpw->pw_gid & QA_ADMIN ) {
- snprintf(WriteBuf, sizeof(WriteBuf), "domain_admin_privileges 1"
RET_CRLF);
- } else {
- snprintf(WriteBuf, sizeof(WriteBuf), "domain_admin_privileges 0"
RET_CRLF);
- }
+
+ snprintf(WriteBuf, sizeof(WriteBuf), "domain_admin_privileges %d" RET_CRLF,
+ tmpvpw->pw_gid & QA_ADMIN ? 1 : 0);
wait_write();
- if ( tmpvpw->pw_gid & V_OVERRIDE ) {
- snprintf(WriteBuf, sizeof(WriteBuf), "override_domain_limits 1"
RET_CRLF);
- } else {
- snprintf(WriteBuf, sizeof(WriteBuf), "override_domain_limits 0"
RET_CRLF);
- }
+
+ snprintf(WriteBuf, sizeof(WriteBuf), "override_domain_limits %d" RET_CRLF,
+ tmpvpw->pw_gid & V_OVERRIDE ? 1 : 0);
wait_write();
- if ( tmpvpw->pw_gid & NO_SPAMASSASSIN ) {
- snprintf(WriteBuf, sizeof(WriteBuf), "no_spamassassin 1" RET_CRLF);
- } else {
- snprintf(WriteBuf, sizeof(WriteBuf), "no_spamassassin 0" RET_CRLF);
- }
+
+ snprintf(WriteBuf, sizeof(WriteBuf), "no_spamassassin %d" RET_CRLF,
+ tmpvpw->pw_gid & NO_SPAMASSASSIN ? 1 : 0);
wait_write();
- if ( tmpvpw->pw_gid & DELETE_SPAM ) {
- snprintf(WriteBuf, sizeof(WriteBuf), "delete_spam 1" RET_CRLF);
- } else {
- snprintf(WriteBuf, sizeof(WriteBuf), "delete_spam 0" RET_CRLF);
- }
+
+ snprintf(WriteBuf, sizeof(WriteBuf), "delete_spam %d" RET_CRLF,
+ tmpvpw->pw_gid & DELETE_SPAM ? 1 : 0);
wait_write();
- if ( tmpvpw->pw_gid & NO_MAILDROP ) {
- snprintf(WriteBuf, sizeof(WriteBuf), "no_maildrop 1" RET_CRLF);
- } else {
- snprintf(WriteBuf, sizeof(WriteBuf), "no_maildrop 0" RET_CRLF);
- }
+
+ snprintf(WriteBuf, sizeof(WriteBuf), "no_maildrop %d" RET_CRLF,
+ tmpvpw->pw_gid & NO_MAILDROP);
wait_write();
- if ( tmpvpw->pw_gid & SA_ADMIN ) {
- snprintf(WriteBuf, sizeof(WriteBuf), "system_admin_privileges 1"
RET_CRLF);
- } else {
- snprintf(WriteBuf, sizeof(WriteBuf), "system_admin_privileges 0"
RET_CRLF);
- }
+
+ snprintf(WriteBuf, sizeof(WriteBuf), "system_admin_privileges %d" RET_CRLF,
+ tmpvpw->pw_gid & SA_ADMIN ? 1 : 0);
wait_write();
}
- snprintf(WriteBuf, sizeof(WriteBuf), "." RET_CRLF);
+ snprintf(WriteBuf, sizeof(WriteBuf), "%s", "." RET_CRLF);
}
@@ -983,7 +942,7 @@
return(-1);
}
- snprintf(WriteBuf,sizeof(WriteBuf), RET_OK);
+ snprintf(WriteBuf,sizeof(WriteBuf), "%s", RET_OK);
return(0);
}
@@ -1032,7 +991,7 @@
return(-1);
}
- snprintf(WriteBuf,sizeof(WriteBuf), RET_OK);
+ snprintf(WriteBuf,sizeof(WriteBuf), "%s", RET_OK);
return(0);
}
@@ -1081,7 +1040,7 @@
return(-1);
}
- snprintf(WriteBuf,sizeof(WriteBuf), RET_OK);
+ snprintf(WriteBuf,sizeof(WriteBuf), "%s", RET_OK);
return(0);
}
@@ -1125,7 +1084,7 @@
return(-1);
}
- snprintf(WriteBuf,sizeof(WriteBuf), RET_OK);
+ snprintf(WriteBuf,sizeof(WriteBuf), "%s", RET_OK);
return(0);
}
@@ -1166,7 +1125,7 @@
return(-1);
}
- snprintf(WriteBuf,sizeof(WriteBuf), RET_OK);
+ snprintf(WriteBuf,sizeof(WriteBuf), "%s", RET_OK);
return(0);
}
@@ -1194,7 +1153,7 @@
/* Clear the domain info cache */
vget_assign(dummy, NULL, 0, NULL, NULL );
- snprintf(WriteBuf,sizeof(WriteBuf), RET_OK);
+ snprintf(WriteBuf,sizeof(WriteBuf), "%s", RET_OK);
return(0);
}
@@ -1229,7 +1188,7 @@
}
}
- snprintf(WriteBuf,sizeof(WriteBuf), RET_OK_MORE);
+ snprintf(WriteBuf,sizeof(WriteBuf), "%s", RET_OK_MORE);
wait_write();
string_list_init(&aliases, 10);
@@ -1268,7 +1227,7 @@
string_list_free(&aliases);
- snprintf(WriteBuf, sizeof(WriteBuf), "." RET_CRLF);
+ snprintf(WriteBuf, sizeof(WriteBuf), "%s", "." RET_CRLF);
return(0);
}
@@ -1719,7 +1678,7 @@
return(-1);
}
- snprintf(WriteBuf,sizeof(WriteBuf), RET_OK_MORE);
+ snprintf(WriteBuf,sizeof(WriteBuf), "%s", RET_OK_MORE);
wait_write();
count = 0;
@@ -2237,7 +2196,7 @@
if (vauth_module_feature("IP_ALIAS_DOMAINS")) {
if ( vdel_ip_map(ip,domain) < 0 ) {
- snprintf(WriteBuf,sizeof(WriteBuf), RET_ERR "0.3204 error" RET_CRLF);
+ snprintf(WriteBuf,sizeof(WriteBuf), "%s", RET_ERR "0.3204 error" RET_CRLF);
return(-1);
}
@@ -2324,66 +2283,26 @@
snprintf(WriteBuf,sizeof(WriteBuf), "default_maxmsgcount %llu" RET_CRLF,
mylimits.defaultmaxmsgcount); wait_write();
- if (mylimits.disable_pop)
- snprintf(WriteBuf,sizeof(WriteBuf), "%s", "disable_pop 1" RET_CRLF);
- else
- snprintf(WriteBuf,sizeof(WriteBuf), "%s", "disable_pop 0" RET_CRLF);
-
- wait_write();
-
- if (mylimits.disable_imap)
- snprintf(WriteBuf,sizeof(WriteBuf), "%s", "disable_imap 1" RET_CRLF);
- else
- snprintf(WriteBuf,sizeof(WriteBuf), "%s", "disable_imap 0" RET_CRLF);
- wait_write();
-
- if (mylimits.disable_dialup)
- snprintf(WriteBuf,sizeof(WriteBuf), "%s", "disable_dialup 1" RET_CRLF);
- else
- snprintf(WriteBuf,sizeof(WriteBuf), "%s", "disable_dialup 0" RET_CRLF);
- wait_write();
-
- if (mylimits.disable_passwordchanging)
- snprintf(WriteBuf,sizeof(WriteBuf), "%s", "disable_password_changing 1"
RET_CRLF);
- else
- snprintf(WriteBuf,sizeof(WriteBuf), "%s", "disable_password_changing 0"
RET_CRLF);
- wait_write();
-
- if (mylimits.disable_webmail)
- snprintf(WriteBuf,sizeof(WriteBuf), "%s", "disable_webmail 1" RET_CRLF);
- else
- snprintf(WriteBuf,sizeof(WriteBuf), "%s", "disable_webmail 0" RET_CRLF);
- wait_write();
-
- if (mylimits.disable_relay)
- snprintf(WriteBuf,sizeof(WriteBuf), "%s", "disable_external_relay 1"
RET_CRLF);
- else
- snprintf(WriteBuf,sizeof(WriteBuf), "%s", "disable_external_relay 0"
RET_CRLF);
- wait_write();
-
- if (mylimits.disable_smtp)
- snprintf(WriteBuf,sizeof(WriteBuf), "%s", "disable_smtp 1" RET_CRLF);
- else
- snprintf(WriteBuf,sizeof(WriteBuf), "%s", "disable_smtp 0" RET_CRLF);
- wait_write();
-
- if (mylimits.disable_spamassassin)
- snprintf(WriteBuf,sizeof(WriteBuf), "%s", "disable_spamassassin 1"
RET_CRLF);
- else
- snprintf(WriteBuf,sizeof(WriteBuf), "%s", "disable_spamassassin 0"
RET_CRLF);
- wait_write();
-
- if (mylimits.delete_spam)
- snprintf(WriteBuf,sizeof(WriteBuf), "%s", "delete_spam 1" RET_CRLF);
- else
- snprintf(WriteBuf,sizeof(WriteBuf), "%s", "delete_spam 0" RET_CRLF);
- wait_write();
-
- if (mylimits.disable_maildrop)
- snprintf(WriteBuf,sizeof(WriteBuf), "%s", "disable_maildrop 1" RET_CRLF);
- else
- snprintf(WriteBuf,sizeof(WriteBuf), "%s", "disable_maildrop 0" RET_CRLF);
- wait_write();
+ snprintf(WriteBuf,sizeof(WriteBuf), "disable_pop %d" RET_CRLF,
+ mylimits.disable_pop ? 1 : 0); wait_write();
+ snprintf(WriteBuf,sizeof(WriteBuf), "disable_imap %d" RET_CRLF,
+ mylimits.disable_imap ? 1 : 0); wait_write();
+ snprintf(WriteBuf,sizeof(WriteBuf), "disable_dialup %d" RET_CRLF,
+ mylimits.disable_dialup ? 1 : 0); wait_write();
+ snprintf(WriteBuf,sizeof(WriteBuf), "disable_password_changing %d" RET_CRLF,
+ mylimits.disable_passwordchanging ? 1 : 0); wait_write();
+ snprintf(WriteBuf,sizeof(WriteBuf), "disable_webmail %d" RET_CRLF,
+ mylimits.disable_webmail ? 1 : 0); wait_write();
+ snprintf(WriteBuf,sizeof(WriteBuf), "disable_external_relay %d" RET_CRLF,
+ mylimits.disable_relay ? 1 : 0); wait_write();
+ snprintf(WriteBuf,sizeof(WriteBuf), "disable_smtp %d" RET_CRLF,
+ mylimits.disable_smtp ? 1 : 0); wait_write();
+ snprintf(WriteBuf,sizeof(WriteBuf), "disable_spamassassin %d" RET_CRLF,
+ mylimits.disable_spamassassin ? 1 : 0); wait_write();
+ snprintf(WriteBuf,sizeof(WriteBuf), "delete_spam %d" RET_CRLF,
+ mylimits.delete_spam ? 1 : 0); wait_write();
+ snprintf(WriteBuf,sizeof(WriteBuf), "disable_maildrop %d" RET_CRLF,
+ mylimits.disable_maildrop ? 1 : 0); wait_write();
snprintf(WriteBuf,sizeof(WriteBuf), "perm_account %d" RET_CRLF,
mylimits.perm_account); wait_write();
@@ -2790,7 +2709,7 @@
wait_write();
}
}
- snprintf(WriteBuf,sizeof(WriteBuf), "." RET_CRLF);
+ snprintf(WriteBuf,sizeof(WriteBuf), "%s", "." RET_CRLF);
return(1);
}