talons

Fork of Claws Mail https://www.claws-mail
Log | Files | Refs | README | LICENSE

commit 82eabd8f58cc260a8d5b647b62f2b76c23d73644
parent ef150ebd4ee0faae1dcc2d79b6c0f350eb722148
Author: Paweł Pękala <c0rn@gazeta.pl>
Date:   Fri, 20 Jan 2012 22:56:54 +0000

2012-01-20 [pawel]	3.8.0cvs16

	* src/addrbook.c
	* src/exportldif.c
		Fix bug #2574 'Statement might be overflowing a
		buffer in strncat'

Diffstat:
MChangeLog | 7+++++++
MPATCHSETS | 1+
Mconfigure.ac | 2+-
Msrc/addrbook.c | 6+++---
Msrc/exportldif.c | 14+++++++-------
5 files changed, 19 insertions(+), 11 deletions(-)

diff --git a/ChangeLog b/ChangeLog @@ -1,3 +1,10 @@ +2012-01-20 [pawel] 3.8.0cvs16 + + * src/addrbook.c + * src/exportldif.c + Fix bug #2574 'Statement might be overflowing a + buffer in strncat' + 2012-01-20 [pawel] 3.8.0cvs15 * src/mimeview.c diff --git a/PATCHSETS b/PATCHSETS @@ -4332,3 +4332,4 @@ ( cvs diff -u -r 1.274.2.340 -r 1.274.2.341 src/mainwindow.c; cvs diff -u -r 1.39.2.62 -r 1.39.2.63 src/mainwindow.h; cvs diff -u -r 1.43.2.124 -r 1.43.2.125 src/toolbar.c; ) > 3.8.0cvs13.patchset ( cvs diff -u -r 1.1.2.39 -r 1.1.2.40 commitHelper; ) > 3.8.0cvs14.patchset ( cvs diff -u -r 1.83.2.187 -r 1.83.2.188 src/mimeview.c; ) > 3.8.0cvs15.patchset +( cvs diff -u -r 1.22.2.26 -r 1.22.2.27 src/addrbook.c; cvs diff -u -r 1.1.4.23 -r 1.1.4.24 src/exportldif.c; ) > 3.8.0cvs16.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=15 +EXTRA_VERSION=16 EXTRA_RELEASE= EXTRA_GTK2_VERSION= diff --git a/src/addrbook.c b/src/addrbook.c @@ -1804,7 +1804,7 @@ GList *addrbook_get_bookfile_list(AddressBookFile *book) { GDir *dir; const gchar *dir_name; struct stat statbuf; - gchar buf[WORK_BUFLEN]; + gchar buf[WORK_BUFLEN + 1]; gchar numbuf[WORK_BUFLEN]; gint len, lenpre, lensuf, lennum; long int val, maxval; @@ -1827,7 +1827,7 @@ GList *addrbook_get_bookfile_list(AddressBookFile *book) { } adbookdir = g_strdup(buf); - strncat(buf, ADDRBOOK_PREFIX, WORK_BUFLEN); + strncat(buf, ADDRBOOK_PREFIX, WORK_BUFLEN - strlen(buf)); if( ( dir = g_dir_open( adbookdir, 0, NULL ) ) == NULL ) { book->retVal = MGU_OPEN_DIRECTORY; @@ -1846,7 +1846,7 @@ GList *addrbook_get_bookfile_list(AddressBookFile *book) { gboolean flg; strncpy(buf, adbookdir, WORK_BUFLEN); - strncat(buf, dir_name, WORK_BUFLEN); + strncat(buf, dir_name, WORK_BUFLEN - strlen(buf)); g_stat(buf, &statbuf); if (S_ISREG(statbuf.st_mode)) { if (strncmp( diff --git a/src/exportldif.c b/src/exportldif.c @@ -197,7 +197,7 @@ static gchar *exportldif_fmt_value( gchar *value ) { static gchar *exportldif_fmt_dn( ExportLdifCtl *ctl, const ItemPerson *person ) { - gchar buf[ FMT_BUFSIZE ]; + gchar buf[ FMT_BUFSIZE + 1 ]; gchar *retVal = NULL; gchar *attr = NULL; gchar *value = NULL; @@ -231,23 +231,23 @@ static gchar *exportldif_fmt_dn( if( attr ) { if( value ) { if( strlen( value ) > 0 ) { - strncat( buf, attr, FMT_BUFSIZE ); - strncat( buf, "=", FMT_BUFSIZE ); + strncat( buf, attr, FMT_BUFSIZE - strlen(buf) ); + strncat( buf, "=", FMT_BUFSIZE - strlen(buf) ); if( dupval ) { /* Format and free duplicated value */ - strncat( buf, dupval, FMT_BUFSIZE ); + strncat( buf, dupval, FMT_BUFSIZE - strlen(buf) ); g_free( dupval ); } else { /* Use original value */ - strncat( buf, value, FMT_BUFSIZE ); + strncat( buf, value, FMT_BUFSIZE - strlen(buf) ); } /* Append suffix */ if( ctl->suffix ) { if( strlen( ctl->suffix ) > 0 ) { - strncat( buf, ",", FMT_BUFSIZE ); - strncat( buf, ctl->suffix, FMT_BUFSIZE ); + strncat( buf, ",", FMT_BUFSIZE - strlen(buf) ); + strncat( buf, ctl->suffix, FMT_BUFSIZE - strlen(buf) ); } }