Only in mariadb-java-client-conj77: .classpath
Only in mariadb-java-client-conj77: .settings
diff -ubr '--exclude=target' mariadb-java-client-1.1.6/src/main/java/org/mariadb/jdbc/MySQLBlob.java mariadb-java-client-conj77/src/main/java/org/mariadb/jdbc/MySQLBlob.java
--- mariadb-java-client-1.1.6/src/main/java/org/mariadb/jdbc/MySQLBlob.java	2014-02-17 11:34:05.000000000 +0100
+++ mariadb-java-client-conj77/src/main/java/org/mariadb/jdbc/MySQLBlob.java	2014-02-20 12:19:04.324785678 +0100
@@ -353,7 +353,7 @@
         if (pos < 1) {
              throw SQLExceptionMapper.getSQLException("Out of range (position should be > 0)");
         }
-        if (pos > actualSize) {
+        if (pos-1 > actualSize) {
             throw SQLExceptionMapper.getSQLException("Out of range (position > stream size)");
         }
         if (pos + length - 1 > actualSize) {
diff -ubr '--exclude=target' mariadb-java-client-1.1.6/src/test/java/org/mariadb/jdbc/BlobTest.java mariadb-java-client-conj77/src/test/java/org/mariadb/jdbc/BlobTest.java
--- mariadb-java-client-1.1.6/src/test/java/org/mariadb/jdbc/BlobTest.java	2014-02-17 11:34:05.000000000 +0100
+++ mariadb-java-client-conj77/src/test/java/org/mariadb/jdbc/BlobTest.java	2014-02-20 12:14:25.045524010 +0100
@@ -20,6 +20,7 @@
 import java.sql.Statement;
 import java.util.logging.Level;
 import java.util.logging.Logger;
+
 import org.junit.Assert;
 
 import static org.junit.Assert.assertEquals;
@@ -274,4 +275,84 @@
        assertEquals(3, c2.length());
     }
 
+    @Test
+    public void conj77() throws Exception {
+		final Statement sta1 = connection.createStatement();
+		try {
+			sta1.execute( "DROP TABLE IF EXISTS conj77_test" );
+			sta1.execute( "CREATE TABLE conj77_test ( Name VARCHAR(100) NOT NULL,Archive LONGBLOB, PRIMARY KEY (Name)) Engine=InnoDB DEFAULT CHARSET utf8" );
+
+			final PreparedStatement pre = connection.prepareStatement( "INSERT INTO conj77_test (Name,Archive) VALUES (?,?)" );
+			try {
+				pre.setString( 1,"Empty String" );
+				pre.setBytes( 2,"".getBytes() );
+				pre.addBatch();
+
+				pre.setString( 1,"Data Hello" );
+				pre.setBytes( 2,"hello".getBytes() );
+				pre.addBatch();
+
+				pre.setString( 1,"Empty Data null" );
+				pre.setBytes( 2,null );
+				pre.addBatch();
+
+				pre.executeBatch();
+			}
+			finally {
+				if( pre != null )
+					pre.close();
+			}
+		}
+		finally {
+			if( sta1 != null )
+				sta1.close();
+		}
+
+		final Statement sta2 = connection.createStatement();
+		try {
+			final ResultSet set = sta2.executeQuery( "Select name,archive as text FROM conj77_test" );
+			try {
+				while( set.next() ) {
+					System.err.print( set.getString( "name" ) + " : " );
+
+					final Blob blob = set.getBlob( "text" );
+					if( blob == null )
+						System.err.println( "IS NULL" );
+					else {
+						final ByteArrayOutputStream bout = new ByteArrayOutputStream( (int)blob.length() );
+						try {
+							final InputStream bin = blob.getBinaryStream();
+							try {
+								final byte[] buffer = new byte[ 1024 * 4 ];
+
+								for( int read = bin.read( buffer );read != -1;read = bin.read( buffer ) )
+									bout.write( buffer,0,read );
+
+								System.err.println( new String( bout.toByteArray(),"UTF-8" ) );
+							}
+							finally {
+								if( bin != null )
+									bin.close();
+							}
+
+						}
+						finally {
+							if( bout != null )
+								bout.close();
+						}
+
+					}
+				}
+			}
+			finally {
+				if( set != null )
+					set.close();
+			}
+		}
+		finally {
+			if( sta2 != null )
+				sta2.close();
+		}
+    	
+    }
 }
