Index: ntoskrnl/ob/oblife.c =================================================================== --- ntoskrnl/ob/oblife.c (révision 57355) +++ ntoskrnl/ob/oblife.c (copie de travail) @@ -1429,7 +1429,7 @@ POBJECT_HEADER ObjectHeader = NULL; POBJECT_HANDLE_ATTRIBUTE_INFORMATION HandleFlags; POBJECT_BASIC_INFORMATION BasicInfo; - ULONG InfoLength; + ULONG InfoLength = 0; PVOID Object = NULL; NTSTATUS Status; KPROCESSOR_MODE PreviousMode = ExGetPreviousMode(); Index: ntoskrnl/ob/oblink.c =================================================================== --- ntoskrnl/ob/oblink.c (révision 57355) +++ ntoskrnl/ob/oblink.c (copie de travail) @@ -595,7 +595,12 @@ ExAllocatePoolWithTag(PagedPool, CapturedLinkTarget.MaximumLength, TAG_SYMLINK_TARGET); - if (!SymbolicLink->LinkTarget.Buffer) return STATUS_NO_MEMORY; + if (!SymbolicLink->LinkTarget.Buffer) + { + /* Dereference the symbolic link object and fail */ + ObDereferenceObject(SymbolicLink); + return STATUS_NO_MEMORY; + } /* Copy it */ RtlCopyMemory(SymbolicLink->LinkTarget.Buffer, Index: ntoskrnl/ob/obsdcach.c =================================================================== --- ntoskrnl/ob/obsdcach.c (révision 57355) +++ ntoskrnl/ob/obsdcach.c (copie de travail) @@ -427,7 +427,7 @@ *OutputSecurityDescriptor = &SdHeader->SecurityDescriptor; /* Free anything that we may have had to create */ - if (NewHeader) ExFreePool(NewHeader); + if (NewHeader) ExFreePoolWithTag(NewHeader, TAG_OB_SD_CACHE); return STATUS_SUCCESS; } Index: ntoskrnl/ob/obsecure.c =================================================================== --- ntoskrnl/ob/obsecure.c (révision 57355) +++ ntoskrnl/ob/obsecure.c (copie de travail) @@ -217,7 +217,7 @@ { POBJECT_HEADER ObjectHeader; POBJECT_TYPE ObjectType; - PSECURITY_DESCRIPTOR SecurityDescriptor; + PSECURITY_DESCRIPTOR SecurityDescriptor = NULL; BOOLEAN SdAllocated; BOOLEAN Result = TRUE; ACCESS_MASK GrantedAccess = 0; @@ -280,7 +280,7 @@ { POBJECT_HEADER ObjectHeader; POBJECT_TYPE ObjectType; - PSECURITY_DESCRIPTOR SecurityDescriptor; + PSECURITY_DESCRIPTOR SecurityDescriptor = NULL; BOOLEAN SdAllocated; BOOLEAN Result; ACCESS_MASK GrantedAccess = 0; @@ -338,7 +338,7 @@ { POBJECT_HEADER ObjectHeader; POBJECT_TYPE ObjectType; - PSECURITY_DESCRIPTOR SecurityDescriptor; + PSECURITY_DESCRIPTOR SecurityDescriptor = NULL; BOOLEAN SdAllocated; BOOLEAN Result; ACCESS_MASK GrantedAccess = 0; Index: ntoskrnl/po/power.c =================================================================== --- ntoskrnl/po/power.c (révision 57355) +++ ntoskrnl/po/power.c (copie de travail) @@ -79,11 +79,11 @@ PIO_STACK_LOCATION IrpSp; PIRP Irp; NTSTATUS Status; - + KeInitializeEvent(&Event, NotificationEvent, FALSE); - + Irp = IoBuildSynchronousFsdRequest(IRP_MJ_POWER, DeviceObject, NULL, @@ -91,13 +91,14 @@ NULL, &Event, &IoStatusBlock); - + if (!Irp) return STATUS_INSUFFICIENT_RESOURCES; + IrpSp = IoGetNextIrpStackLocation(Irp); IrpSp->MinorFunction = IRP_MN_QUERY_POWER; IrpSp->Parameters.Power.Type = SystemPowerState; IrpSp->Parameters.Power.State.SystemState = SystemState; IrpSp->Parameters.Power.ShutdownType = PowerAction; - + Status = PoCallDriver(DeviceObject, Irp); if (Status == STATUS_PENDING) { @@ -108,7 +109,7 @@ NULL); Status = IoStatusBlock.Status; } - + return Status; } @@ -120,11 +121,11 @@ PIO_STACK_LOCATION IrpSp; PIRP Irp; NTSTATUS Status; - + KeInitializeEvent(&Event, NotificationEvent, FALSE); - + Irp = IoBuildSynchronousFsdRequest(IRP_MJ_POWER, DeviceObject, NULL, @@ -132,13 +133,14 @@ NULL, &Event, &IoStatusBlock); - + if (!Irp) return STATUS_INSUFFICIENT_RESOURCES; + IrpSp = IoGetNextIrpStackLocation(Irp); IrpSp->MinorFunction = IRP_MN_SET_POWER; IrpSp->Parameters.Power.Type = SystemPowerState; IrpSp->Parameters.Power.State.SystemState = SystemState; IrpSp->Parameters.Power.ShutdownType = PowerAction; - + Status = PoCallDriver(DeviceObject, Irp); if (Status == STATUS_PENDING) { @@ -149,7 +151,7 @@ NULL); Status = IoStatusBlock.Status; } - + return Status; }