commit eaaf23d5c8617247b09111d46ed811d9067186f5
parent a2f11a70fe9bd3ef519b15c4bf4e908dbae55886
Author: Paweł Pękala <c0rn@gazeta.pl>
Date: Wed, 1 Feb 2012 18:26:56 +0000
2012-02-01 [pawel] 3.8.0cvs20
* src/jpilot.c
* src/mutt.c
* src/pine.c
* src/procmsg.c
* src/vcard.c
* src/gtk/sslcertwindow.c
More strncat boundary checks
Diffstat:
9 files changed, 30 insertions(+), 18 deletions(-)
diff --git a/ChangeLog b/ChangeLog
@@ -1,3 +1,13 @@
+2012-02-01 [pawel] 3.8.0cvs20
+
+ * src/jpilot.c
+ * src/mutt.c
+ * src/pine.c
+ * src/procmsg.c
+ * src/vcard.c
+ * src/gtk/sslcertwindow.c
+ More strncat boundary checks
+
2012-01-31 [wwp] 3.8.0cvs19
* src/gtk/gtkutils.c
diff --git a/PATCHSETS b/PATCHSETS
@@ -4336,3 +4336,4 @@
( cvs diff -u -r 1.27.2.59 -r 1.27.2.60 src/addr_compl.c; ) > 3.8.0cvs17.patchset
( cvs diff -u -r 1.1.4.28 -r 1.1.4.29 src/gtk/progressdialog.c; cvs diff -u -r 1.1.4.16 -r 1.1.4.17 src/gtk/progressdialog.h; cvs diff -u -r 1.149.2.104 -r 1.149.2.105 src/inc.c; cvs diff -u -r 1.17.2.61 -r 1.17.2.62 src/send_message.c; ) > 3.8.0cvs18.patchset
( cvs diff -u -r 1.5.2.101 -r 1.5.2.102 src/gtk/gtkutils.c; ) > 3.8.0cvs19.patchset
+( cvs diff -u -r 1.18.2.33 -r 1.18.2.34 src/jpilot.c; cvs diff -u -r 1.6.10.19 -r 1.6.10.20 src/mutt.c; cvs diff -u -r 1.6.2.18 -r 1.6.2.19 src/pine.c; cvs diff -u -r 1.150.2.120 -r 1.150.2.121 src/procmsg.c; cvs diff -u -r 1.14.2.21 -r 1.14.2.22 src/vcard.c; cvs diff -u -r 1.9.2.32 -r 1.9.2.33 src/gtk/sslcertwindow.c; ) > 3.8.0cvs20.patchset
diff --git a/configure.ac b/configure.ac
@@ -12,7 +12,7 @@ MINOR_VERSION=8
MICRO_VERSION=0
INTERFACE_AGE=0
BINARY_AGE=0
-EXTRA_VERSION=19
+EXTRA_VERSION=20
EXTRA_RELEASE=
EXTRA_GTK2_VERSION=
diff --git a/src/gtk/sslcertwindow.c b/src/gtk/sslcertwindow.c
@@ -94,8 +94,8 @@ static GtkWidget *cert_presenter(SSLCertificate *cert)
tmp = g_malloc(BUFFSIZE);
if (gnutls_x509_crt_get_issuer_dn_by_oid(cert->x509_cert,
GNUTLS_OID_X520_COUNTRY_NAME, 0, 0, tmp, &n) == 0) {
- strncat(issuer_location, ", ", BUFFSIZE-strlen(issuer_location));
- strncat(issuer_location, tmp, BUFFSIZE-strlen(issuer_location));
+ strncat(issuer_location, ", ", BUFFSIZE-strlen(issuer_location)-1);
+ strncat(issuer_location, tmp, BUFFSIZE-strlen(issuer_location)-1);
}
g_free(tmp);
}
@@ -121,8 +121,8 @@ static GtkWidget *cert_presenter(SSLCertificate *cert)
tmp = g_malloc(BUFFSIZE);
if (gnutls_x509_crt_get_dn_by_oid(cert->x509_cert,
GNUTLS_OID_X520_COUNTRY_NAME, 0, 0, tmp, &n) == 0) {
- strncat(subject_location, ", ", BUFFSIZE-strlen(subject_location));
- strncat(subject_location, tmp, BUFFSIZE-strlen(subject_location));
+ strncat(subject_location, ", ", BUFFSIZE-strlen(subject_location)-1);
+ strncat(subject_location, tmp, BUFFSIZE-strlen(subject_location)-1);
}
g_free(tmp);
}
diff --git a/src/jpilot.c b/src/jpilot.c
@@ -1595,7 +1595,7 @@ GList *jpilot_get_all_persons( JPilotFile *pilotFile ) {
*/
gchar *jpilot_find_pilotdb( void ) {
const gchar *homedir;
- gchar str[ WORK_BUFLEN ];
+ gchar str[ WORK_BUFLEN + 1 ];
gint len;
FILE *fp;
@@ -1610,9 +1610,9 @@ gchar *jpilot_find_pilotdb( void ) {
str[ ++len ] = '\0';
}
}
- strncat( str, JPILOT_DBHOME_DIR, WORK_BUFLEN );
- strncat( str, G_DIR_SEPARATOR_S, WORK_BUFLEN );
- strncat( str, JPILOT_DBHOME_FILE, WORK_BUFLEN );
+ strncat( str, JPILOT_DBHOME_DIR, WORK_BUFLEN - strlen(str) );
+ strncat( str, G_DIR_SEPARATOR_S, WORK_BUFLEN - strlen(str) );
+ strncat( str, JPILOT_DBHOME_FILE, WORK_BUFLEN - strlen(str) );
/* Attempt to open */
if( ( fp = g_fopen( str, "rb" ) ) != NULL ) {
diff --git a/src/mutt.c b/src/mutt.c
@@ -533,7 +533,7 @@ gint mutt_import_data( MuttFile *muttFile, AddressCache *cache ) {
*/
gchar *mutt_find_file( void ) {
const gchar *homedir;
- gchar str[ WORK_BUFLEN ];
+ gchar str[ WORK_BUFLEN + 1 ];
gint len;
FILE *fp;
@@ -548,7 +548,7 @@ gchar *mutt_find_file( void ) {
str[ ++len ] = '\0';
}
}
- strncat( str, MUTT_HOME_FILE, WORK_BUFLEN );
+ strncat( str, MUTT_HOME_FILE, WORK_BUFLEN - strlen(str) );
/* Attempt to open */
if( ( fp = g_fopen( str, "rb" ) ) != NULL ) {
diff --git a/src/pine.c b/src/pine.c
@@ -635,7 +635,7 @@ gint pine_import_data( PineFile *pineFile, AddressCache *cache ) {
*/
gchar *pine_find_file( void ) {
const gchar *homedir;
- gchar str[ WORK_BUFLEN ];
+ gchar str[ WORK_BUFLEN + 1 ];
gint len;
FILE *fp;
@@ -650,7 +650,7 @@ gchar *pine_find_file( void ) {
str[ ++len ] = '\0';
}
}
- strncat( str, PINE_HOME_FILE, WORK_BUFLEN );
+ strncat( str, PINE_HOME_FILE, WORK_BUFLEN - strlen(str) );
/* Attempt to open */
if( ( fp = g_fopen( str, "rb" ) ) != NULL ) {
diff --git a/src/procmsg.c b/src/procmsg.c
@@ -1147,7 +1147,8 @@ void procmsg_print_message(MsgInfo *msginfo, const gchar *cmdline)
g_free(prtmp);
g_strchomp(buf);
- if (buf[strlen(buf) - 1] != '&') strncat(buf, "&", sizeof(buf));
+ if (buf[strlen(buf) - 1] != '&')
+ strncat(buf, "&", sizeof(buf) - strlen(buf) - 1);
if (system(buf) == -1)
g_warning("system(%s) failed.", buf);
}
diff --git a/src/vcard.c b/src/vcard.c
@@ -561,7 +561,7 @@ GList *vcard_get_all_persons( VCardFile *cardFile ) {
gchar *vcard_find_gnomecard( void ) {
const gchar *homedir;
gchar buf[ WORK_BUFLEN ];
- gchar str[ WORK_BUFLEN ];
+ gchar str[ WORK_BUFLEN + 1 ];
gchar *fileSpec;
gint len, lenlbl, i;
FILE *fp;
@@ -577,9 +577,9 @@ gchar *vcard_find_gnomecard( void ) {
str[ ++len ] = '\0';
}
}
- strncat( str, GNOMECARD_DIR, WORK_BUFLEN );
- strncat( str, G_DIR_SEPARATOR_S, WORK_BUFLEN );
- strncat( str, GNOMECARD_FILE, WORK_BUFLEN );
+ strncat( str, GNOMECARD_DIR, WORK_BUFLEN - strlen(str) );
+ strncat( str, G_DIR_SEPARATOR_S, WORK_BUFLEN - strlen(str) );
+ strncat( str, GNOMECARD_FILE, WORK_BUFLEN - strlen(str) );
fileSpec = NULL;
if( ( fp = g_fopen( str, "rb" ) ) != NULL ) {