summaryrefslogtreecommitdiffstats
path: root/kdecore
diff options
context:
space:
mode:
authortpearson <tpearson@283d02a7-25f6-0310-bc7c-ecb5cbfe19da>2011-01-26 22:23:30 +0000
committertpearson <tpearson@283d02a7-25f6-0310-bc7c-ecb5cbfe19da>2011-01-26 22:23:30 +0000
commit946bde4a62fa9c4c47315defb2e31cf54d821246 (patch)
tree4c8722f3db4e1cc5800519d00ccd30c60c50dd3d /kdecore
parenta20928b6bfae18a41bb42b85e10f73fb63548ccc (diff)
downloadtdelibs-946bde4a62fa9c4c47315defb2e31cf54d821246.tar.gz
tdelibs-946bde4a62fa9c4c47315defb2e31cf54d821246.zip
Patch a few buffer overrun problems and odd crash potentials
git-svn-id: svn://anonsvn.kde.org/home/kde/branches/trinity/kdelibs@1217371 283d02a7-25f6-0310-bc7c-ecb5cbfe19da
Diffstat (limited to 'kdecore')
-rw-r--r--kdecore/kapplication.cpp2
-rw-r--r--kdecore/kconfig_compiler/kconfig_compiler.cpp2
-rw-r--r--kdecore/ksycoca.cpp18
-rw-r--r--kdecore/ksycoca.h1
-rw-r--r--kdecore/kurl.cpp2
5 files changed, 14 insertions, 11 deletions
diff --git a/kdecore/kapplication.cpp b/kdecore/kapplication.cpp
index 07260813c..3b6b78367 100644
--- a/kdecore/kapplication.cpp
+++ b/kdecore/kapplication.cpp
@@ -617,7 +617,7 @@ KApplication::KApplication( int& argc, char** argv, const TQCString& rAppName,
KApplication::KApplication( bool allowStyles, bool GUIenabled ) :
TQApplication( *KCmdLineArgs::qt_argc(), *KCmdLineArgs::qt_argv(),
- GUIenabled ),
+ TRUE ), // Qt4 requires that there always be a GUI
KInstance( KCmdLineArgs::about),
#ifdef Q_WS_X11
display(0L),
diff --git a/kdecore/kconfig_compiler/kconfig_compiler.cpp b/kdecore/kconfig_compiler/kconfig_compiler.cpp
index 1b1d82860..434208b70 100644
--- a/kdecore/kconfig_compiler/kconfig_compiler.cpp
+++ b/kdecore/kconfig_compiler/kconfig_compiler.cpp
@@ -933,7 +933,7 @@ TQString itemAccessorBody( CfgEntry *e )
//indents text adding X spaces per line
TQString indent(TQString text, int spaces)
-{
+{
TQString result;
TQTextStream out(&result, IO_WriteOnly);
TQTextStream in(&text, IO_ReadOnly);
diff --git a/kdecore/ksycoca.cpp b/kdecore/ksycoca.cpp
index f6b9ffa6a..255763ef0 100644
--- a/kdecore/ksycoca.cpp
+++ b/kdecore/ksycoca.cpp
@@ -87,7 +87,7 @@ int KSycoca::version()
// Read-only constructor
KSycoca::KSycoca()
- : DCOPObject("ksycoca"), m_lstFactories(0), m_str(0), bNoDatabase(false),
+ : DCOPObject("ksycoca"), m_lstFactories(0), m_str(0), m_barray(0), bNoDatabase(false),
m_sycoca_size(0), m_sycoca_mmap(0), m_timeStamp(0)
{
d = new KSycocaPrivate;
@@ -110,6 +110,7 @@ bool KSycoca::openDatabase( bool openDummyIfNotFound )
m_sycoca_mmap = 0;
m_str = 0;
+ m_barray = 0;
TQString path;
TQCString ksycoca_env = getenv("KDESYCOCA");
if (ksycoca_env.isEmpty())
@@ -154,9 +155,9 @@ bool KSycoca::openDatabase( bool openDummyIfNotFound )
#ifdef HAVE_MADVISE
(void) madvise((char*)m_sycoca_mmap, m_sycoca_size, MADV_WILLNEED);
#endif
- TQByteArray b_array;
- b_array.setRawData(m_sycoca_mmap, m_sycoca_size);
- TQBuffer *buffer = new TQBuffer( b_array );
+ m_barray = new TQByteArray();
+ m_barray->setRawData(m_sycoca_mmap, m_sycoca_size);
+ TQBuffer *buffer = new TQBuffer( *m_barray );
buffer->open(IO_ReadWrite);
m_str = new TQDataStream( buffer);
}
@@ -195,7 +196,7 @@ bool KSycoca::openDatabase( bool openDummyIfNotFound )
// Read-write constructor - only for KBuildSycoca
KSycoca::KSycoca( bool /* dummy */ )
- : DCOPObject("ksycoca_building"), m_lstFactories(0), m_str(0), bNoDatabase(false),
+ : DCOPObject("ksycoca_building"), m_lstFactories(0), m_str(0), m_barray(0), bNoDatabase(false),
m_sycoca_size(0), m_sycoca_mmap(0)
{
d = new KSycocaPrivate;
@@ -226,13 +227,13 @@ KSycoca::~KSycoca()
void KSycoca::closeDatabase()
{
- TQIODevice *device = 0;
+ QIODevice *device = 0;
if (m_str)
- device = m_str->tqdevice();
+ device = m_str->device();
#ifdef HAVE_MMAP
if (device && m_sycoca_mmap)
{
- TQBuffer *buf = (TQBuffer *) device;
+ TQBuffer *buf = static_cast<TQBuffer*>(device);
buf->buffer().resetRawData(m_sycoca_mmap, m_sycoca_size);
// Solaris has munmap(char*, size_t) and everything else should
// be happy with a char* for munmap(void*, size_t)
@@ -246,6 +247,7 @@ void KSycoca::closeDatabase()
delete device;
if (TQT_TQIODEVICE(d->database) != device)
delete d->database;
+ if (m_barray) delete m_barray;
device = 0;
d->database = 0;
// It is very important to delete all factories here
diff --git a/kdecore/ksycoca.h b/kdecore/ksycoca.h
index 6b8fcd0f3..52e712989 100644
--- a/kdecore/ksycoca.h
+++ b/kdecore/ksycoca.h
@@ -169,6 +169,7 @@ protected:
void closeDatabase();
KSycocaFactoryList *m_lstFactories;
TQDataStream *m_str;
+ TQByteArray *m_barray;
bool bNoDatabase;
size_t m_sycoca_size;
const char *m_sycoca_mmap;
diff --git a/kdecore/kurl.cpp b/kdecore/kurl.cpp
index 047f18dee..428ab2f20 100644
--- a/kdecore/kurl.cpp
+++ b/kdecore/kurl.cpp
@@ -83,7 +83,7 @@ static TQString encode( const TQString& segment, int encoding_offset, int encodi
int old_length = isRawURI ? local.size() - 1 : local.length();
- if ( !old_length )
+ if ( old_length < 1 )
return segment.isNull() ? TQString::null : TQString(""); // differentiate null and empty
// a worst case approximation