public static FolderSecurity.AclTableAndSecurityDescriptorProperty ReadAclTableAndSecurityDescriptor(ICorePropertyBag propertyBag) { byte[] buffer; using (Stream stream = propertyBag.OpenPropertyStream(CoreFolderSchema.AclTableAndSecurityDescriptor, PropertyOpenMode.ReadOnly)) { FolderPropertyStream stream2 = stream as FolderPropertyStream; buffer = Util.StreamHandler.ReadBytesFromStream(stream2); } return(FolderSecurity.AclTableAndSecurityDescriptorProperty.Parse(buffer)); }
internal static void GetEntryIds(ICorePropertyBag propertyBag, out ParticipantEntryId[] mainEntryIds, out ParticipantEntryId[] oneOffEntryIds, out byte[][] extraBytes, out uint computedCheckSum, out bool alwaysStream) { mainEntryIds = new ParticipantEntryId[0]; oneOffEntryIds = new ParticipantEntryId[0]; extraBytes = new byte[0][]; computedCheckSum = 0U; alwaysStream = false; PropertyError propertyError = propertyBag.TryGetProperty(DistributionListSchema.DLStream) as PropertyError; if (propertyError == null || PropertyError.IsPropertyValueTooBig(propertyError)) { long num = -1L; try { using (Stream stream = propertyBag.OpenPropertyStream(DistributionListSchema.DLStream, PropertyOpenMode.ReadOnly)) { if (stream != null && stream.Length > 0L) { num = stream.Length; byte[][] memberIds; DistributionList.ParseEntryIdStream(stream, out mainEntryIds, out oneOffEntryIds, out memberIds, out extraBytes, out alwaysStream); computedCheckSum = DistributionList.ComputeChecksum(memberIds); return; } ExTraceGlobals.StorageTracer.TraceWarning <string>(0L, "DistributionList::GetEntryIds. DLStream property is {0}.", (stream == null) ? "null" : "empty"); } } catch (EndOfStreamException innerException) { string arg = (propertyError == null) ? "<null>" : propertyError.ToLocalizedString(); LocalizedString message = ServerStrings.ExPDLCorruptOutlookBlob(string.Format("EndOfStreamException: propertyError={0}, streamLength={1}", arg, num.ToString())); throw new CorruptDataException(message, innerException); } catch (OutOfMemoryException innerException2) { throw new CorruptDataException(ServerStrings.ExPDLCorruptOutlookBlob("OutOfMemoryException"), innerException2); } } mainEntryIds = DistributionList.ParseEntryIds(propertyBag.GetValueOrDefault <byte[][]>(DistributionListSchema.Members, DistributionList.EmptyEntryIds)); oneOffEntryIds = DistributionList.ParseEntryIds(propertyBag.GetValueOrDefault <byte[][]>(DistributionListSchema.OneOffMembers, DistributionList.EmptyEntryIds)); extraBytes = new byte[mainEntryIds.Length][]; computedCheckSum = DistributionList.ComputeChecksum(propertyBag.GetValueOrDefault <byte[][]>(DistributionListSchema.Members, DistributionList.EmptyEntryIds)); }