You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ignite.apache.org by vo...@apache.org on 2017/04/26 13:25:24 UTC

[13/50] [abbrv] ignite git commit: GG-12132 Added magic header to protect from unexpected input.

GG-12132 Added magic header to protect from unexpected input.


Project: http://git-wip-us.apache.org/repos/asf/ignite/repo
Commit: http://git-wip-us.apache.org/repos/asf/ignite/commit/e4a926b2
Tree: http://git-wip-us.apache.org/repos/asf/ignite/tree/e4a926b2
Diff: http://git-wip-us.apache.org/repos/asf/ignite/diff/e4a926b2

Branch: refs/heads/master
Commit: e4a926b2825eee507e1f58a3c1b19fdc2ac80cb4
Parents: 26c222b
Author: Alexey Kuznetsov <ak...@apache.org>
Authored: Tue Apr 25 14:02:26 2017 +0700
Committer: Alexey Kuznetsov <ak...@apache.org>
Committed: Tue Apr 25 14:02:26 2017 +0700

----------------------------------------------------------------------
 .../marshaller/optimized/OptimizedMarshaller.java    |  3 ++-
 .../internal/visor/VisorDataTransferObject.java      | 15 +++++++++++++--
 .../internal/visor/binary/VisorBinaryMetadata.java   |  3 +--
 .../visor/cache/VisorCacheConfiguration.java         |  3 +--
 4 files changed, 17 insertions(+), 7 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/ignite/blob/e4a926b2/modules/core/src/main/java/org/apache/ignite/internal/marshaller/optimized/OptimizedMarshaller.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/marshaller/optimized/OptimizedMarshaller.java b/modules/core/src/main/java/org/apache/ignite/internal/marshaller/optimized/OptimizedMarshaller.java
index 3f40d63..575c9a4 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/marshaller/optimized/OptimizedMarshaller.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/marshaller/optimized/OptimizedMarshaller.java
@@ -232,7 +232,8 @@ public class OptimizedMarshaller extends AbstractNodeNameAwareMarshaller {
                 "[clsLdr=" + clsLdr + ", cls=" + e.getMessage() + "]", e);
         }
         catch (Exception e) {
-            throw new IgniteCheckedException("Failed to deserialize object with given class loader: " + clsLdr, e);
+            throw new IgniteCheckedException("Failed to deserialize object with given class loader: " +
+                "[clsLdr=" + clsLdr + ", err=" + e.getMessage() + "]", e);
         }
         finally {
             OptimizedObjectStreamRegistry.closeIn(objIn);

http://git-wip-us.apache.org/repos/asf/ignite/blob/e4a926b2/modules/core/src/main/java/org/apache/ignite/internal/visor/VisorDataTransferObject.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/visor/VisorDataTransferObject.java b/modules/core/src/main/java/org/apache/ignite/internal/visor/VisorDataTransferObject.java
index d8dcf4e..bdf01e7 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/visor/VisorDataTransferObject.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/visor/VisorDataTransferObject.java
@@ -30,6 +30,9 @@ import org.jetbrains.annotations.Nullable;
  * Base class for data transfer objects.
  */
 public abstract class VisorDataTransferObject implements Externalizable {
+    /** Magic number to detect correct transfer objects. */
+    private static final int MAGIC = 0x42BEEF00;
+
     /**
      * @param col Source collection.
      * @param <T> Collection type.
@@ -59,7 +62,9 @@ public abstract class VisorDataTransferObject implements Externalizable {
 
     /** {@inheritDoc} */
     @Override public void writeExternal(ObjectOutput out) throws IOException {
-        out.writeByte(getProtocolVersion());
+        int hdr = MAGIC  + getProtocolVersion();
+
+        out.writeInt(hdr);
 
         try (VisorDataTransferObjectOutput dtout = new VisorDataTransferObjectOutput(out)) {
             writeExternalData(dtout);
@@ -78,7 +83,13 @@ public abstract class VisorDataTransferObject implements Externalizable {
 
     /** {@inheritDoc} */
     @Override public void readExternal(ObjectInput in) throws IOException, ClassNotFoundException {
-        byte ver = in.readByte();
+        int hdr = in.readInt();
+
+        if ((hdr & MAGIC) != MAGIC)
+            throw new IOException("Unexpected VisorDataTransferObject header " +
+                "[actual=" + Integer.toHexString(hdr) + ", expected=" + Integer.toHexString(MAGIC) + "]");
+
+        byte ver = (byte)(hdr & 0xFF);
 
         try (VisorDataTransferObjectInput dtin = new VisorDataTransferObjectInput(in)) {
             readExternalData(ver, dtin);

http://git-wip-us.apache.org/repos/asf/ignite/blob/e4a926b2/modules/core/src/main/java/org/apache/ignite/internal/visor/binary/VisorBinaryMetadata.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/visor/binary/VisorBinaryMetadata.java b/modules/core/src/main/java/org/apache/ignite/internal/visor/binary/VisorBinaryMetadata.java
index 5e948c6..285bff9 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/visor/binary/VisorBinaryMetadata.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/visor/binary/VisorBinaryMetadata.java
@@ -124,8 +124,7 @@ public class VisorBinaryMetadata extends VisorDataTransferObject {
     }
 
     /** {@inheritDoc} */
-    @Override protected void readExternalData(byte protoVer,
-        ObjectInput in) throws IOException, ClassNotFoundException {
+    @Override protected void readExternalData(byte protoVer, ObjectInput in) throws IOException, ClassNotFoundException {
         typeName = U.readString(in);
         typeId = (Integer)in.readObject();
         affinityKeyFieldName = U.readString(in);

http://git-wip-us.apache.org/repos/asf/ignite/blob/e4a926b2/modules/core/src/main/java/org/apache/ignite/internal/visor/cache/VisorCacheConfiguration.java
----------------------------------------------------------------------
diff --git a/modules/core/src/main/java/org/apache/ignite/internal/visor/cache/VisorCacheConfiguration.java b/modules/core/src/main/java/org/apache/ignite/internal/visor/cache/VisorCacheConfiguration.java
index 391b120..5b5d3a8 100644
--- a/modules/core/src/main/java/org/apache/ignite/internal/visor/cache/VisorCacheConfiguration.java
+++ b/modules/core/src/main/java/org/apache/ignite/internal/visor/cache/VisorCacheConfiguration.java
@@ -418,8 +418,7 @@ public class VisorCacheConfiguration extends VisorDataTransferObject {
     }
 
     /** {@inheritDoc} */
-    @Override protected void readExternalData(byte protoVer,
-        ObjectInput in) throws IOException, ClassNotFoundException {
+    @Override protected void readExternalData(byte protoVer, ObjectInput in) throws IOException, ClassNotFoundException {
         name = U.readString(in);
         mode = CacheMode.fromOrdinal(in.readByte());
         atomicityMode = CacheAtomicityMode.fromOrdinal(in.readByte());