Skip to content

Open Image Denoise v2.5.1

Latest

Choose a tag to compare

@atafra atafra released this 18 Aug 17:04
  • Fixed integer overflows which could cause out-of-bounds reads or writes
    instead of an error if a very large byte offset was passed to
    oidnReadBuffer, oidnWriteBuffer or oidnSetFilterImage, or a very large
    pixel or row stride was passed to oidnSetFilterImage or
    oidnSetSharedFilterImage
  • Fixed oidnSetSharedFilterImage accepting a byte offset large enough to
    make the address of the image overflow instead of returning an error
  • Fixed oidnSetFilterImage and oidnSetSharedFilterImage truncating the
    width and height of the image to 32 bits, which could silently denoise a
    much smaller image instead of returning an error
  • Fixed a crash if a null array of command queues was passed to
    oidnNewMetalDevice, which now returns an error instead
  • Fixed leaking the imported memory object on CUDA and HIP devices if
    oidnNewSharedBufferFromFD or oidnNewSharedBufferFromWin32Handle failed
    after the handle had already been imported
  • Fixed oidnReadBuffer and oidnWriteBuffer failing with an out-of-memory
    error on Metal devices if the specified byte size was 0
  • Fixed a signed integer overflow when denoising very large single-channel
    images, close to the maximum supported number of pixels
  • Fixed out-of-bounds reads and crashes caused by insufficient validation of
    the weights blob set with oidnSetSharedFilterData, which could occur if
    the blob was corrupted or malicious
  • Fixed a crash (division by zero) if the weights blob set with
    oidnSetSharedFilterData contained a tensor with a zero dimension
  • Fixed changes to other filter parameters being discarded when setting an
    empty data parameter with oidnSetSharedFilterData, which could cause the
    filter to be executed with an outdated model, corrupting the output image or
    crashing
  • Fixed crashes and incorrect output if committing a filter failed due to
    running out of memory, which could also break the other filters of the
    device. Executing such a filter now returns an error instead, and the filter
    can be recovered by committing it again