]> git.saurik.com Git - apple/xnu.git/blobdiff - iokit/Kernel/IOPolledInterface.cpp
xnu-4570.61.1.tar.gz
[apple/xnu.git] / iokit / Kernel / IOPolledInterface.cpp
index 780d64cd846648eefb15579738f1ee37cfaa06fa..28256a35cc7f70104ffed594f0c9fab721934401 100644 (file)
@@ -511,12 +511,14 @@ IOGetVolumeCryptKey(dev_t block_dev,  OSString ** pKeyUUID,
     OSString *       keyStoreUUID = 0;
     uuid_t           volumeKeyUUID;
     aks_volume_key_t vek;
+    size_t           callerKeySize;
 
     static IOService * sKeyStore;
 
     part = IOCopyMediaForDev(block_dev);
     if (!part) return (kIOReturnNotFound);
 
+    callerKeySize = *keySize;
     // Try APFS first
     {
         uuid_t volUuid = {0};
@@ -562,7 +564,7 @@ IOGetVolumeCryptKey(dev_t block_dev,  OSString ** pKeyUUID,
             IOLog("volume key err 0x%x\n", err);
         else
         {
-            if (vek.key.keybytecount < *keySize) *keySize = vek.key.keybytecount;
+            if (vek.key.keybytecount <= callerKeySize) *keySize = vek.key.keybytecount;
             bcopy(&vek.key.keybytes[0], volumeCryptKey, *keySize);
         }
         bzero(&vek, sizeof(vek));