logical AND with Constant is not logically correct
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
libmng (Ubuntu) |
New
|
Undecided
|
Unassigned |
Bug Description
libmng version: 2.0.3
In file libmng_pixels.c, there are many functions; those are performing bit format conversion (8bit format to 16 bit, 16bit to 8bit etc.). For format conversion function are doing logical ANDing with Constant that is not logically correct.
e.g. At #15692: *(pDstline+1) = (mng_uint8)(iR && 0xFF);
In above example due to Logical ANDing(&&) in place of bitwise ANDing(&) there is a loss of information stored in LSB’s of iR.
Now, Replaced logical ANDing operator (&&) with bitwise ANDing operator(&)
After correction:
At #15692: *(pDstline+1) = (mng_uint8)(iR & 0xFF);
Many similar changes are applied in libmng_pixel.c, For detail information please check the attached patch file.
The attachment "libmng_ pixels. patch" seems to be a patch. If it isn't, please remove the "patch" flag from the attachment, remove the "patch" tag, and if you are a member of the ~ubuntu-reviewers, unsubscribe the team.
[This is an automated message performed by a Launchpad user owned by ~brian-murray, for any issues please contact him.]