Ejemplo n.º 1
0
        public static SimpleBinaryFormatterRootObject Parse(Stream serializationStream)
        {
            if (serializationStream.CanRead)
            {
                serializationStream.Position = 0;
            }

            InternalFE formatterEnums = new InternalFE();

            formatterEnums.FEtypeFormat         = FormatterTypeStyle.TypesAlways;
            formatterEnums.FEserializerTypeEnum = InternalSerializerTypeE.Binary;
            formatterEnums.FEassemblyFormat     = FormatterAssemblyStyle.Simple;
            formatterEnums.FEsecurityLevel      = TypeFilterLevel.Low;
            ISurrogateSelector  m_surrogates = null;
            StreamingContext    m_context    = new StreamingContext(StreamingContextStates.All);
            SerializationBinder m_binder     = null;
            //bool fCheck = false;
            //HeaderHandler handler = null;

            ObjectReader   objectReader = new ObjectReader(serializationStream, m_surrogates, m_context, formatterEnums, m_binder);
            __BinaryParser serParser    = new __BinaryParser(serializationStream, objectReader);

            //BinaryReader dataReader = new BinaryReader(serializationStream, new UTF8Encoding(false, true));

            return(serParser.RunModified());
        }
Ejemplo n.º 2
0
        [System.Security.SecurityCritical]  // auto-generated
        internal Object Deserialize(Stream serializationStream, HeaderHandler handler, bool fCheck, bool isCrossAppDomain, IMethodCallMessage methodCallMessage)
        {
            if (serializationStream == null)
            {
                throw new ArgumentNullException("serializationStream", ModifiedVulnerableBinaryFormatters.binary.Environment.GetResourceString("ArgumentNull_WithParamName", serializationStream));
            }
            Contract.EndContractBlock();

            if (serializationStream.CanSeek && (serializationStream.Length == 0))
            {
                throw new SerializationException(Environment.GetResourceString("Serialization_Stream"));
            }

            SerTrace.Log(this, "Deserialize Entry");
            InternalFE formatterEnums = new InternalFE();

            formatterEnums.FEtypeFormat         = m_typeFormat;
            formatterEnums.FEserializerTypeEnum = InternalSerializerTypeE.Binary;
            formatterEnums.FEassemblyFormat     = m_assemblyFormat;
            formatterEnums.FEsecurityLevel      = m_securityLevel;

            ObjectReader sor = new ObjectReader(serializationStream, m_surrogates, m_context, formatterEnums, m_binder);

            sor.crossAppDomainArray = m_crossAppDomainArray;
            return(sor.Deserialize(handler, new __BinaryParser(serializationStream, sor), fCheck, isCrossAppDomain, methodCallMessage));
        }
        public static MemoryStream AdvancedBinaryFormatterObjectToStream(List <AdvancedBinaryFormatterObject> abfoList)
        {
            MemoryStream resultMS = new MemoryStream();

            InternalFE formatterEnums = new InternalFE();

            formatterEnums.FEtypeFormat         = FormatterTypeStyle.TypesAlways;
            formatterEnums.FEserializerTypeEnum = InternalSerializerTypeE.Binary;
            formatterEnums.FEassemblyFormat     = FormatterAssemblyStyle.Simple;
            formatterEnums.FEsecurityLevel      = TypeFilterLevel.Low;
            ISurrogateSelector  m_surrogates = null;
            StreamingContext    m_context    = new StreamingContext(StreamingContextStates.All);
            SerializationBinder m_binder     = null;
            //bool fCheck = false;
            //HeaderHandler handler = null;

            ObjectWriter   objectWriter = new ObjectWriter(m_surrogates, m_context, formatterEnums, m_binder);
            __BinaryWriter binaryWriter = new __BinaryWriter(resultMS, objectWriter, formatterEnums.FEtypeFormat);

            List <int> asmArray = new List <int>();

            foreach (AdvancedBinaryFormatterObject abfo in abfoList)
            {
                var currentObjInfo = abfo.Data;
                if (currentObjInfo.GetType() == typeof(BinaryObjectWithMapTyped))
                {
                    if (currentObjInfo.binaryHeaderEnum == BinaryHeaderEnum.ObjectWithMapTypedAssemId)
                    {
                        if (asmArray.IndexOf(currentObjInfo.assemId) == -1 && currentObjInfo.assemId != 0)
                        {
                            asmArray.Add(currentObjInfo.assemId);
                        }
                        else
                        {
                            currentObjInfo.assemId = 0;
                        }
                    }
                }

                currentObjInfo.Write(binaryWriter);
                if (abfo.ArrayBytes != null)
                {
                    // this is for arrays when we have more data:

                    /*
                     * BinaryHeaderEnum.Array:
                     * BinaryHeaderEnum.ArraySinglePrimitive:
                     * BinaryHeaderEnum.ArraySingleObject:
                     * BinaryHeaderEnum.ArraySingleString:
                     */
                    binaryWriter.WriteBytes(abfo.ArrayBytes);
                }
            }
            return(resultMS);
        }
Ejemplo n.º 4
0
        [System.Security.SecurityCritical]  // auto-generated
        internal void Serialize(Stream serializationStream, Object graph, Header[] headers, bool fCheck)
        {
            if (serializationStream == null)
            {
                throw new ArgumentNullException("serializationStream", Environment.GetResourceString("ArgumentNull_WithParamName", serializationStream));
            }
            Contract.EndContractBlock();
            SerTrace.Log(this, "Serialize Entry");

            InternalFE formatterEnums = new InternalFE();

            formatterEnums.FEtypeFormat         = m_typeFormat;
            formatterEnums.FEserializerTypeEnum = InternalSerializerTypeE.Binary;
            formatterEnums.FEassemblyFormat     = m_assemblyFormat;

            ObjectWriter   sow          = new ObjectWriter(m_surrogates, m_context, formatterEnums, m_binder);
            __BinaryWriter binaryWriter = new __BinaryWriter(serializationStream, sow, m_typeFormat);

            sow.Serialize(graph, headers, binaryWriter, fCheck);
            m_crossAppDomainArray = sow.crossAppDomainArray;
        }