[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Please hint cxxtools-1.4.3.1-1 to testing



I've uploaded a new upstream version of cxxtools a few days ago.  It
has just some bug fixes, but none that have bugs in the BTS.  The diff
is rather large since I'm running autotools in debian/rules, but I've
attached the filtered output of
debdiff cxxtools_1.4.3-2.dsc cxxtools_1.4.3.1-1.dsc
which is hopefully more readable.

I don't think that the new version has anything controversial in it.
cxxtools has a couple of rdepends, which are both my packages too.

Please consider hinting cxxtools to testing.
diff -Nru /tmp/dQC5taSqUd/cxxtools-1.4.3/ChangeLog /tmp/Kkq4uJnRD6/cxxtools-1.4.3.1/ChangeLog
--- /tmp/dQC5taSqUd/cxxtools-1.4.3/ChangeLog	2006-08-15 00:33:02.000000000 +0300
+++ /tmp/Kkq4uJnRD6/cxxtools-1.4.3.1/ChangeLog	2006-11-27 22:50:00.000000000 +0200
@@ -1,6 +1,20 @@
+2006-11-22 tommi@tntnet.org
+
+  - make loggers more private and instantiate existing loggers later
+  - "putchar" is a macro somewhere - rename member-method to workaround
+    this name-conflict
+
+2006-11-20 tommi@tntnet.org
+
+  - fix tcpstream to correctly report end-of-file in all circumstances
+
+2006-09-11 tommi@tntnet.org
+
+  - fixed buffer-overflow in logger when formatting dates
+
 2006-08-10 tommi@tntnet.org
 
-  - new helper-class IConverter for easyer usage of iconv(3) and iconvstream
+  - new helper-class IConverter for easier usage of iconv(3) and iconvstream
 
 2006-07-27 tommi@tntnet.org
 
diff -Nru /tmp/dQC5taSqUd/cxxtools-1.4.3/Makefile.in /tmp/Kkq4uJnRD6/cxxtools-1.4.3.1/Makefile.in
diff -Nru /tmp/dQC5taSqUd/cxxtools-1.4.3/aclocal.m4 /tmp/Kkq4uJnRD6/cxxtools-1.4.3.1/aclocal.m4
diff -Nru /tmp/dQC5taSqUd/cxxtools-1.4.3/config.guess /tmp/Kkq4uJnRD6/cxxtools-1.4.3.1/config.guess
diff -Nru /tmp/dQC5taSqUd/cxxtools-1.4.3/config.sub /tmp/Kkq4uJnRD6/cxxtools-1.4.3.1/config.sub
diff -Nru /tmp/dQC5taSqUd/cxxtools-1.4.3/configure /tmp/Kkq4uJnRD6/cxxtools-1.4.3.1/configure
diff -Nru /tmp/dQC5taSqUd/cxxtools-1.4.3/configure.in /tmp/Kkq4uJnRD6/cxxtools-1.4.3.1/configure.in
--- /tmp/dQC5taSqUd/cxxtools-1.4.3/configure.in	2006-07-28 11:10:33.000000000 +0300
+++ /tmp/Kkq4uJnRD6/cxxtools-1.4.3.1/configure.in	2006-11-26 01:00:06.000000000 +0200
@@ -1,4 +1,4 @@
-AC_INIT(cxxtools, 1.4.3, [Tommi Maekitalo <tommi@tntnet.org>])
+AC_INIT(cxxtools, 1.4.3.1, [Tommi Maekitalo <tommi@tntnet.org>])
 AM_INIT_AUTOMAKE
 
 abi_current=3
diff -Nru /tmp/dQC5taSqUd/cxxtools-1.4.3/debian/changelog /tmp/Kkq4uJnRD6/cxxtools-1.4.3.1/debian/changelog
--- /tmp/dQC5taSqUd/cxxtools-1.4.3/debian/changelog	2006-12-11 17:00:47.000000000 +0200
+++ /tmp/Kkq4uJnRD6/cxxtools-1.4.3.1/debian/changelog	2006-12-11 17:00:48.000000000 +0200
@@ -1,3 +1,9 @@
+cxxtools (1.4.3.1-1) unstable; urgency=low
+
+  * New upstream release
+
+ -- Kari Pahula <kaol@debian.org>  Thu,  7 Dec 2006 00:06:47 +0200
+
 cxxtools (1.4.3-2) unstable; urgency=low
 
   * Added dependency on libstdc++-dev for libcxxtools-dev
diff -Nru /tmp/dQC5taSqUd/cxxtools-1.4.3/demo/Makefile.in /tmp/Kkq4uJnRD6/cxxtools-1.4.3.1/demo/Makefile.in
diff -Nru /tmp/dQC5taSqUd/cxxtools-1.4.3/demo/logsh.cpp /tmp/Kkq4uJnRD6/cxxtools-1.4.3.1/demo/logsh.cpp
--- /tmp/dQC5taSqUd/cxxtools-1.4.3/demo/logsh.cpp	2006-06-18 23:48:04.000000000 +0300
+++ /tmp/Kkq4uJnRD6/cxxtools-1.4.3.1/demo/logsh.cpp	2006-11-29 00:10:33.000000000 +0200
@@ -79,6 +79,8 @@
         log_error(argv[a]);
       else if (warn)
         log_warn(argv[a]);
+      else if (info)
+        log_info(argv[a]);
       else if (debug)
         log_debug(argv[a]);
     }
