From 96359d557d8a9902e1338fda74b993d3ce3ee59a Mon Sep 17 00:00:00 2001 From: Chris Feist Date: Mon, 30 Jan 2012 23:26:41 -0600 Subject: Added test to illustrate bad binary blobs. --- activerecord/test/assets/test.txt | 1 + activerecord/test/cases/binary_test.rb | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) create mode 100644 activerecord/test/assets/test.txt diff --git a/activerecord/test/assets/test.txt b/activerecord/test/assets/test.txt new file mode 100644 index 0000000000..6754f0612e --- /dev/null +++ b/activerecord/test/assets/test.txt @@ -0,0 +1 @@ +%00 diff --git a/activerecord/test/cases/binary_test.rb b/activerecord/test/cases/binary_test.rb index f97aade311..25d2896ab0 100644 --- a/activerecord/test/cases/binary_test.rb +++ b/activerecord/test/cases/binary_test.rb @@ -8,7 +8,7 @@ unless current_adapter?(:SybaseAdapter, :DB2Adapter, :FirebirdAdapter) require 'models/binary' class BinaryTest < ActiveRecord::TestCase - FIXTURES = %w(flowers.jpg example.log) + FIXTURES = %w(flowers.jpg example.log test.txt) def test_mixed_encoding str = "\x80" -- cgit v1.2.3 From 661466824411cc0b3bd6374d65a72122488f305b Mon Sep 17 00:00:00 2001 From: Chris Feist Date: Tue, 31 Jan 2012 00:07:40 -0600 Subject: Fixed issue with SQLite adapter corrupting binary data --- .../active_record/connection_adapters/sqlite_adapter.rb | 17 +---------------- 1 file changed, 1 insertion(+), 16 deletions(-) diff --git a/activerecord/lib/active_record/connection_adapters/sqlite_adapter.rb b/activerecord/lib/active_record/connection_adapters/sqlite_adapter.rb index 0520fc8b62..6391ea3800 100644 --- a/activerecord/lib/active_record/connection_adapters/sqlite_adapter.rb +++ b/activerecord/lib/active_record/connection_adapters/sqlite_adapter.rb @@ -6,26 +6,11 @@ module ActiveRecord module ConnectionAdapters #:nodoc: class SQLiteColumn < Column #:nodoc: class << self - def string_to_binary(value) - value.gsub(/\0|\%/n) do |b| - case b - when "\0" then "%00" - when "%" then "%25" - end - end - end - def binary_to_string(value) if value.encoding != Encoding::ASCII_8BIT value = value.force_encoding(Encoding::ASCII_8BIT) end - - value.gsub(/%00|%25/n) do |b| - case b - when "%00" then "\0" - when "%25" then "%" - end - end + value end end end -- cgit v1.2.3