tdf#114635: fix TWAIN on Windows 64 bit
DG_IMAGE / DAT_IMAGENATIVEXFER / MSG_GET is documented [1] to take a handle as its pData parameter, but said to be TW_UINT32. The latter is false, because it returns a Windows handle to DIB to that parameter, and it has 64 bits on 64-bit Windows systems. A crash resulted when wrong value attempted to be GlobalLock'd, pBIH was nullptr, and was dereferenced. Also, in some circumstances, duplicate MSG_XFERREADY might arrive sequentially; the second one arrives when current state has already changed value, and thus TWAIN_EVENT_QUIT used to be sent, resulting in mpImpTwain destroyed before TWAIN_EVENT_XFER processed. This had lead to absent result of scan. [1] http://www.twain.org/wp-content/uploads/2016/03/TWAIN-2-Spec.pdf Change-Id: Ic03fe7681f6003e5fda0c071be181696f9bc866a Reviewed-on: https://gerrit.libreoffice.org/46944Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Mike Kaganski <mike.kaganski@collabora.com>
Showing
Please
register
or
sign in
to comment