diff -Nru /tmp/dQC5taSqUd/cxxtools-1.4.3/include/Makefile.in /tmp/Kkq4uJnRD6/cxxtools-1.4.3.1/include/Makefile.in
diff -Nru /tmp/dQC5taSqUd/cxxtools-1.4.3/include/cxxtools/base64stream.h /tmp/Kkq4uJnRD6/cxxtools-1.4.3.1/include/cxxtools/base64stream.h
--- /tmp/dQC5taSqUd/cxxtools-1.4.3/include/cxxtools/base64stream.h	2006-06-18 23:52:05.000000000 +0300
+++ /tmp/Kkq4uJnRD6/cxxtools-1.4.3.1/include/cxxtools/base64stream.h	2006-11-27 22:45:30.000000000 +0200
@@ -55,7 +55,7 @@
     int sync();
 
   private:
-    void putchar(char ch);
+    void putChar(char ch);
     int getval();
 };
 
diff -Nru /tmp/dQC5taSqUd/cxxtools-1.4.3/include/cxxtools/httprequest.h /tmp/Kkq4uJnRD6/cxxtools-1.4.3.1/include/cxxtools/httprequest.h
--- /tmp/dQC5taSqUd/cxxtools-1.4.3/include/cxxtools/httprequest.h	2006-06-18 23:52:04.000000000 +0300
+++ /tmp/Kkq4uJnRD6/cxxtools-1.4.3.1/include/cxxtools/httprequest.h	2006-11-26 01:00:04.000000000 +0200
@@ -90,8 +90,8 @@
       QueryParams& getQueryParams()       { return params; }
       const QueryParams& getQueryParams() const                 { return params; }
 
-      void set(const std::string name, const std::string value) { params.add(name, value); }
-      void set(const std::string value)                         { params.add(value); }
+      void set(const std::string& name, const std::string& value) { params.add(name, value); }
+      void set(const std::string& value)                         { params.add(value); }
 
       void execute();
 
