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

Bug#693216: pu: firebird2.5/2.5.2.26539.ds4-1



-=| Julien Cristau, 23.04.2013 20:53:08 +0200 |=-
> On Tue, Apr 23, 2013 at 15:39:28 +0300, Damyan Ivanov wrote:
> > So does the following sound like a good plan:
> > 
> >  1. Wait for wheezy release
> >  2. Upload to unstable
> >  3. Wait some time (a week? a month? migration to testing?)
> >  4. (if no showstoppers emerge) Ping this bug and ask for a stable
> >      update
> > 
> I'm not sure 1 is necessary, but the rest seems fine.

This all happened, and firebird2.5 version 2.5.2.26540.ds4-1 had 20 
days in unstable without new bugs. It migrated to testing after 
a giveback on sparc (first attempt crashed the compiler). Perhaps it 
is time to consider it for 7.0.1?

The full source and binary diffs are attached for reference.

Here's the changelog since wheezy proper

--------------8<--------------8<---------------
 firebird2.5 (2.5.2.26540.ds4-1) unstable; urgency=low
 .
   * Official 2.5.2 release
     + CORE-3912: segfault in superclassic (Closes: #693192)
     + Restored the on-disk-structure compatibility with 2.5.1 index keys
       (Closes: #693193)
     + Fixed broken (working as no-op) sweep in SuperServer (Closes: #693195)
     + CORE-3902: Derived fields may not be optimized via an index
       (Closes: #693196)
     + CORE-3895: High memory usage when PSQL code SELECT's from stored
       procedure which modified some data (Closes: #693202)
     + CORE-3238: GEN_UUID returns a non-RFC-4122-compliant UUID
       (Closes: #693207)
     + CORE-3887: CHAR_TO_UUID and UUID_TO_CHAR works different in big endian
       architectures (Closes: #693209)
     + Enabled per-table runtime stats for sweeper
     + Changes not concerning Debian
       - CORE-3786: Hangs on MacOSX 10.7 (Lion) on DB create after reboot
       - CORE-3911: API entrypoints Bopen and BLOB_open are not visible on Darwin
       - CORE-3740: SELECT using IN list with >413 elements causes crash on Mac
         (stack overflow with default stack size)
       - CORE-3740: optimisation bug in GCC on Darwin
 .
   * Update debian/copyright (two new files, no licensing changes)
   * Add NEWS.Debian about incompatible fix in char↔UUID conversion functions
 .
   * drop patches included in the upstream release:
     + upstream/r54702-cve-2012-5529.patch
     + upstream/r57728-cve-2013-2429.patch
   * refresh separate-file-and-sem-perms.patch to apply cleanly
 .
   * Patches taken from upstream SVN
     + r57516r57773-gbak-y-redirection.patch
       make gbak -y work with redirection again (regression from 2.5.1)
       http://tracker.firebirdsql.org/browse/CORE-3995
     + r57707r57710-lots-autonomous-trx-leaks-crash.patch
       fix engine crash/memory leak with many autonomous transactions (remote
       crash/memory leak)
       http://tracker.firebirdsql.org/browse/CORE-3908
     + r57349-bad-trn-num-logged-during-sweep.patch
       fix invalid transaction counters logged during sweep (trivial fix)
       http://tracker.firebirdsql.org/browse/CORE-3978
     + r57714r57716-fix-isql-edit-command.patch
       fix isql's edit command broken in 2.5.2 (regression from 2.5.1)
       http://tracker.firebirdsql.org/browse/CORE-3990
     + r58004-crash-converting-overscaled-numeric-to-string.patch
       fix engine crash while converting an overscaled numeric to a string
       (remote crash)
       http://tracker.firebirdsql.org/browse/CORE-4093
     + r57795-crash-storing-long-incompressible-data.patch
       fix bugcheck/corruption when storing long uncompressible data (possible
       db corruption)
       http://tracker.firebirdsql.org/browse/CORE-4036
   * add out/crash-create-db-restricted.patch
     fixes a server crash when attempting creation of a database outside of
     allowed paths with firebrd.xonf setting of 'DatabaseAccess' other than
     'Full'
--------------8<--------------8<---------------

All of the patches under "taken from upstream" are either regressions 
in the official 2.5.2 upstream release, fixed in upstream Svn, or 
fixes to crashes/possible db corruption also present in the current 
wheezy package.

The last patch, out/crash-create-db-restricted.patch is for a crash 
that is claimed fixed in upstream Svn, but the actual commit is 
missing. I have produced it by looking at the surrounding code. 
Upstream bug is at http://tracker.firebirdsql.org/browse/CORE-3996

Thanks for your time,
    dam
diff --git a/debian/NEWS b/debian/NEWS
new file mode 100644
index 0000000..2d884bb
--- /dev/null
+++ b/debian/NEWS
@@ -0,0 +1,16 @@
+firebird2.5 (2.5.2.26540.ds4-1) unstable; urgency=low
+
+  Important for big-endian server installations:
+
+  It has been discovered that before Firebird 2.5.2 (as packaged in debian
+  package version 2.5.2.26539.ds4-1), CHAR_TO_UUID and UUID_TO_CHAR
+  built-in functions work incorrectly on big-endian servers. On such machines,
+  bytes/characters are swapped and go in wrong positions when converting. The
+  bug is fixed in this release, but that means these functions now return
+  different values than before for the same input parameter.
+
+  Additionally, the CHAR_TO_UUID2/UUID_TO_CHAR2 functions that were added as
+  fixed variants of the buggy functions in the 2.5.2 development cycle are
+  dropped in this release.
+
+ -- Damyan Ivanov <dmn@debian.org>  Wed, 07 Nov 2012 17:52:10 +0200
diff --git a/debian/changelog b/debian/changelog
index d46c066..eb0b227 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,63 @@
+firebird2.5 (2.5.2.26540.ds4-1) unstable; urgency=low
+
+  * Official 2.5.2 release
+    + CORE-3912: segfault in superclassic (Closes: #693192)
+    + Restored the on-disk-structure compatibility with 2.5.1 index keys
+      (Closes: #693193)
+    + Fixed broken (working as no-op) sweep in SuperServer (Closes: #693195)
+    + CORE-3902: Derived fields may not be optimized via an index
+      (Closes: #693196)
+    + CORE-3895: High memory usage when PSQL code SELECT's from stored
+      procedure which modified some data (Closes: #693202)
+    + CORE-3238: GEN_UUID returns a non-RFC-4122-compliant UUID
+      (Closes: #693207)
+    + CORE-3887: CHAR_TO_UUID and UUID_TO_CHAR works different in big endian
+      architectures (Closes: #693209)
+    + Enabled per-table runtime stats for sweeper
+    + Changes not concerning Debian
+      - CORE-3786: Hangs on MacOSX 10.7 (Lion) on DB create after reboot
+      - CORE-3911: API entrypoints Bopen and BLOB_open are not visible on Darwin
+      - CORE-3740: SELECT using IN list with >413 elements causes crash on Mac
+        (stack overflow with default stack size)
+      - CORE-3740: optimisation bug in GCC on Darwin
+
+  * Update debian/copyright (two new files, no licensing changes)
+  * Add NEWS.Debian about incompatible fix in char↔UUID conversion functions
+
+  * drop patches included in the upstream release:
+    + upstream/r54702-cve-2012-5529.patch
+    + upstream/r57728-cve-2013-2429.patch
+  * refresh separate-file-and-sem-perms.patch to apply cleanly
+
+  * Patches taken from upstream SVN
+    + r57516r57773-gbak-y-redirection.patch
+      make gbak -y work with redirection again (regression from 2.5.1)
+      http://tracker.firebirdsql.org/browse/CORE-3995
+    + r57707r57710-lots-autonomous-trx-leaks-crash.patch
+      fix engine crash/memory leak with many autonomous transactions (remote
+      crash/memory leak)
+      http://tracker.firebirdsql.org/browse/CORE-3908
+    + r57349-bad-trn-num-logged-during-sweep.patch
+      fix invalid transaction counters logged during sweep (trivial fix)
+      http://tracker.firebirdsql.org/browse/CORE-3978
+    + r57714r57716-fix-isql-edit-command.patch
+      fix isql's edit command broken in 2.5.2 (regression from 2.5.1)
+      http://tracker.firebirdsql.org/browse/CORE-3990
+    + r58004-crash-converting-overscaled-numeric-to-string.patch
+      fix engine crash while converting an overscaled numeric to a string
+      (remote crash)
+      http://tracker.firebirdsql.org/browse/CORE-4093
+    + r57795-crash-storing-long-incompressible-data.patch
+      fix bugcheck/corruption when storing long uncompressible data (possible
+      db corruption)
+      http://tracker.firebirdsql.org/browse/CORE-4036
+  * add out/crash-create-db-restricted.patch
+    fixes a server crash when attempting creation of a database outside of
+    allowed paths with firebrd.xonf setting of 'DatabaseAccess' other than
+    'Full'
+
+ -- Damyan Ivanov <dmn@debian.org>  Thu, 09 May 2013 16:39:17 +0300
+
 firebird2.5 (2.5.2~svn+54698.ds4-3) unstable; urgency=high
 
   * Recover lost doc/libfbclient2 -> firebird2.5-common-doc symlink
@@ -18,7 +78,7 @@ firebird2.5 (2.5.2~svn+54698.ds4-3) unstable; urgency=high
     gives dpkg way to unpack the shipped symlink.
 
     Closes: #692948 -- missing copyright file after upgrade from lenny to
-    squeeze to wheezy/sid
+    squeeze to wheezy/sid.
 
     Thanks go to Andreas Beckmann for reporting the issue, Julian Taylor,
     Slávek Banko and Serafeim Zanikolas for helping with the implementation.
diff --git a/debian/copyright b/debian/copyright
index 73b9eea..a5613c3 100644
--- a/debian/copyright
+++ b/debian/copyright
@@ -1440,9 +1440,13 @@ src/jrd/tra.cpp
 src/lock/lock.cpp
 src/lock/lock.h
 	Contributor(s): Nickolay Samofatov, Sean Leyne
+builds/posix/firebird.darwin.vers
 builds/posix/firebird.hpux.vers
 builds/posix/firebird.vers
-	Created from fbclient.def by Nickolay Samofatov
+        Created from fbclient.def by Nickolay Samofatov
+builds/posix/empty.darwin.vers
+        Created from fbclient.def by Nickolay Samofatov
+        Contributors: Alex Peshkov, Paul Beach
 builds/posix/postfix.darwin
 builds/posix/prefix.darwin_i386
 builds/posix/prefix.darwin_powerpc
diff --git a/debian/patches/out/crash-create-db-restricted.patch b/debian/patches/out/crash-create-db-restricted.patch
new file mode 100644
index 0000000..5086eea
--- /dev/null
+++ b/debian/patches/out/crash-create-db-restricted.patch
@@ -0,0 +1,16 @@
+Description: fix a crash when creating a database outside of allowed paths
+ firebird.conf/DatabaseAccess must be 'None' or 'Restricted'
+Author: Damyan Ivanov <dmn@debian.org>
+Bug: http://tracker.firebirdsql.org/browse/CORE-3996
+
+--- a/src/jrd/jrd.cpp
++++ b/src/jrd/jrd.cpp
+@@ -1985,7 +1985,7 @@ ISC_STATUS GDS_CREATE_DATABASE(ISC_STATU
+ 	const VdnResult vdn = verifyDatabaseName(expanded_name, user_status, is_alias);
+ 	if (!is_alias && vdn == VDN_FAIL)
+ 	{
+-		trace_failed_attach(NULL, filename, options, true, false);
++		trace_failed_attach(NULL, filename, options, true, user_status);
+ 		return user_status[1];
+ 	}
+ 
diff --git a/debian/patches/separate-file-and-sem-perms.patch b/debian/patches/separate-file-and-sem-perms.patch
index d719e6e..49ff6fb 100644
--- a/debian/patches/separate-file-and-sem-perms.patch
+++ b/debian/patches/separate-file-and-sem-perms.patch
@@ -24,7 +24,7 @@
  
  //#ifndef SHMEM_DELTA
  //#define SHMEM_DELTA	(1 << 22)
-@@ -3716,7 +3727,7 @@ static SLONG create_semaphores(ISC_STATU
+@@ -4271,7 +4282,7 @@ static SLONG create_semaphores(ISC_STATU
  		}
  
  		// Try to create new semaphore set
diff --git a/debian/patches/series b/debian/patches/series
index 0e1d97f..d6d09da 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -1,3 +1,9 @@
+upstream/r57349-bad-trn-num-logged-during-sweep.patch
+upstream/r57707r57710-lots-autonomous-trx-leaks-crash.patch
+upstream/r57714r57716-fix-isql-edit-command.patch
+upstream/r57516r57773-gbak-y-redirection.patch
+upstream/r57795-crash-storing-long-incompressible-data.patch
+upstream/r58004-crash-converting-overscaled-numeric-to-string.patch
 out/hardening.patch
 out/honour-buildflags.patch
 trim-cflags.patch
@@ -10,5 +16,4 @@ no-spurious-linkage.patch
 parallel-build.patch
 versioned-log-filename.patch
 link_atomic_ops.patch
-upstream/r54702-cve-2012-5529.patch
-upstream/r57728-cve-2013-2429.patch
+out/crash-create-db-restricted.patch
diff --git a/debian/patches/upstream/r54702-cve-2012-5529.patch b/debian/patches/upstream/r54702-cve-2012-5529.patch
deleted file mode 100644
index 944856d..0000000
--- a/debian/patches/upstream/r54702-cve-2012-5529.patch
+++ /dev/null
@@ -1,20 +0,0 @@
-Description: fix crash when preparing empty SQL statement with tracing enabled
- Stolen from revision 54702 of upstream Subversion repository
-Origin: http://firebird.svn.sourceforge.net/viewvc/firebird/firebird/branches/B2_5_Release/src/jrd/trace/TraceDSQLHelpers.h?r1=54702&r2=54701&pathrev=54702
-Bug: http://tracker.firebirdsql.org/browse/CORE-3884
-Bug-Debian: http://bugs.debian.org/693210
-Forwarded: not-needed
-Author: Vlad Khorsun <hvlad@sourceforge.net>
-Applied-Upstream: 2.5.2
-
---- a/src/jrd/trace/TraceDSQLHelpers.h
-+++ b/src/jrd/trace/TraceDSQLHelpers.h
-@@ -88,7 +88,7 @@ public:
- 			Firebird::string str(*getDefaultMemoryPool(), m_string, m_string_len);
- 
- 			TraceFailedSQLStatement stmt(str);
--			TraceManager::event_dsql_prepare(m_attachment, m_request->req_transaction,
-+			TraceManager::event_dsql_prepare(m_attachment, m_request ? m_request->req_transaction : NULL,
- 				&stmt, millis, result);
- 		}
- 	}
diff --git a/debian/patches/upstream/r57349-bad-trn-num-logged-during-sweep.patch b/debian/patches/upstream/r57349-bad-trn-num-logged-during-sweep.patch
new file mode 100644
index 0000000..2342101
--- /dev/null
+++ b/debian/patches/upstream/r57349-bad-trn-num-logged-during-sweep.patch
@@ -0,0 +1,24 @@
+Description: Fix invalid transaction counters reported in firebird.log during
+ sweep
+Bug: http://tracker.firebirdsql.org/browse/CORE-3978
+Origin: upstream, http://sourceforge.net/p/firebird/code/57349/
+--- a/src/jrd/tra.cpp
++++ b/src/jrd/tra.cpp
+@@ -3649,7 +3649,7 @@ TraceSweepEvent::TraceSweepEvent(thread_
+ 
+ 	gds__log("Sweep is started by %s\n"
+ 		"\tDatabase \"%s\" \n"
+-		"\tOIT %ld, OAT %ld, OST %ld, Next %ld",
++		"\tOIT %"SLONGFORMAT", OAT %"SLONGFORMAT", OST %"SLONGFORMAT", Next %"SLONGFORMAT,
+ 		att->att_user->usr_user_name.c_str(),
+ 		att->att_filename.c_str(),
+ 		m_sweep_info.getOIT(),
+@@ -3736,7 +3736,7 @@ void TraceSweepEvent::report(ntrace_proc
+ 	{
+ 		gds__log("Sweep is finished\n"
+ 			"\tDatabase \"%s\" \n"
+-			"\tOIT %ld, OAT %ld, OST %ld, Next %ld",
++			"\tOIT %"SLONGFORMAT", OAT %"SLONGFORMAT", OST %"SLONGFORMAT", Next %"SLONGFORMAT,
+ 			att->att_filename.c_str(),
+ 			m_sweep_info.getOIT(),
+ 			m_sweep_info.getOAT(),
diff --git a/debian/patches/upstream/r57516r57773-gbak-y-redirection.patch b/debian/patches/upstream/r57516r57773-gbak-y-redirection.patch
new file mode 100644
index 0000000..e07bf63
--- /dev/null
+++ b/debian/patches/upstream/r57516r57773-gbak-y-redirection.patch
@@ -0,0 +1,35 @@
+Description: fix gbak -y switch with output redirection
+ 'gbak -b -y file db stdout | gzip > backup.gz' was broken in 2.5.2
+ (works fine in 2.5.1)
+Bug: http://tracker.firebirdsql.org/browse/CORE-3995
+Origin: upstream, http://sourceforge.net/p/firebird/code/57516/
+Origin: upstream, http://sourceforge.net/p/firebird/code/57773/
+
+--- a/src/burp/burp.cpp
++++ b/src/burp/burp.cpp
+@@ -1192,9 +1192,12 @@ void BURP_abort()
+  **************************************/
+ 	BurpGlobals* tdgbl = BurpGlobals::getSpecific();
+ 
+-	BURP_print(true, tdgbl->action && tdgbl->action->act_action == ACT_backup_fini ? 351 : 83);
+-	// msg 351 Error closing database, but backup file is OK
+-	// msg 83 Exiting before completion due to errors
++	if (!tdgbl->uSvc->isService())
++	{
++		BURP_print(true, tdgbl->action && tdgbl->action->act_action == ACT_backup_fini ? 351 : 83);
++		// msg 351 Error closing database, but backup file is OK
++		// msg 83 Exiting before completion due to errors
++	}
+ 
+ 	tdgbl->uSvc->started();
+ 
+@@ -1687,7 +1690,8 @@ static gbak_action open_files(const TEXT
+ 			}
+ 			if (fil->fil_name == "stdout")
+ 			{
+-				if (tdgbl->action->act_total >= 2 || fil->fil_next || sw_verbose)
++				if (tdgbl->action->act_total >= 2 || fil->fil_next ||
++					(sw_verbose && tdgbl->sw_redirect == NOREDIRECT && tdgbl->uSvc->isService()))
+ 				{
+ 					BURP_error(266, true);
+ 					// msg 266 standard output is not supported when using split operation or in verbose mode
diff --git a/debian/patches/upstream/r57707r57710-lots-autonomous-trx-leaks-crash.patch b/debian/patches/upstream/r57707r57710-lots-autonomous-trx-leaks-crash.patch
new file mode 100644
index 0000000..5b11997
--- /dev/null
+++ b/debian/patches/upstream/r57707r57710-lots-autonomous-trx-leaks-crash.patch
@@ -0,0 +1,296 @@
+Description: fix engine leaks/crashes when lot of autonomous transactions have
+ been started and finished
+Bug: http://tracker.firebirdsql.org/browse/CORE-3908
+Origin: upstream, http://sourceforge.net/p/firebird/code/57707/
+Origin: upstream, http://sourceforge.net/p/firebird/code/57710/
+--- a/src/jrd/tra.cpp
++++ b/src/jrd/tra.cpp
+@@ -1608,7 +1608,7 @@ jrd_tra* TRA_start(thread_db* tdbb, ULON
+ 	// To handle the problems of relation locks, allocate a temporary
+ 	// transaction block first, seize relation locks, then go ahead and
+ 	// make up the real transaction block.
+-	MemoryPool* const pool = outer ? outer->tra_pool : dbb->createPool();
++	MemoryPool* const pool = outer ? outer->getAutonomousPool() : dbb->createPool();
+ 	Jrd::ContextPoolHolder context(tdbb, pool);
+ 	jrd_tra* const temp = jrd_tra::create(pool, attachment, outer);
+ 
+@@ -1663,7 +1663,7 @@ jrd_tra* TRA_start(thread_db* tdbb, int
+ 	// To handle the problems of relation locks, allocate a temporary
+ 	// transaction block first, seize relation locks, then go ahead and
+ 	// make up the real transaction block.
+-	MemoryPool* const pool = outer ? outer->tra_pool : dbb->createPool();
++	MemoryPool* const pool = outer ? outer->getAutonomousPool() : dbb->createPool();
+ 	Jrd::ContextPoolHolder context(tdbb, pool);
+ 	jrd_tra* const temp = jrd_tra::create(pool, attachment, outer);
+ 
+@@ -3617,8 +3617,17 @@ jrd_tra::~jrd_tra()
+ 	{
+ 		delete tra_blob_space;
+ 	}
++	else
++	{
++		fb_assert(!tra_arrays);
++	}
+ 
+ 	DFW_delete_deferred(this, -1);
++
++	if (tra_autonomous_pool)
++	{
++		MemoryPool::deletePool(tra_autonomous_pool);
++	}
+ }
+ 
+ 
+@@ -3632,6 +3641,49 @@ UserManagement* jrd_tra::getUserManageme
+ }
+ 
+ 
++jrd_tra* jrd_tra::getOuter()
++{
++	jrd_tra* tra = this;
++
++	while (tra->tra_outer)
++	{
++		tra = tra->tra_outer;
++	}
++
++	return tra;
++}
++
++
++MemoryPool* jrd_tra::getAutonomousPool()
++{
++	if (!tra_autonomous_pool)
++	{
++		MemoryPool* pool = tra_pool;
++		jrd_tra* outer = tra_outer;
++		while (outer)
++		{
++			pool = outer->tra_pool;
++			outer = outer->tra_outer;
++		}
++		tra_autonomous_pool = MemoryPool::createPool(pool, tra_memory_stats);
++		tra_autonomous_cnt = 0;
++	}
++
++	return tra_autonomous_pool;
++}
++
++
++void jrd_tra::releaseAutonomousPool(MemoryPool* toRelease)
++{
++	fb_assert(tra_autonomous_pool == toRelease);
++	if (++tra_autonomous_cnt > TRA_AUTONOMOUS_PER_POOL)
++	{
++		MemoryPool::deletePool(tra_autonomous_pool);
++		tra_autonomous_pool = NULL;
++	}
++}
++
++
+ /// class TraceSweepEvent
+ 
+ TraceSweepEvent::TraceSweepEvent(thread_db* tdbb) :
+--- a/src/jrd/tra.h
++++ b/src/jrd/tra.h
+@@ -115,7 +115,8 @@ public:
+ 		tra_pool(p),
+ 		tra_memory_stats(parent_stats),
+ 		tra_blobs_tree(p),
+-		tra_blobs(&tra_blobs_tree),
++		tra_blobs(outer ? outer->tra_blobs : &tra_blobs_tree),
++		tra_arrays(NULL),
+ 		tra_deferred_job(NULL),
+ 		tra_resources(*p),
+ 		tra_context_vars(*p),
+@@ -129,15 +130,10 @@ public:
+ 		tra_blob_space(NULL),
+ 		tra_undo_space(NULL),
+ 		tra_undo_record(NULL),
+-		tra_user_management(NULL)
++		tra_user_management(NULL),
++		tra_autonomous_pool(NULL),
++		tra_autonomous_cnt(0)
+ 	{
+-		if (outer)
+-		{
+-			fb_assert(p == outer->tra_pool);
+-			tra_arrays = outer->tra_arrays;
+-			tra_blobs = outer->tra_blobs;
+-		}
+-
+ 		tra_transactions.resize(length);
+ 	}
+ 
+@@ -162,7 +158,10 @@ public:
+ 		{
+ 			if (transaction->tra_outer)
+ 			{
++				jrd_tra* outer = transaction->tra_outer;
++				MemoryPool* const pool = transaction->tra_pool;
+ 				delete transaction;
++				outer->releaseAutonomousPool(pool);
+ 			}
+ 			else
+ 			{
+@@ -224,8 +223,15 @@ private:
+ 
+ 	Record* tra_undo_record;	// temporary record used for the undo purposes
+ 	UserManagement* tra_user_management;
++	MemoryPool* tra_autonomous_pool;
++	USHORT tra_autonomous_cnt;
++	static const USHORT TRA_AUTONOMOUS_PER_POOL = 64;
+ 
+ public:
++	MemoryPool* getAutonomousPool();
++	void releaseAutonomousPool(MemoryPool* toRelease);
++	jrd_tra* getOuter();
++
+ 	SSHORT getLockWait() const
+ 	{
+ 		return -tra_lock_timeout;
+@@ -245,7 +251,10 @@ public:
+ 	TempSpace* getUndoSpace()
+ 	{
+ 		if (!tra_undo_space)
++		{
++			fb_assert(!tra_outer);
+ 			tra_undo_space = FB_NEW(*tra_pool) TempSpace(*tra_pool, TRA_UNDO_SPACE);
++		}
+ 
+ 		return tra_undo_space;
+ 	}
+--- a/src/jrd/blb.cpp
++++ b/src/jrd/blb.cpp
+@@ -268,6 +268,8 @@ blb* BLB_create2(thread_db* tdbb,
+  *      Basically BLB_create() with BPB structure.
+  *
+  **************************************/
++	transaction = transaction->getOuter();
++
+ 	SET_TDBB(tdbb);
+ 	Database* dbb = tdbb->getDatabase();
+ 	CHECK_DBB(dbb);
+@@ -282,6 +284,7 @@ blb* BLB_create2(thread_db* tdbb,
+ 						   reinterpret_cast<USHORT*>(&from_charset),	// safe - alignment not changed
+ 						   reinterpret_cast<USHORT*>(&to_charset),		// safe - alignment not changed
+ 						   NULL, NULL, NULL, NULL);
++
+ 	blb* blob = allocate_blob(tdbb, transaction);
+ 
+ 	if (type & isc_bpb_type_stream)
+@@ -541,6 +544,8 @@ blb* BLB_get_array(thread_db* tdbb, jrd_
+  *      Get array blob and array descriptor.
+  *
+  **************************************/
++	transaction = transaction->getOuter();
++
+ 	SET_TDBB(tdbb);
+ 
+ 	blb* blob = BLB_open2(tdbb, transaction, blob_id, 0, 0);
+@@ -818,6 +823,8 @@ SLONG BLB_get_slice(thread_db* tdbb,
+  *      Fetch a slice of an array.
+  *
+  **************************************/
++	transaction = transaction->getOuter();
++
+ 	SET_TDBB(tdbb);
+     //Database* database = GET_DBB();
+ 	Jrd::ContextPoolHolder context(tdbb, transaction->tra_pool);
+@@ -1069,6 +1076,7 @@ void BLB_move(thread_db* tdbb, dsc* from
+ 
+ 	CLEAR_NULL(record, id);
+ 	jrd_tra* transaction = request->req_transaction;
++	transaction = transaction->getOuter();
+ 
+ 	// If the target is a view, this must be from a view update trigger.
+ 	// Just pass the blob id thru.
+@@ -1268,6 +1276,8 @@ blb* BLB_open2(thread_db* tdbb,
+  *      Basically BLB_open() with BPB structure.
+  *
+  **************************************/
++	transaction = transaction->getOuter();
++
+ 	SET_TDBB(tdbb);
+ 	Database* dbb = tdbb->getDatabase();
+ 
+@@ -1650,6 +1660,8 @@ void BLB_put_slice(	thread_db*	tdbb,
+  *      Put a slice of an array.
+  *
+  **************************************/
++	transaction = transaction->getOuter();
++
+ 	SET_TDBB(tdbb);
+ 	Jrd::ContextPoolHolder context(tdbb, transaction->tra_pool);
+ 
+@@ -1819,6 +1831,7 @@ void BLB_scalar(thread_db*		tdbb,
+  * Functional description
+  *
+  **************************************/
++	transaction = transaction->getOuter();
+ 
+ 	SLONG stuff[IAD_LEN(16) / 4];
+ 
+@@ -1867,6 +1880,7 @@ static ArrayField* alloc_array(jrd_tra*
+  *      Allocate an array block based on a prototype array descriptor.
+  *
+  **************************************/
++	fb_assert(!transaction->tra_outer);
+ 
+ 	// Compute size and allocate block
+ 
+@@ -1904,14 +1918,11 @@ static blb* allocate_blob(thread_db* tdb
+  *      Create a shiney, new, empty blob.
+  *
+  **************************************/
++	fb_assert(!transaction->tra_outer);
+ 
+ 	SET_TDBB(tdbb);
+ 	Database* dbb = tdbb->getDatabase();
+ 
+-	// If we are in an autonomous transaction, link the blob on the transaction started by the user.
+-	while (transaction->tra_outer)
+-		transaction = transaction->tra_outer;
+-
+ 	// Create a blob large enough to hold a single data page.
+ 
+ 	blb* blob = FB_NEW(*transaction->tra_pool) blb(*transaction->tra_pool, dbb->dbb_page_size);
+@@ -1959,7 +1970,11 @@ static ISC_STATUS blob_filter(USHORT	act
+ 
+ 	thread_db* tdbb = JRD_get_thread_data();
+ 
+-	jrd_tra* const transaction = reinterpret_cast<jrd_tra*>(control->ctl_internal[1]);
++	jrd_tra* transaction = reinterpret_cast<jrd_tra*>(control->ctl_internal[1]);
++	if (transaction)
++	{
++		transaction = transaction->getOuter();
++	}
+ 	bid* blob_id = reinterpret_cast<bid*>(control->ctl_internal[2]);
+ 
+ #ifdef DEV_BUILD
+@@ -2492,6 +2507,7 @@ static void move_from_string(thread_db*
+ 
+ 	jrd_req* request = tdbb->getRequest();
+ 	jrd_tra* transaction = request ? request->req_transaction : tdbb->getTransaction();
++	transaction = transaction->getOuter();
+ 
+ 	UCharBuffer bpb;
+ 	BLB_gen_bpb_from_descs(from_desc, to_desc, bpb);
+@@ -2598,6 +2614,7 @@ static void move_to_string(thread_db* td
+ 
+ 	jrd_req* request = tdbb->getRequest();
+ 	jrd_tra* transaction = request ? request->req_transaction : tdbb->getTransaction();
++	transaction = transaction->getOuter();
+ 
+ 	UCharBuffer bpb;
+ 	BLB_gen_bpb_from_descs(fromDesc, &blobAsText, bpb);
+--- a/src/jrd/exe.cpp
++++ b/src/jrd/exe.cpp
+@@ -3255,6 +3255,7 @@ static void release_blobs(thread_db* tdb
+ 	if (transaction)
+ 	{
+ 		DEV_BLKCHK(transaction, type_tra);
++		transaction = transaction->getOuter();
+ 
+ 		/* Release blobs bound to this request */
+ 
diff --git a/debian/patches/upstream/r57714r57716-fix-isql-edit-command.patch b/debian/patches/upstream/r57714r57716-fix-isql-edit-command.patch
new file mode 100644
index 0000000..d904adc
--- /dev/null
+++ b/debian/patches/upstream/r57714r57716-fix-isql-edit-command.patch
@@ -0,0 +1,213 @@
+Description: fix broken EDIT command in isql
+Bug: http://tracker.firebirdsql.org/browse/CORE-3990
+Origin: upstream, http://sourceforge.net/p/firebird/code/57714/
+Origin: upstream, http://sourceforge.net/p/firebird/code/57716/
+--- a/src/isql/isql.epp
++++ b/src/isql/isql.epp
+@@ -4176,27 +4176,6 @@ static void do_isql()
+ 
+ 	M__trans = 0;
+ 
+-	// File used to edit sessions
+-	{ // scope
+-		const Firebird::PathName filename = TempFile::create(SCRATCH);
+-		const char* Tmpfile = filename.c_str();
+-		FILE* f = fopen(Tmpfile, "w+"); // It was w+b
+-#ifdef UNIX
+-		unlink(Tmpfile);
+-#endif
+-		if (f)
+-			Filelist->Ofp().init(f, Tmpfile);
+-		else
+-		{
+-			// If we can't open a temp file then bail
+-
+-			ISQL_msg_get(FILE_OPEN_ERR, errbuf, SafeArg() << Tmpfile);
+-			STDERROUT(errbuf);
+-			Exit_value = FINI_ERROR;
+-			return;
+-		}
+-	}
+-
+ #if defined(_MSC_VER) && _MSC_VER >= 1400
+ 	_set_output_format(_TWO_DIGIT_EXPONENT);
+ #endif
+@@ -4388,9 +4367,9 @@ static void do_isql()
+ 	gds_trans = 0;
+ 
+ 	InputDevices::indev& Ofp = Filelist->Ofp();
+-	// Should have a valid Temp file pointer
+-	fb_assert(Ofp.indev_fpointer);
+-	Ofp.drop();
++	// Does it have a valid Temp file pointer?
++	if (Ofp.indev_fpointer)
++		Ofp.drop();
+ 
+ 	if (global_sqlda)
+ 		ISQL_FREE(global_sqlda);
+@@ -4506,6 +4485,28 @@ static processing_state edit(const TEXT*
+ 		Filelist->insertIfp();
+ 		// Close the file, edit it, then reopen and read from the top
+ 		InputDevices::indev& Ofp = Filelist->Ofp();
++
++		if (!Ofp.indev_fpointer)
++		{
++			// File used to edit sessions
++			const Firebird::PathName filename = TempFile::create(SCRATCH);
++			const char* Tmpfile = filename.c_str();
++			FILE* f = fopen(Tmpfile, "w+"); // It was w+b
++			if (f)
++			{
++				Ofp.init(f, Tmpfile);
++				Filelist->commandsToFile(f);
++			}
++			else
++			{
++				// If we can't open a temp file then bail
++				TEXT errbuf[MSG_LENGTH];
++				ISQL_msg_get(FILE_OPEN_ERR, errbuf, SafeArg() << Tmpfile);
++				STDERROUT(errbuf);
++				return ps_ERR;
++			}
++		}
++
+ 		Ofp.close();
+ 		const char* Tmpfile = Ofp.fileName();
+ 		gds__edit(Tmpfile, 0);
+@@ -4647,7 +4648,8 @@ static processing_state escape(const TEX
+ 	//_flushall();
+ 	// Save Ofp position in case it's being used as input. See EDIT command.
+ 	fpos_t OfpPos = 0;
+-	Filelist->Ofp().getPos(&OfpPos);
++	if (Ofp.indev_fpointer)
++		Filelist->Ofp().getPos(&OfpPos);
+ 	fflush(NULL); // Flush only output buffers.
+ 	const char* emptyCmd = "%ComSpec%";
+ #else
+@@ -4663,7 +4665,7 @@ static processing_state escape(const TEX
+ #ifdef WIN_NT
+ 	// If we are reading from the temp file, restore the read position because
+ 	// it's opened in r+ mode in this case, that's R/W.
+-	if (Filelist->sameInputAndOutput())
++	if (Ofp.indev_fpointer && Filelist->sameInputAndOutput())
+ 		Filelist->Ofp().setPos(&OfpPos);
+ #endif
+ 
+@@ -5564,8 +5566,9 @@ static processing_state get_statement(TE
+ 
+ 			// If this is not tmpfile, close it
+ 
+-			if (!Filelist->sameInputAndOutput())
+-				Filelist->Ifp().close();
++			if (Filelist->Ofp().indev_fpointer)
++				if (!Filelist->sameInputAndOutput())
++					Filelist->Ifp().close();
+ 
+ 			// Reset to previous after other input
+ 
+--- a/src/isql/InputDevices.cpp
++++ b/src/isql/InputDevices.cpp
+@@ -226,11 +226,18 @@ void InputDevices::saveCommand(const cha
+ 	if (m_ifp.indev_fpointer == stdin)
+ 	{
+ 		FILE* f = m_ofp.indev_fpointer;
+-		fb_assert(f);
+-		fputs(statement, f);
+-		fputs(term, f);
+-		// Add newline to make the file more readable.
+-		fputc('\n', f);
++		if (f)
++		{
++			fputs(statement, f);
++			fputs(term, f);
++			// Add newline to make the file more readable.
++			fputc('\n', f);
++		}
++		else
++		{
++			Command* command = new Command(statement, term);
++			commands.add(command);
++		}
+ 	}
+ }
+ 
+@@ -249,3 +256,27 @@ void InputDevices::gotoEof()
+ 		fseek(m_ifp.indev_fpointer, 0, SEEK_END);
+ }
+ 
++InputDevices::Command::Command(const char* statement, const char* term)
++	: m_statement(getPool())
++{
++	m_statement = statement;
++	m_statement += term;
++}
++
++void InputDevices::Command::toFile(FILE* f)
++{
++	fputs(m_statement.c_str(), f);
++	// Add newline to make the file more readable.
++	fputc('\n', f);
++}
++
++void InputDevices::commandsToFile(FILE* f)
++{
++	for (unsigned n = 0; n < commands.getCount(); ++n)
++	{
++		commands[n]->toFile(f);
++		delete commands[n];
++	}
++
++	commands.clear();
++}
+--- a/src/isql/InputDevices.h
++++ b/src/isql/InputDevices.h
+@@ -35,6 +35,8 @@
+ // Do not confuse this "Ofp" with the user defined redirection of isql output to a file.
+ // The logic could be simpler but changing Borland code is tricky here.
+ 
++#include "../common/classes/array.h"
++
+ class InputDevices
+ {
+ public:
+@@ -78,12 +80,24 @@ public:
+ 	void saveCommand(const char* statement, const char* term);
+ 	bool readingStdin() const;
+ 	void gotoEof();
++	void commandsToFile(FILE* fpointer);
+ 
+ private:
+ 	size_t m_count;
+ 	indev* m_head;
+ 	indev m_ifp;
+ 	indev m_ofp;
++
++	class Command : public Firebird::GlobalStorage
++	{
++	public:
++		Command(const char* statement, const char* term);
++		void toFile(FILE* fpointer);
++	private:
++		Firebird::string m_statement;
++	};
++
++	Firebird::HalfStaticArray<Command*, 32> commands;
+ };
+ 
+ 
+@@ -100,12 +114,12 @@ inline void InputDevices::indev::close()
+ 
+ 
+ inline InputDevices::InputDevices()
+-	: m_count(0), m_head(0), m_ifp(0, ""), m_ofp(0, "")
++	: m_count(0), m_head(0), m_ifp(0, ""), m_ofp(0, ""), commands(*getDefaultMemoryPool())
+ {
+ }
+ 
+-inline InputDevices::InputDevices(Firebird::MemoryPool&)
+-	: m_count(0), m_head(0), m_ifp(0, ""), m_ofp(0, "")
++inline InputDevices::InputDevices(Firebird::MemoryPool& p)
++	: m_count(0), m_head(0), m_ifp(0, ""), m_ofp(0, ""), commands(p)
+ {
+ }
+ 
diff --git a/debian/patches/upstream/r57728-cve-2013-2429.patch b/debian/patches/upstream/r57728-cve-2013-2429.patch
deleted file mode 100644
index 692b053..0000000
--- a/debian/patches/upstream/r57728-cve-2013-2429.patch
+++ /dev/null
@@ -1,26 +0,0 @@
-From: alexpeshkoff <alexpeshkoff@65644016-39b1-43b1-bf79-96bc8fe82c15>
-Date: Wed, 6 Mar 2013 11:33:08 +0000 (+0000)
-Subject: Fixed CORE-4058
- Fixes a remote, unauthenticated stack overflow
- CVE-2013-2492
-X-Git-Url: http://anonscm.debian.org/gitweb/?p=pkg-firebird%2Fupstream.git;a=commitdiff;h=9cacbca5093808e217ba68adaa469bd6179fb535
-Bug: http://tracker.firebirdsql.org/browse/CORE-4058
-Bug-Debian: http://bigs.debian.org/702736
-Bug-RedHat: https://bugzilla.redhat.com/show_bug.cgi?id=CVE-2013-2492
-
-Fixed CORE-4058
-
-git-svn-id: svn://svn.code.sf.net/p/firebird/code/firebird/branches/B2_5_Release@57728 65644016-39b1-43b1-bf79-96bc8fe82c15
----
-
---- a/src/remote/inet.cpp
-+++ b/src/remote/inet.cpp
-@@ -1056,7 +1056,7 @@ static bool accept_connection(rem_port*
- 		case CNCT_group:
- 			{
- 				const size_t length = id.getClumpLength();
--				if (length != 0)
-+				if (length <= sizeof(eff_gid) && length > 0)
- 				{
- 					eff_gid = 0;
- 					memcpy(&eff_gid, id.getBytes(), length);
diff --git a/debian/patches/upstream/r57795-crash-storing-long-incompressible-data.patch b/debian/patches/upstream/r57795-crash-storing-long-incompressible-data.patch
new file mode 100644
index 0000000..f8d0b7f
--- /dev/null
+++ b/debian/patches/upstream/r57795-crash-storing-long-incompressible-data.patch
@@ -0,0 +1,111 @@
+Description: fix bugcheck or database corruption when attempting to store long
+ incompressible data into a table.
+Bug: http://tracker.firebirdsql.org/browse/CORE-4036
+Origin: upstream, http://sourceforge.net/p/firebird/code/57795/
+--- a/src/jrd/dpm.epp
++++ b/src/jrd/dpm.epp
+@@ -89,7 +89,7 @@ static bool get_header(WIN*, SSHORT, rec
+ static pointer_page* get_pointer_page(thread_db*, jrd_rel*, RelationPages*, WIN*, USHORT, USHORT);
+ static rhd* locate_space(thread_db*, record_param*, SSHORT, PageStack&, Record*, USHORT);
+ static void mark_full(thread_db*, record_param*);
+-static void store_big_record(thread_db*, record_param*, PageStack&, DataComprControl*, USHORT);
++static void store_big_record(thread_db*, record_param*, PageStack&, DataComprControl*, ULONG);
+ 
+ 
+ PAG DPM_allocate(thread_db* tdbb, WIN* window)
+@@ -353,7 +353,7 @@ bool DPM_chain( thread_db* tdbb, record_
+ 
+ 	record_param temp = *org_rpb;
+ 	DataComprControl dcc(*tdbb->getDefaultPool());
+-	const USHORT size = SQZ_length((SCHAR*) new_rpb->rpb_address, (int) new_rpb->rpb_length, &dcc);
++	const ULONG size = SQZ_length((SCHAR*) new_rpb->rpb_address, new_rpb->rpb_length, &dcc);
+ 
+ 	if (!DPM_get(tdbb, org_rpb, LCK_write))
+ 	{
+@@ -2031,7 +2031,7 @@ void DPM_store( thread_db* tdbb, record_
+ #endif
+ 
+ 	DataComprControl dcc(*tdbb->getDefaultPool());
+-	const USHORT size = SQZ_length((SCHAR*) rpb->rpb_address, (int) rpb->rpb_length, &dcc);
++	const ULONG size = SQZ_length((SCHAR*) rpb->rpb_address, rpb->rpb_length, &dcc);
+ 
+ 	// If the record isn't going to fit on a page, even if fragmented,
+ 	// handle it a little differently.
+@@ -2049,7 +2049,7 @@ void DPM_store( thread_db* tdbb, record_
+ 
+ 	// Accomodate max record size i.e. 64K
+ 	const SLONG length = RHD_SIZE + size + fill;
+-	rhd* header = locate_space(tdbb, rpb, (SSHORT)length, stack, NULL, type);
++	rhd* header = locate_space(tdbb, rpb, (SSHORT) length, stack, NULL, type);
+ 
+ 	header->rhd_flags = rpb->rpb_flags;
+ 	header->rhd_transaction = rpb->rpb_transaction_nr;
+@@ -2154,8 +2154,8 @@ RecordNumber DPM_store_blob(thread_db* t
+ 	rpb.rpb_relation = blob->blb_relation;
+ 	rpb.rpb_transaction_nr = blob->blb_transaction->tra_number;
+ 
+-	blh* header = (blh*) locate_space(tdbb, &rpb, (SSHORT)(BLH_SIZE + length),
+-										stack, record, DPM_other);
++	blh* header = (blh*) locate_space(tdbb, &rpb, (SSHORT) (BLH_SIZE + length),
++									  stack, record, DPM_other);
+ 	header->blh_flags = rhd_blob;
+ 
+ 	if (blob->blb_flags & BLB_stream) {
+@@ -2295,7 +2295,7 @@ void DPM_update( thread_db* tdbb, record
+ 	CCH_MARK(tdbb, &rpb->getWindow(tdbb));
+ 	data_page* page = (data_page*) rpb->getWindow(tdbb).win_buffer;
+ 	DataComprControl dcc(*tdbb->getDefaultPool());
+-	const USHORT size = SQZ_length((SCHAR*) rpb->rpb_address, (int) rpb->rpb_length, &dcc);
++	const ULONG size = SQZ_length((SCHAR*) rpb->rpb_address, rpb->rpb_length, &dcc);
+ 
+ 	// It is critical that the record be padded, if necessary, to the length of
+ 	// a fragmented record header.  Compute the amount of fill required.
+@@ -3280,7 +3280,7 @@ static void mark_full( thread_db* tdbb,
+ 
+ static void store_big_record(thread_db* tdbb, record_param* rpb,
+ 							 PageStack& stack,
+-							 DataComprControl* dcc, USHORT size)
++							 DataComprControl* dcc, ULONG size)
+ {
+ /**************************************
+  *
+@@ -3390,7 +3390,7 @@ static void store_big_record(thread_db*
+ 	// What's left fits on a page.  Luckily, we don't have to store it ourselves.
+ 
+ 	size = SQZ_length((SCHAR*) rpb->rpb_address, in - (SCHAR*) rpb->rpb_address, dcc);
+-	rhdf* header = (rhdf*)locate_space(tdbb, rpb, (SSHORT)(RHDF_SIZE + size), stack, NULL, DPM_other);
++	rhdf* header = (rhdf*) locate_space(tdbb, rpb, (SSHORT) (RHDF_SIZE + size), stack, NULL, DPM_other);
+ 
+ 	header->rhdf_flags = rhd_incomplete | rhd_large | rpb->rpb_flags;
+ 	header->rhdf_transaction = rpb->rpb_transaction_nr;
+--- a/src/jrd/sqz.cpp
++++ b/src/jrd/sqz.cpp
+@@ -418,7 +418,7 @@ void SQZ_fast(const DataComprControl* dc
+ }
+ 
+ 
+-USHORT SQZ_length(const SCHAR* data, int length, DataComprControl* dcc)
++ULONG SQZ_length(const SCHAR* data, ULONG length, DataComprControl* dcc)
+ {
+ /**************************************
+  *
+@@ -432,8 +432,6 @@ USHORT SQZ_length(const SCHAR* data, int
+  *
+  **************************************/
+ 
+- 	fb_assert(length >= 0);
+-
+ 	// allocate buffer big enough for worst case
+ 	SCHAR* control = dcc->getBuffer((length + 1) / 2, false);
+ 	const SCHAR* const end = &data[length];
+--- a/src/jrd/sqz_proto.h
++++ b/src/jrd/sqz_proto.h
+@@ -38,7 +38,7 @@ UCHAR*	SQZ_decompress(const UCHAR*, USHO
+ USHORT	SQZ_differences(const SCHAR*, USHORT, SCHAR*, USHORT, SCHAR*, int);
+ USHORT	SQZ_no_differences(SCHAR* const, int);
+ void	SQZ_fast(const Jrd::DataComprControl*, const SCHAR*, SCHAR*);
+-USHORT	SQZ_length(const SCHAR*, int, Jrd::DataComprControl*);
++ULONG	SQZ_length(const SCHAR*, ULONG, Jrd::DataComprControl*);
+ 
+ #endif // JRD_SQZ_PROTO_H
+ 
diff --git a/debian/patches/upstream/r58004-crash-converting-overscaled-numeric-to-string.patch b/debian/patches/upstream/r58004-crash-converting-overscaled-numeric-to-string.patch
new file mode 100644
index 0000000..7dd449e
--- /dev/null
+++ b/debian/patches/upstream/r58004-crash-converting-overscaled-numeric-to-string.patch
@@ -0,0 +1,56 @@
+Description: fix engine crash while converting an overscaled numeric to a string
+Bug: http://tracker.firebirdsql.org/browse/CORE-4093
+Origin: upstream, http://sourceforge.net/p/firebird/code/58002/
+--- a/src/common/cvt.cpp
++++ b/src/common/cvt.cpp
+@@ -343,29 +343,25 @@ static void integer_to_text(const dsc* f
+ 		u = -n;
+ 	}
+ 
+-    UCHAR temp[32];
+-    UCHAR* p = temp;
++    string temp;
+ 
+ 	do {
+-		*p++ = (UCHAR) (u % 10) + '0';
++		temp += (u % 10) + '0';
+ 		u /= 10;
+ 	} while (u);
+ 
+-	SSHORT l = p - temp;
++	SSHORT l = (SSHORT) temp.length();
+ 
+ 	// if scale < 0, we need at least abs(scale)+1 digits, so add
+ 	// any leading zeroes required.
+ 	while (l + scale <= 0)
+ 	{
+-		*p++ = '0';
++		temp += '0';
+ 		l++;
+ 	}
+ 	// postassertion: l+scale > 0
+ 	fb_assert(l + scale > 0);
+ 
+-	// CVC: also, we'll check for buffer overflow directly.
+-	fb_assert(temp + sizeof(temp) >= p);
+-
+ 	// Compute the total length of the field formatted.  Make sure it
+ 	// fits.  Keep in mind that routine handles both string and varying
+ 	// string fields.
+@@ -379,6 +375,7 @@ static void integer_to_text(const dsc* f
+ 	    CVT_conversion_error(from, cb->err);
+ 	}
+ 
++	const UCHAR* p = (UCHAR*) temp.c_str() + temp.length();
+ 	UCHAR* q = (to->dsc_dtype == dtype_varying) ? to->dsc_address + sizeof(USHORT) : to->dsc_address;
+ 	const UCHAR* start = q;
+ 
+@@ -1724,7 +1721,7 @@ void CVT_conversion_error(const dsc* des
+ 		try
+ 	    {
+ 			const char* p;
+-			VaryStr<41> s;
++			VaryStr<128> s;
+ 			const USHORT length =
+ 				CVT_make_string(desc, ttype_ascii, &p, &s, sizeof(s) - 1, localError);
+ 			message.assign(p, length);
[The following lists of changes regard files as different if they have
different names, permissions or owners.]

Files in second set of .debs but not in first
---------------------------------------------
-rw-r--r--  root/root   /usr/share/doc/firebird2.5-common-doc/NEWS.Debian.gz

Control files of package firebird-dev: lines which differ (wdiff format)
------------------------------------------------------------------------
Depends: libfbclient2 (= [-2.5.2~svn+54698.ds4-3),-] {+2.5.2.26540.ds4-1),+} libib-util, firebird2.5-common-doc (= [-2.5.2~svn+54698.ds4-3)-] {+2.5.2.26540.ds4-1)+}
Version: [-2.5.2~svn+54698.ds4-3-] {+2.5.2.26540.ds4-1+}

Control files of package firebird2.5-classic: lines which differ (wdiff format)
-------------------------------------------------------------------------------
Depends: libc6 (>= 2.2.5), libfbembed2.5 (>= 2.5.0.25784~ReleaseCandidate1.ds2), libgcc1 (>= 1:4.1.1), libstdc++6 (>= 4.1.1), firebird2.5-common (= [-2.5.2~svn+54698.ds4-3),-] {+2.5.2.26540.ds4-1),+} netbase, firebird2.5-server-common (= [-2.5.2~svn+54698.ds4-3),-] {+2.5.2.26540.ds4-1),+} firebird2.5-classic-common (= [-2.5.2~svn+54698.ds4-3),-] {+2.5.2.26540.ds4-1),+} openbsd-inetd | inet-superserver, debconf (>= 1.4.69), firebird2.5-common-doc (= [-2.5.2~svn+54698.ds4-3)-] {+2.5.2.26540.ds4-1)+}
Version: [-2.5.2~svn+54698.ds4-3-] {+2.5.2.26540.ds4-1+}

Control files of package firebird2.5-classic-common: lines which differ (wdiff format)
--------------------------------------------------------------------------------------
Depends: libc6 (>= [-2.11),-] {+2.14),+} libedit2 (>= 2.11-20080614-1), libfbembed2.5 (>= 2.5.0.25784~ReleaseCandidate1.ds2), libgcc1 (>= 1:4.1.1), libib-util (>= 2.5.0.23247~Beta1.ds2), libstdc++6 (>= 4.1.1), firebird2.5-common-doc (= [-2.5.2~svn+54698.ds4-3)-] {+2.5.2.26540.ds4-1)+}
Installed-Size: [-3370-] {+3366+}
Version: [-2.5.2~svn+54698.ds4-3-] {+2.5.2.26540.ds4-1+}

Control files of package firebird2.5-classic-dbg: lines which differ (wdiff format)
-----------------------------------------------------------------------------------
Depends: firebird2.5-classic (= [-2.5.2~svn+54698.ds4-3)-] {+2.5.2.26540.ds4-1)+} | firebird2.5-superclassic (= [-2.5.2~svn+54698.ds4-3),-] {+2.5.2.26540.ds4-1),+} firebird2.5-classic-common (= [-2.5.2~svn+54698.ds4-3),-] {+2.5.2.26540.ds4-1),+} firebird2.5-common-doc (= [-2.5.2~svn+54698.ds4-3),-] {+2.5.2.26540.ds4-1),+} libfbembed2.5 (= [-2.5.2~svn+54698.ds4-3)-] {+2.5.2.26540.ds4-1)+}
Installed-Size: [-83615-] {+83670+}
Version: [-2.5.2~svn+54698.ds4-3-] {+2.5.2.26540.ds4-1+}

Control files of package firebird2.5-common: lines which differ (wdiff format)
------------------------------------------------------------------------------
Depends: firebird2.5-common-doc (= [-2.5.2~svn+54698.ds4-3)-] {+2.5.2.26540.ds4-1)+}
Version: [-2.5.2~svn+54698.ds4-3-] {+2.5.2.26540.ds4-1+}

Control files of package firebird2.5-common-doc: lines which differ (wdiff format)
----------------------------------------------------------------------------------
Installed-Size: [-752-] {+754+}
Version: [-2.5.2~svn+54698.ds4-3-] {+2.5.2.26540.ds4-1+}

Control files of package firebird2.5-doc: lines which differ (wdiff format)
---------------------------------------------------------------------------
Depends: firebird2.5-common-doc (= [-2.5.2~svn+54698.ds4-3)-] {+2.5.2.26540.ds4-1)+}
Version: [-2.5.2~svn+54698.ds4-3-] {+2.5.2.26540.ds4-1+}

Control files of package firebird2.5-examples: lines which differ (wdiff format)
--------------------------------------------------------------------------------
Depends: firebird2.5-common-doc (= [-2.5.2~svn+54698.ds4-3)-] {+2.5.2.26540.ds4-1)+}
Version: [-2.5.2~svn+54698.ds4-3-] {+2.5.2.26540.ds4-1+}

Control files of package firebird2.5-server-common: lines which differ (wdiff format)
-------------------------------------------------------------------------------------
Depends: adduser, libc6 (>= [-2.11),-] {+2.14),+} libfbclient2 (>= 2.5.0.25784~ReleaseCandidate1.ds2), libgcc1 (>= 1:4.1.1), libicu48 (>= 4.8-1), libstdc++6 (>= 4.1.1), firebird2.5-common-doc (= [-2.5.2~svn+54698.ds4-3)-] {+2.5.2.26540.ds4-1)+}
Installed-Size: [-3179-] {+3171+}
Version: [-2.5.2~svn+54698.ds4-3-] {+2.5.2.26540.ds4-1+}

Control files of package firebird2.5-super: lines which differ (wdiff format)
-----------------------------------------------------------------------------
Depends: libc6 (>= [-2.11),-] {+2.14),+} libedit2 (>= 2.11-20080614-1), libfbclient2 (>= 2.5.0.25784~ReleaseCandidate1.ds2), libgcc1 (>= 1:4.1.1), libib-util (>= 2.5.0.23247~Beta1.ds2), libicu48 (>= 4.8-1), libstdc++6 (>= 4.1.1), firebird2.5-common (= [-2.5.2~svn+54698.ds4-3),-] {+2.5.2.26540.ds4-1),+} firebird2.5-server-common (= [-2.5.2~svn+54698.ds4-3),-] {+2.5.2.26540.ds4-1),+} lsb-base, debconf (>= 1.4.69), firebird2.5-common-doc (= [-2.5.2~svn+54698.ds4-3)-] {+2.5.2.26540.ds4-1)+}
Installed-Size: [-8298-] {+8273+}
Version: [-2.5.2~svn+54698.ds4-3-] {+2.5.2.26540.ds4-1+}

Control files of package firebird2.5-super-dbg: lines which differ (wdiff format)
---------------------------------------------------------------------------------
Depends: firebird2.5-common-doc (= [-2.5.2~svn+54698.ds4-3),-] {+2.5.2.26540.ds4-1),+} firebird2.5-super (= [-2.5.2~svn+54698.ds4-3),-] {+2.5.2.26540.ds4-1),+} libfbclient2-dbg
Installed-Size: [-80250-] {+80297+}
Version: [-2.5.2~svn+54698.ds4-3-] {+2.5.2.26540.ds4-1+}

Control files of package firebird2.5-superclassic: lines which differ (wdiff format)
------------------------------------------------------------------------------------
Depends: libc6 (>= [-2.11),-] {+2.14),+} libfbembed2.5 (>= 2.5.0.25784~ReleaseCandidate1.ds2), libgcc1 (>= 1:4.1.1), libstdc++6 (>= 4.1.1), firebird2.5-common (= [-2.5.2~svn+54698.ds4-3),-] {+2.5.2.26540.ds4-1),+} netbase, firebird2.5-server-common (= [-2.5.2~svn+54698.ds4-3),-] {+2.5.2.26540.ds4-1),+} firebird2.5-classic-common (= [-2.5.2~svn+54698.ds4-3),-] {+2.5.2.26540.ds4-1),+} firebird2.5-common-doc (= [-2.5.2~svn+54698.ds4-3),-] {+2.5.2.26540.ds4-1),+} lsb-base, debconf (>= 1.4.69)
Version: [-2.5.2~svn+54698.ds4-3-] {+2.5.2.26540.ds4-1+}

Control files of package libfbclient2: lines which differ (wdiff format)
------------------------------------------------------------------------
Depends: libc6 (>= [-2.11),-] {+2.14),+} firebird2.5-common (= [-2.5.2~svn+54698.ds4-3),-] {+2.5.2.26540.ds4-1),+} firebird2.5-common-doc (= [-2.5.2~svn+54698.ds4-3)-] {+2.5.2.26540.ds4-1)+}
Version: [-2.5.2~svn+54698.ds4-3-] {+2.5.2.26540.ds4-1+}

Control files of package libfbclient2-dbg: lines which differ (wdiff format)
----------------------------------------------------------------------------
Depends: firebird2.5-common-doc (= [-2.5.2~svn+54698.ds4-3),-] {+2.5.2.26540.ds4-1),+} libfbclient2 (= [-2.5.2~svn+54698.ds4-3)-] {+2.5.2.26540.ds4-1)+}
Installed-Size: [-5579-] {+5588+}
Version: [-2.5.2~svn+54698.ds4-3-] {+2.5.2.26540.ds4-1+}

Control files of package libfbembed2.5: lines which differ (wdiff format)
-------------------------------------------------------------------------
Depends: libc6 (>= [-2.11),-] {+2.14),+} libgcc1 (>= 1:4.1.1), libicu48 (>= 4.8-1), libstdc++6 (>= 4.1.1), firebird2.5-common (= [-2.5.2~svn+54698.ds4-3),-] {+2.5.2.26540.ds4-1),+} firebird2.5-server-common (= [-2.5.2~svn+54698.ds4-3),-] {+2.5.2.26540.ds4-1),+} firebird2.5-common-doc (= [-2.5.2~svn+54698.ds4-3)-] {+2.5.2.26540.ds4-1)+}
Installed-Size: [-5020-] {+5000+}
Version: [-2.5.2~svn+54698.ds4-3-] {+2.5.2.26540.ds4-1+}

Control files of package libib-util: lines which differ (wdiff format)
----------------------------------------------------------------------
Depends: libc6 (>= 2.2.5), libgcc1 (>= 1:4.1.1), libstdc++6 (>= 4.1.1), firebird2.5-common-doc (= [-2.5.2~svn+54698.ds4-3)-] {+2.5.2.26540.ds4-1)+}
Version: [-2.5.2~svn+54698.ds4-3-] {+2.5.2.26540.ds4-1+}

Attachment: signature.asc
Description: Digital signature


Reply to: