logging-log4cxx-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Venkatraju <venkatr...@gmail.com>
Subject Problem printing string with embedded NULL character
Date Sun, 30 Jul 2006 02:29:50 GMT
Hi,

Printing a string with embedded NULL character causes
MbstowcsCharsetDecoder::decode to go into an infinite loop trying to
consume that character.

Test case below:
------
#include <iostream>
#include <log4cxx/basicconfigurator.h>

using namespace log4cxx;

int main() {
    BasicConfigurator::configure();
    std::string badStr;

    badStr.append("hello");
    badStr.append(1, '\0');
    badStr.append("world");
    LOG4CXX_ERROR(Logger::getRootLogger(), badStr);

    return 0;
}
---------

Fixed with this patch:
---
Index: src/charsetdecoder.cpp
===================================================================
--- src/charsetdecoder.cpp      (revision 390980)
+++ src/charsetdecoder.cpp      (working copy)
@@ -178,6 +178,12 @@
                          stat = append(out, buf);
                          in.position(in.position() + converted);
                       }
+
+                      if (in.remaining() > 0 && (src == 0)) {
+                          // Found embedded NULL in string
+                          stat = APR_BADARG;
+                          break;
+                      }
                   }
                   return stat;
               }
----

Can someone merge this into the log4cxx trunk? Please let me know if I
need to provide more info.

Thanks,
Venkat

Mime
View raw message