From: Brendan Cully Date: Sat, 8 Sep 2007 22:20:47 +0000 (-0700) Subject: Attempt to clean up DB back-end selection X-Git-Tag: mutt-1-5-17-rel~48 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=bd7a6c819a7ad17d2d48b22308793ef13ea448e1;p=mutt Attempt to clean up DB back-end selection --- diff --git a/ChangeLog b/ChangeLog index 3df8d2dd..f56e57c7 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,28 +1,31 @@ -2007-09-05 07:16 +0000 Rocco Rutte (964658b145df) +2007-09-06 20:13 +0200 Rocco Rutte (648ad3832e82) + + * muttlib.c: Rewrite padding logic for mutt_FormatString() + + Do so by checking columns and bytes individually to make sure we + really don't write past the end of allocated buffers. This patch + fixes all my crashes I saw with files attached to/with the settings + for #2882 and #2900. + +2007-09-05 10:52 +0000 Rocco Rutte (078744e84667) + + * init.c, pattern.c: Fix/improve intl error messages * browser.c: Interpret relative paths in browser relative to shown dir, not working dir (closes #2471). -2007-09-05 07:12 +0000 Rocco Rutte (e0c7b3a70c3e) - * help.c, pager.c, pager.h: Teach pager how to ignore $wrap and use it for help (closes #2896). -2007-09-05 07:07 +0000 Rocco Rutte (dc54d31493a2) - * doc/manual.xml.head: Manual: make sure contents in shorter than 80 chars Otherwise conversion to plain text may cause line breaks rendering examples syntacially invalid (closes #2185). -2007-09-05 07:03 +0000 Rocco Rutte (3f59f7dd2965) - * doc/manual.xml.head: Manual: don't use to present structured data -2007-09-05 06:56 +0000 Rocco Rutte (bb4f47b4578d) - * muttlib.c: Fix buffer overflow in mutt_FormatString() The variable in question is supposed to track string sizes, not @@ -30,7 +33,7 @@ 2007-09-04 17:22 -0700 Brendan Cully (7df563e4b7fd) - * ChangeLog, configure.ac: Add libz to crypto libs if available + * configure.ac: Add libz to crypto libs if available (closes #2303). 2007-09-04 12:06 -0700 Ivan Vilata i Balaguer (d9a6b3f8a492) diff --git a/configure.ac b/configure.ac index 34d11e28..91c63941 100644 --- a/configure.ac +++ b/configure.ac @@ -808,12 +808,23 @@ AC_ARG_ENABLE(exact-address, AC_HELP_STRING([--enable-exact-address], [Enable re fi]) dnl -- start cache -- -AC_ARG_ENABLE(hcache, AC_HELP_STRING([--enable-hcache], [Enable header caching]), -[if test x$enableval = xyes; then +use_qdbm=no +AC_ARG_ENABLE(hcache, AC_HELP_STRING([--enable-hcache], + [Enable header caching])) +AC_ARG_WITH(qdbm, AC_HELP_STRING([--without-qdbm], + [Don't use qdbm even if it is available])) +AC_ARG_WITH(gdbm, AC_HELP_STRING([--without-gdbm], + [Don't use gdbm even if it is available])) +AC_ARG_WITH(bdb, AC_HELP_STRING([--with-bdb[=DIR]], + [Use BerkeleyDB4 if gdbm is not available]), ac_bdb_prefix=$withval) + +if test x$enable_hcache = xyes +then AC_DEFINE(USE_HCACHE, 1, [Enable header caching]) MUTT_LIB_OBJECTS="$MUTT_LIB_OBJECTS hcache.o" OLDCPPFLAGS="$CPPFLAGS" + OLDLDFLAGS="$LDFLAGS" OLDLIBS="$LIBS" need_md5="yes" @@ -821,8 +832,7 @@ AC_ARG_ENABLE(hcache, AC_HELP_STRING([--enable-hcache], [Enable header caching]) dnl hcachever.sh tool for calculating struct digest AC_CHECK_PROGS([MD5], [md5 md5sum openssl], [none]) - use_qdbm=no - AC_ARG_WITH(qdbm, AC_HELP_STRING([--without-qdbm], [Don't use qdbm even if it is available])) + dnl -- QDBM -- if test "$with_qdbm" != "no" then if test -n "$with_qdbm" && test "$with_qdbm" != "yes" @@ -841,7 +851,12 @@ AC_ARG_ENABLE(hcache, AC_HELP_STRING([--enable-hcache], [Enable header caching]) saved_LIBS="$LIBS" AC_CHECK_HEADERS(villa.h) - AC_CHECK_LIB(qdbm, vlopen, [MUTTLIBS="$MUTTLIBS -lqdbm"; use_qdbm=yes]) + AC_CHECK_LIB(qdbm, vlopen, + [MUTTLIBS="$MUTTLIBS -lqdbm" + AC_DEFINE(HAVE_QDBM, 1, [QDBM Support]) + use_qdbm=yes], + [CPPFLAGS="$OLDCPPFLAGS" + LDFLAGS="$OLDLDFLAGS"]) LIBS="$saved_LIBS" if test -n "$with_qdbm" && test "$use_qdbm" != yes then @@ -849,24 +864,33 @@ AC_ARG_ENABLE(hcache, AC_HELP_STRING([--enable-hcache], [Enable header caching]) fi fi - AC_ARG_WITH(gdbm, AC_HELP_STRING([--without-gdbm], [Don't use gdbm even if it is available])) - if test x$with_gdbm != xno && test $use_qdbm != yes; then + dnl -- GDBM -- + if test x$with_gdbm != xno && test $use_qdbm != yes + then if test "$with_gdbm" != "yes" then CPPFLAGS="$CPPFLAGS -I$with_gdbm/include" LDFLAGS="$LDFLAGS -L$with_gdbm/lib" fi - CPPFLAGS="$OLDCPPFLAGS" - LIBS="$OLDLIBS -lgdbm"; + saved_LIBS="$LIBS" + LIBS="$LIBS -lgdbm" AC_CACHE_CHECK(for gdbm_open, ac_cv_gdbmopen,[ ac_cv_gdbmopen=no AC_TRY_LINK([#include ],[gdbm_open(0,0,0,0,0);],[ac_cv_gdbmopen=yes]) ]) + LIBS="$saved_LIBS" + if test "$ac_cv_gdbmopen" = yes + then + AC_DEFINE(HAVE_GDBM, 1, [GDBM Support]) + MUTTLIBS="$MUTTLIBS -lgdbm" + elif test -n "$with_gdbm" + then + AC_MSG_ERROR([GDBM could not be used. Check config.log for details.]) + fi fi + dnl -- BDB -- ac_bdb_prefix=yes - AC_ARG_WITH(bdb, AC_HELP_STRING([--with-bdb[=DIR]], [Use BerkeleyDB4 if gdbm is not available]), - ac_bdb_prefix=$withval) if test x$ac_bdb_prefix != xno && test x$ac_cv_gdbmopen != xyes && test $use_qdbm != yes; then test x$ac_bdb_prefix = xyes && ac_bdb_prefix="$mutt_cv_prefix /opt/csw/bdb4 /opt /usr/local /usr" for d in $ac_bdb_prefix; do @@ -907,27 +931,22 @@ AC_ARG_ENABLE(hcache, AC_HELP_STRING([--enable-hcache], [Enable header caching]) done test x$BDB_LIB != x && break done - if test x$ac_cv_dbcreate = xyes; then + if test x$ac_cv_dbcreate = xyes + then AC_MSG_RESULT(yes) + CPPFLAGS="$OLDCPPFLAGS -I$BDB_INCLUDE_DIR" + LIBS="$OLDLIBS -L$BDB_LIB_DIR -l$BDB_LIB" + AC_DEFINE(HAVE_DB4, 1, [Berkeley DB4 Support]) else AC_MSG_RESULT(no) fi fi - if test "$use_qdbm" = yes; then - AC_DEFINE(HAVE_QDBM, 1, [QDBM Support]) - elif test x$ac_cv_gdbmopen = xyes; then - CPPFLAGS="$OLDCPPFLAGS" - LIBS="$OLDLIBS -lgdbm"; - AC_DEFINE(HAVE_GDBM, 1, [GDBM Support]) - elif test x$ac_cv_dbcreate = xyes; then - CPPFLAGS="$OLDCPPFLAGS -I$BDB_INCLUDE_DIR" - LIBS="$OLDLIBS -L$BDB_LIB_DIR -l$BDB_LIB" - AC_DEFINE(HAVE_DB4, 1, [Berkeley DB4 Support]) - else + if test x$use_qdbm != xyes && test x$ac_cv_gdbmopen != xyes && test x$ac_cv_dbcreate != xyes + then AC_MSG_ERROR([You need QDBM, GDBM or Berkeley DB4 for hcache]) fi -fi]) +fi dnl -- end cache -- if test "$need_md5" = "yes"