Loading...
iokit/Kernel/RootDomainUserClient.cpp xnu-3248.50.21 xnu-3789.21.4
--- xnu/xnu-3248.50.21/iokit/Kernel/RootDomainUserClient.cpp
+++ xnu/xnu-3789.21.4/iokit/Kernel/RootDomainUserClient.cpp
@@ -299,10 +299,13 @@
                     (uint32_t *)&arguments->scalarOutput[0]);
             break;
         case kPMSetMaintenanceWakeCalendar:
-            ret = this->secureSetMaintenanceWakeCalendar(
-                    (IOPMCalendarStruct *)arguments->structureInput,
-                    (uint32_t *)&arguments->structureOutput);
-            arguments->structureOutputSize = sizeof(uint32_t);
+            if ((arguments->structureInputSize >= sizeof(IOPMCalendarStruct)) &&
+                (arguments->structureOutputSize >= sizeof(uint32_t) )) {
+                ret = this->secureSetMaintenanceWakeCalendar(
+                                                             (IOPMCalendarStruct *)arguments->structureInput,
+                                                             (uint32_t *)&arguments->structureOutput);
+                arguments->structureOutputSize = sizeof(uint32_t);
+            }
             break;
 
         case kPMSetUserAssertionLevels: