mirror of
				https://git.suyu.dev/suyu/suyu
				synced 2025-11-03 16:39:01 -06:00 
			
		
		
		
	nvhost_ctrl_gpu: Only read the input parameters if they are actually there.
Passing nullptr to memcpy is undefined behavior.
This commit is contained in:
		@@ -97,7 +97,9 @@ u32 nvhost_ctrl_gpu::GetTPCMasks(const std::vector<u8>& input, std::vector<u8>&
 | 
			
		||||
u32 nvhost_ctrl_gpu::GetActiveSlotMask(const std::vector<u8>& input, std::vector<u8>& output) {
 | 
			
		||||
    LOG_DEBUG(Service_NVDRV, "called");
 | 
			
		||||
    IoctlActiveSlotMask params{};
 | 
			
		||||
    std::memcpy(¶ms, input.data(), input.size());
 | 
			
		||||
    if (input.size() > 0) {
 | 
			
		||||
        std::memcpy(¶ms, input.data(), input.size());
 | 
			
		||||
    }
 | 
			
		||||
    params.slot = 0x07;
 | 
			
		||||
    params.mask = 0x01;
 | 
			
		||||
    std::memcpy(output.data(), ¶ms, output.size());
 | 
			
		||||
@@ -107,7 +109,9 @@ u32 nvhost_ctrl_gpu::GetActiveSlotMask(const std::vector<u8>& input, std::vector
 | 
			
		||||
u32 nvhost_ctrl_gpu::ZCullGetCtxSize(const std::vector<u8>& input, std::vector<u8>& output) {
 | 
			
		||||
    LOG_DEBUG(Service_NVDRV, "called");
 | 
			
		||||
    IoctlZcullGetCtxSize params{};
 | 
			
		||||
    std::memcpy(¶ms, input.data(), input.size());
 | 
			
		||||
    if (input.size() > 0) {
 | 
			
		||||
        std::memcpy(¶ms, input.data(), input.size());
 | 
			
		||||
    }
 | 
			
		||||
    params.size = 0x1;
 | 
			
		||||
    std::memcpy(output.data(), ¶ms, output.size());
 | 
			
		||||
    return 0;
 | 
			
		||||
@@ -116,7 +120,11 @@ u32 nvhost_ctrl_gpu::ZCullGetCtxSize(const std::vector<u8>& input, std::vector<u
 | 
			
		||||
u32 nvhost_ctrl_gpu::ZCullGetInfo(const std::vector<u8>& input, std::vector<u8>& output) {
 | 
			
		||||
    LOG_DEBUG(Service_NVDRV, "called");
 | 
			
		||||
    IoctlNvgpuGpuZcullGetInfoArgs params{};
 | 
			
		||||
    std::memcpy(¶ms, input.data(), input.size());
 | 
			
		||||
 | 
			
		||||
    if (input.size() > 0) {
 | 
			
		||||
        std::memcpy(¶ms, input.data(), input.size());
 | 
			
		||||
    }
 | 
			
		||||
 | 
			
		||||
    params.width_align_pixels = 0x20;
 | 
			
		||||
    params.height_align_pixels = 0x20;
 | 
			
		||||
    params.pixel_squares_by_aliquots = 0x400;
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user