Recurity.Swf.TagHandler.DoAction.ReParseCode C# (CSharp) Method

ReParseCode() public method

public ReParseCode ( ) : void
return void
        public override void ReParseCode()
        {
            // TODO: This code only follows code flow rudimentarily. It does not create
            // a valid _Code member. To do this, there needs to be logic that determines
            // the relative position of the new jump target.
            //

            throw new NotImplementedException("sucks");

            // remove this comment if parsing is enables for this tag
            //_dataStream.Seek( CodeOffset, SeekOrigin.Begin );
            //this._code = null;
            //AVM1InstructionSequence seq = new AVM1InstructionSequence();
            //BinaryReader br = new BinaryReader( _dataStream );

            //long startPosition = br.BaseStream.Position;

            //bool done = false;

            //do
            //{

            //    AbstractAction action = null;
            //    bool wasValid = false;

            //    //
            //    // remember position before and read the opcode byte
            //    //
            //    long currentPosition = br.BaseStream.Position;

            //    try
            //    {
            //        try
            //        {
            //            action = AVM1Factory.Create( br, this.Version );
            //            //seq.Add( action );
            //           Log.DebugFormat( "{0:d} 0x{1:X08} {2}", seq.Count - 1, currentPosition, action.ToString() );
            //            wasValid = true;
            //        }
            //        catch ( AVM1Exception )
            //        {
            //            br.BaseStream.Seek( currentPosition, SeekOrigin.Begin );
            //            byte opcode = br.ReadByte();
            //           Log.DebugFormat( "Invalid opcode 0x{0:X02} at stream position 0x{1:X08}", opcode, currentPosition );
            //            wasValid = false;
            //        }
            //    }
            //    catch ( IOException e )
            //    {
            //       Log.Error(this,  e );
            //        SwfFormatException swfe = new SwfFormatException( "Code flow leaves Tag data block through missing ActionEnd" );
            //        throw swfe;
            //    }

            //    if ( wasValid )
            //    {
            //        if ( action.IsBranch )
            //        {
            //            try
            //            {
            //                br.BaseStream.Seek( currentPosition + action.BranchTargetAdjusted, SeekOrigin.Begin );
            //            }
            //            catch ( IOException e )
            //            {
            //               Log.Error(this,  e );
            //                SwfFormatException swfe = new SwfFormatException( "Code flow leaves Tag data block through branch" );
            //                throw swfe;
            //            }
            //           Log.DebugFormat( "Next instruction 0x{0:X08} -> {1:X08}", currentPosition, br.BaseStream.Position );
            //        }
            //    }
            //    else
            //    {
            //        br.BaseStream.Seek( currentPosition, SeekOrigin.Begin );
            //        byte opcode = br.ReadByte();

            //        if ( 0 != ( 0x80 & opcode ) )
            //        {
            //            //
            //            //  Read length
            //            //
            //            try
            //            {
            //                UInt16 length = br.ReadUInt16();
            //                br.BaseStream.Seek( currentPosition + length, SeekOrigin.Begin );
            //            }
            //            catch ( IOException e )
            //            {
            //               Log.Error(this,  e );
            //                SwfFormatException swfe = new SwfFormatException( "Code flow leaves Tag data block through undocumented opcode" );
            //                throw swfe;
            //            }
            //        }
            //       Log.DebugFormat( "Next instruction 0x{0:X08} -> {1:X08}", currentPosition, br.BaseStream.Position );
            //    }

            //    if ( wasValid && ( action.ActionType == AVM1Actions.ActionEnd ) )
            //        done = true;

            //} while ( !done );
        }