X-Git-Url: https://git.saurik.com/apple/security.git/blobdiff_plain/b04fe171f0375ecd5d8a24747ca1dff85720a0ca..6b200bc335dc93c5516ccb52f14bd896d8c7fad7:/OSX/libsecurityd/lib/SharedMemoryClient.h?ds=sidebyside diff --git a/OSX/libsecurityd/lib/SharedMemoryClient.h b/OSX/libsecurityd/lib/SharedMemoryClient.h index b24b73bf..5e539af3 100644 --- a/OSX/libsecurityd/lib/SharedMemoryClient.h +++ b/OSX/libsecurityd/lib/SharedMemoryClient.h @@ -1,8 +1,29 @@ +/* + * Copyright (c) 2016-2017 Apple Inc. All Rights Reserved. + * + * @APPLE_LICENSE_HEADER_START@ + * + * This file contains Original Code and/or Modifications of Original Code + * as defined in and that are subject to the Apple Public Source License + * Version 2.0 (the 'License'). You may not use this file except in + * compliance with the License. Please obtain a copy of the License at + * http://www.opensource.apple.com/apsl/ and read it before using this + * file. + * + * The Original Code and all software distributed under the License are + * distributed on an 'AS IS' basis, WITHOUT WARRANTY OF ANY KIND, EITHER + * EXPRESS OR IMPLIED, AND APPLE HEREBY DISCLAIMS ALL SUCH WARRANTIES, + * INCLUDING WITHOUT LIMITATION, ANY WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE, QUIET ENJOYMENT OR NON-INFRINGEMENT. + * Please see the License for the specific language governing rights and + * limitations under the License. + * + * @APPLE_LICENSE_HEADER_END@ + */ + #ifndef __SHAREDMEMORYCLIENT__ #define __SHAREDMEMORYCLIENT__ - - #include #include #include @@ -11,6 +32,7 @@ namespace Security { + enum UnavailableReason {kURNone, kURMessageDropped, kURMessagePending, kURNoMessage, kURBufferCorrupt}; class SharedMemoryClient @@ -19,28 +41,34 @@ protected: std::string mSegmentName; size_t mSegmentSize; Mutex mMutex; - + uid_t mUID; + u_int8_t* mSegment; u_int8_t* mDataArea; u_int8_t* mDataPtr; u_int8_t* mDataMax; SegmentOffsetType GetProducerCount (); - + void ReadData (void* buffer, SegmentOffsetType bytesToRead); SegmentOffsetType ReadOffset (); public: - SharedMemoryClient (const char* segmentName, SegmentOffsetType segmentSize); + SharedMemoryClient (const char* segmentName, SegmentOffsetType segmentSize, uid_t uid = 0); virtual ~SharedMemoryClient (); bool ReadMessage (void* message, SegmentOffsetType &length, UnavailableReason &ur); - const char* GetSegmentName (); - size_t GetSegmentSize (); -}; + const char* GetSegmentName() { return mSegmentName.c_str (); } + size_t GetSegmentSize() { return mSegmentSize; } + + uid_t getUID() const { return mUID; } + bool uninitialized() { return (mSegment == NULL || mSegment == MAP_FAILED); } }; +}; /* namespace */ + #endif +