diff -Nru /tmp/dQC5taSqUd/cxxtools-1.4.3/libltdl/Makefile.in /tmp/Kkq4uJnRD6/cxxtools-1.4.3.1/libltdl/Makefile.in
diff -Nru /tmp/dQC5taSqUd/cxxtools-1.4.3/libltdl/acinclude.m4 /tmp/Kkq4uJnRD6/cxxtools-1.4.3.1/libltdl/acinclude.m4
diff -Nru /tmp/dQC5taSqUd/cxxtools-1.4.3/libltdl/aclocal.m4 /tmp/Kkq4uJnRD6/cxxtools-1.4.3.1/libltdl/aclocal.m4
diff -Nru /tmp/dQC5taSqUd/cxxtools-1.4.3/libltdl/config.guess /tmp/Kkq4uJnRD6/cxxtools-1.4.3.1/libltdl/config.guess
diff -Nru /tmp/dQC5taSqUd/cxxtools-1.4.3/libltdl/config.sub /tmp/Kkq4uJnRD6/cxxtools-1.4.3.1/libltdl/config.sub
diff -Nru /tmp/dQC5taSqUd/cxxtools-1.4.3/libltdl/configure /tmp/Kkq4uJnRD6/cxxtools-1.4.3.1/libltdl/configure
diff -Nru /tmp/dQC5taSqUd/cxxtools-1.4.3/libltdl/ltdl.c /tmp/Kkq4uJnRD6/cxxtools-1.4.3.1/libltdl/ltdl.c
diff -Nru /tmp/dQC5taSqUd/cxxtools-1.4.3/libltdl/ltmain.sh /tmp/Kkq4uJnRD6/cxxtools-1.4.3.1/libltdl/ltmain.sh
diff -Nru /tmp/dQC5taSqUd/cxxtools-1.4.3/ltmain.sh /tmp/Kkq4uJnRD6/cxxtools-1.4.3.1/ltmain.sh
diff -Nru /tmp/dQC5taSqUd/cxxtools-1.4.3/src/Makefile.in /tmp/Kkq4uJnRD6/cxxtools-1.4.3.1/src/Makefile.in
diff -Nru /tmp/dQC5taSqUd/cxxtools-1.4.3/src/base64stream.cpp /tmp/Kkq4uJnRD6/cxxtools-1.4.3.1/src/base64stream.cpp
--- /tmp/dQC5taSqUd/cxxtools-1.4.3/src/base64stream.cpp	2006-06-18 23:48:04.000000000 +0300
+++ /tmp/Kkq4uJnRD6/cxxtools-1.4.3.1/src/base64stream.cpp	2006-11-27 22:45:53.000000000 +0200
@@ -39,34 +39,34 @@
     case 1:
       B = 0;
       C = 0;
-      putchar(cv[(A >> 2) & 0x3F]);
-      putchar(cv[((A << 4) | ((B >> 4) & 0xF)) & 0x3F]);
-      putchar('=');
-      putchar('=');
+      putChar(cv[(A >> 2) & 0x3F]);
+      putChar(cv[((A << 4) | ((B >> 4) & 0xF)) & 0x3F]);
+      putChar('=');
+      putChar('=');
       break;
 
     case 2:
       C = 0;
-      putchar(cv[(A >> 2) & 0x3F]);
-      putchar(cv[((A << 4) | ((B >> 4) & 0xF)) & 0x3F]);
-      putchar(cv[((B << 2) | ((C >> 6) & 0x3)) & 0x3F]);
-      putchar('=');
+      putChar(cv[(A >> 2) & 0x3F]);
+      putChar(cv[((A << 4) | ((B >> 4) & 0xF)) & 0x3F]);
+      putChar(cv[((B << 2) | ((C >> 6) & 0x3)) & 0x3F]);
+      putChar('=');
       break;
 
     case 3:
-      putchar(cv[(A >> 2) & 0x3F]);
-      putchar(cv[((A << 4) | ((B >> 4) & 0xF)) & 0x3F]);
-      putchar(cv[((B << 2) | ((C >> 6) & 0x3)) & 0x3F]);
-      putchar(cv[( C                         ) & 0x3F]);
+      putChar(cv[(A >> 2) & 0x3F]);
+      putChar(cv[((A << 4) | ((B >> 4) & 0xF)) & 0x3F]);
+      putChar(cv[((B << 2) | ((C >> 6) & 0x3)) & 0x3F]);
+      putChar(cv[( C                         ) & 0x3F]);
       break;
   }
 
