GetLdrSize() public static method

public static GetLdrSize ( byte &data ) : uint
data byte
return uint
Example #1
0
        private static List <SKUCheckData> GetSKUCheckData(bool reversed, ref byte[] data, ref Common.TypeData checkdata)
        {
            var ret = new List <SKUCheckData>();

            foreach (var skuDataEntry in checkdata.SKUDataList.Value)
            {
                var skuCheckDataEntry = new SKUCheckData
                {
                    Type = skuDataEntry.Type
                };
                var tmpdata = new byte[skuDataEntry.Size];
                Buffer.BlockCopy(data, (int)skuDataEntry.Offset, tmpdata, 0, tmpdata.Length);
                if (reversed)
                {
                    if (skuDataEntry.Size == 1)
                    {
                        if ((skuDataEntry.Offset % 2) == 0)
                        {
                            if (data.Length < skuDataEntry.Offset + 1)
                            {
                                Logger.WriteLine2("FAILED! Offset is at end of image!");
                                tmpdata[0] = 0;
                            }
                            else
                            {
                                tmpdata[0] = data[skuDataEntry.Offset + 1];
                            }
                        }
                        else
                        {
                            tmpdata[0] = data[skuDataEntry.Offset - 1];
                        }
                    }
                    else
                    {
                        Common.SwapBytes(ref tmpdata);
                    }
                }
                if (skuDataEntry.Type.Equals("bootldrsize", StringComparison.CurrentCultureIgnoreCase))
                {
                    if (tmpdata.Length == 2)
                    {
                        skuCheckDataEntry.Size = Common.GetLdrSize(ref tmpdata);
                    }
                    else
                    {
                        throw new ArgumentException("The bootloader argument size should be 2");
                    }
                }
                else
                {
                    skuCheckDataEntry.Data = Common.GetDataForTest(tmpdata);
                }
                ret.Add(skuCheckDataEntry);
            }
            return(ret);
        }
Example #2
0
        private static bool CheckDataPart(ref byte[] srcdata, Common.DataCheck checkdata, bool reversed)
        {
            GC.Collect();
            if (checkdata.Offset >= srcdata.Length)
            {
                Logger.WriteLine2("FAILED! Faulty configuration (Bad Offset)!");
                return(false);
            }
            long size;

            if (checkdata.LdrSize != 0)
            {
                var tmpdata = new byte[2];
                Buffer.BlockCopy(srcdata, (int)checkdata.LdrSize, tmpdata, 0, tmpdata.Length);
                if (reversed)
                {
                    Common.SwapBytes(ref tmpdata);
                }
                size = Common.GetLdrSize(ref tmpdata);
            }
            else
            {
                size = checkdata.Size;
            }
            var tmp = new byte[size];

            if (checkdata.Offset >= srcdata.Length + tmp.Length)
            {
                Logger.WriteLine2("FAILED! Faulty configuration (Bad Offset/Data length)!");
                return(false);
            }
            Buffer.BlockCopy(srcdata, (int)checkdata.Offset, tmp, 0, tmp.Length);
            var statlist = GetStatistics(ref tmp);
            var isok     = CheckStatistics(statlist, checkdata, tmp.Length);

            return(isok);
        }