-  putchar('\n');
-  putchar('=');
-  putchar('=');
-  putchar('=');
-  putchar('=');
-  putchar('\n');
+  putChar('\n');
+  putChar('=');
+  putChar('=');
+  putChar('=');
+  putChar('=');
+  putChar('\n');
 
   setp(obuffer, obuffer + 3);
   indecode = false;
@@ -79,10 +79,10 @@
     char A = obuffer[0];
     char B = obuffer[1];
     char C = obuffer[2];
-    putchar(cv[(A >> 2) & 0x3F]);
-    putchar(cv[((A << 4) | ((B >> 4) & 0xF)) & 0x3F]);
-    putchar(cv[((B << 2) | ((C >> 6) & 0x3)) & 0x3F]);
-    putchar(cv[( C                         ) & 0x3F]);
+    putChar(cv[(A >> 2) & 0x3F]);
+    putChar(cv[((A << 4) | ((B >> 4) & 0xF)) & 0x3F]);
+    putChar(cv[((B << 2) | ((C >> 6) & 0x3)) & 0x3F]);
+    putChar(cv[( C                         ) & 0x3F]);
   }
 
   setp(obuffer, obuffer + 3);
@@ -149,7 +149,7 @@
   return 0;
 }
 
-void Base64stream_streambuf::putchar(char ch)
+void Base64stream_streambuf::putChar(char ch)
 {
   sinksource->sputc(ch);
   if (ch == '\n')
diff -Nru /tmp/dQC5taSqUd/cxxtools-1.4.3/src/dlloader.cpp /tmp/Kkq4uJnRD6/cxxtools-1.4.3.1/src/dlloader.cpp
--- /tmp/dQC5taSqUd/cxxtools-1.4.3/src/dlloader.cpp	2006-06-18 23:48:04.000000000 +0300
+++ /tmp/Kkq4uJnRD6/cxxtools-1.4.3.1/src/dlloader.cpp	2006-11-26 01:00:05.000000000 +0200
@@ -20,6 +20,7 @@
  */
 
 #include "cxxtools/dlloader.h"
+#include "cxxtools/log.h"
 #include "config.h"
 
 #ifdef USE_LIBTOOL
@@ -53,6 +54,8 @@
 
 #endif
 
+log_define("cxxtools.dlloader");
+
 namespace cxxtools
 {
 
@@ -118,14 +121,19 @@
   {
     close();
 
+    log_debug("dlinit");
     DLINIT();
 
+    log_debug("dlopen(\"" << name << "\")");
     handle = DLOPEN(name);
     if (!handle)
     {
+      log_debug("dlopen(\"" << name << "\") failed");
       DLEXIT();
       throw DlopenError(name);
     }
+
+    log_debug("dlopen => " << handle);
   }
 
   void Library::close()
@@ -134,6 +142,7 @@
     {
       if (prev == this)
       {
+        log_debug("dlclose " << handle);
         DLCLOSE(handle);
         DLEXIT();
       }
@@ -149,10 +158,15 @@
 
   Symbol Library::sym(const char* name) const
   {
+    log_debug("dlsym(" << handle << ", \"" << name << "\")");
     void* sym = DLSYM(handle, name);
     if (sym == 0)
+    {
+      log_debug("dlsym: symbol \"" << name << "\" not found");
       throw SymbolNotFound(name);
+    }
 
+    log_debug("dlsym => " << sym);
     return Symbol(*this, sym);
   }
 
diff -Nru /tmp/dQC5taSqUd/cxxtools-1.4.3/src/log.cpp /tmp/Kkq4uJnRD6/cxxtools-1.4.3.1/src/log.cpp
--- /tmp/dQC5taSqUd/cxxtools-1.4.3/src/log.cpp	2006-08-10 23:35:01.000000000 +0300
+++ /tmp/Kkq4uJnRD6/cxxtools-1.4.3.1/src/log.cpp	2006-11-26 01:00:05.000000000 +0200
@@ -35,6 +35,7 @@
 #include <sys/stat.h>
 #include <unistd.h>
 #include <stdio.h>
+#include <cctype>
 
 namespace cxxtools
 {
@@ -182,48 +183,74 @@
     loghost.connect(host.c_str(), port);
   }
 
-  typedef std::list<Logger*> loggers_type;
-  static loggers_type baseLoggers;
-  static loggers_type cacheLoggers;
   RWLock Logger::rwmutex;
   Mutex Logger::mutex;
-
   Logger::log_level_type Logger::std_level = LOG_LEVEL_ERROR;
 
-  static Logger::log_level_type getBaseLogLevel(const std::string& category)
+  namespace
   {
-    // search best-fit Logger
-    std::string::size_type best_len = 0;
-    Logger::log_level_type best_level = Logger::getStdLevel();
+    typedef std::list<Logger*> loggers_type;
 
-    for (loggers_type::iterator it = baseLoggers.begin();
-         it != baseLoggers.end(); ++it)
+    loggers_type& getBaseLoggers()
     {
-      if ((*it)->getCategory() == category)
+      static loggers_type* baseLoggers = 0;
+      if (baseLoggers == 0)
       {
-        best_level = (*it)->getLogLevel();
-        break;
+        MutexLock lock(Logger::mutex);
+        if (baseLoggers == 0)
+          baseLoggers = new loggers_type();
       }
-      else if ((*it)->getCategory().size() > best_len
-        && (*it)->getCategory().size() < category.size()
-        && category.at((*it)->getCategory().size()) == '.'
-        && category.compare(0, (*it)->getCategory().size(), (*it)->getCategory()) == 0)
+      return *baseLoggers;
+    }
+
+    loggers_type& getCacheLoggers()
+    {
+      static loggers_type* cacheLoggers = 0;
+      if (cacheLoggers == 0)
       {
-        best_len = (*it)->getCategory().size();
-        // update log-level
-        best_level = (*it)->getLogLevel();
+        MutexLock lock(Logger::mutex);
+        if (cacheLoggers == 0)
+          cacheLoggers = new loggers_type();
       }
+      return *cacheLoggers;
     }
 
-    return best_level;
-  }
+    Logger::log_level_type getBaseLogLevel(const std::string& category)
+    {
+      // search best-fit Logger
+      std::string::size_type best_len = 0;
+      Logger::log_level_type best_level = Logger::getStdLevel();
+
+      loggers_type& baseLoggers = getBaseLoggers();
+      for (loggers_type::iterator it = baseLoggers.begin();
+           it != baseLoggers.end(); ++it)
+      {
+        if ((*it)->getCategory() == category)
+        {
+          best_level = (*it)->getLogLevel();
+          break;
+        }
+        else if ((*it)->getCategory().size() > best_len
+          && (*it)->getCategory().size() < category.size()
+          && category.at((*it)->getCategory().size()) == '.'
+          && category.compare(0, (*it)->getCategory().size(), (*it)->getCategory()) == 0)
+        {
+          best_len = (*it)->getCategory().size();
+          // update log-level
+          best_level = (*it)->getLogLevel();
+        }
+      }
 
-  static void reinitializeLoggers()
-  {
-    // reinitialize already instantiated loggers
-    for (loggers_type::iterator it = cacheLoggers.begin();
-         it != cacheLoggers.end(); ++it)
-      (*it)->setLogLevel(getBaseLogLevel((*it)->getCategory()));
+      return best_level;
+    }
+
+    void reinitializeLoggers()
+    {
+      // reinitialize already instantiated loggers
+      for (loggers_type::iterator it = getCacheLoggers().begin();
+           it != getCacheLoggers().end(); ++it)
+        (*it)->setLogLevel(getBaseLogLevel((*it)->getCategory()));
+    }
   }
 
   Logger* Logger::getLogger(const std::string& category)
@@ -231,12 +258,12 @@
     // search existing Logger
     RdLock rdLock(rwmutex);
 
-    loggers_type::iterator lower_bound_it = cacheLoggers.begin();
-    while (lower_bound_it != cacheLoggers.end()
+    loggers_type::iterator lower_bound_it = getCacheLoggers().begin();
+    while (lower_bound_it != getCacheLoggers().end()
         && (*lower_bound_it)->getCategory() < category)
       ++lower_bound_it;
 
-    if (lower_bound_it != cacheLoggers.end()
+    if (lower_bound_it != getCacheLoggers().end()
      && (*lower_bound_it)->getCategory() == category)
         return *lower_bound_it;
 
@@ -245,12 +272,12 @@
     WrLock wrLock(rwmutex);
 
     // we have to do it again after gaining write-lock
-    lower_bound_it = cacheLoggers.begin();
-    while (lower_bound_it != cacheLoggers.end()
+    lower_bound_it = getCacheLoggers().begin();
+    while (lower_bound_it != getCacheLoggers().end()
         && (*lower_bound_it)->getCategory() < category)
       ++lower_bound_it;
 
-    if (lower_bound_it != cacheLoggers.end()
+    if (lower_bound_it != getCacheLoggers().end()
      && (*lower_bound_it)->getCategory() == category)
         return *lower_bound_it;
 
@@ -259,7 +286,7 @@
     log_level_type base_level = getBaseLogLevel(category);
 
     // insert the new Logger in list and return pointer to the new list-element
-    return *(cacheLoggers.insert(lower_bound_it, new LoggerImpl(category, base_level)));
+    return *(getCacheLoggers().insert(lower_bound_it, new LoggerImpl(category, base_level)));
   }
 
   Logger* Logger::setLevel(const std::string& category, log_level_type l)
@@ -267,6 +294,7 @@
     WrLock lock(rwmutex);
 
     // search for existing Logger
+    loggers_type& baseLoggers = getBaseLoggers();
     loggers_type::iterator it = baseLoggers.begin();
     while (it != baseLoggers.end()
         && (*it)->getCategory() < category)
@@ -301,7 +329,7 @@
     gettimeofday(&t, 0);
 
     // format date only once per second:
-    static char date[20];
+    static char date[21];
     static time_t psec = 0;
     time_t sec = static_cast<time_t>(t.tv_sec);
     if (sec != psec)
@@ -437,7 +465,7 @@
 void log_init_cxxtools(const std::string& propertyfilename)
 {
   cxxtools::Logger::setRootLevel(cxxtools::Logger::LOG_LEVEL_ERROR);
-  cxxtools::baseLoggers.clear();
+  cxxtools::getBaseLoggers().clear();
 
   std::ifstream in(propertyfilename.c_str());
 
diff -Nru /tmp/dQC5taSqUd/cxxtools-1.4.3/src/tcpstream.cpp /tmp/Kkq4uJnRD6/cxxtools-1.4.3.1/src/tcpstream.cpp
--- /tmp/dQC5taSqUd/cxxtools-1.4.3/src/tcpstream.cpp	2006-06-18 23:48:04.000000000 +0300
+++ /tmp/Kkq4uJnRD6/cxxtools-1.4.3.1/src/tcpstream.cpp	2006-11-26 01:00:05.000000000 +0200
@@ -192,7 +192,7 @@
 
     }
 
-    return n;
+    return n < 0 ? 0 : n;
   }
 
   Stream::size_type Stream::write(const char* buffer,
@@ -262,7 +262,7 @@
     setp(m_buffer, m_buffer + m_bufsize);
     if (c != traits_type::eof())
     {
-      *pptr() = (char_type)c;
+      *pptr() = traits_type::to_char_type(c);
       pbump(1);
     }
 
@@ -278,7 +278,7 @@
       return traits_type::eof();
 
     setg(m_buffer, m_buffer, m_buffer + n);
-    return (int_type)(unsigned char)m_buffer[0];
+    return traits_type::to_int_type(m_buffer[0]);
   }
 
   int streambuf::sync()

Attachment: signature.asc
Description: Digital signature


Reply to: