Vincent Rabaud
45102247a8
Use proper image dependency targets now that CMake >= 3.16
...
This removes some include_directories that can create confusion on
OSX.
BUG: 470992419
Change-Id: I213c8b0482be6bce845852773557f92821e897d3
2025-12-24 15:10:53 +01:00
Vincent Rabaud
d52b9ee34d
Be consistent with the includes in non-src folders.
...
BUG: 470992419
Change-Id: I55618205da7dcfe17d96a7c3ee69d924a63d1acf
2025-12-23 16:54:48 +01:00
Vincent Rabaud
9b78419750
Fix potential memory leak for big rescaling
...
That only happens when the rescaling buffer from WebPRescalerInit
does not fit in a size_t, so on 32-bit or less.
Change-Id: I18a79106d0c47f7ddf130099dde0fec6f2a2301d
2025-12-23 10:59:13 +01:00
Vincent Rabaud
d078f7d201
Fix fuzzer when one scaled dimension is 0
...
BUG: 470038406
Change-Id: If64f841bde21ca80822d6c4e0f228b7d00f326d7
2025-12-19 09:58:16 +00:00
Vincent Rabaud
a9f3b447ae
Merge "Get code to compile with older VS with partial AVX2 support." into main
2025-12-12 04:24:11 -08:00
James Zern
d67d73bf5a
idec_dec.c: add missing WEBP_SELF_ASSIGN
...
Fixes coverity / static analysis warning:
Assigning "dec->alpha_data_size" to itself has no effect.
Missed in:
b81f4620 Fix -fbounds-safety errors in `dec`.
Change-Id: I0aa447dff47f1687bf1ef358a9d53f893b64bf68
2025-12-09 12:18:25 -08:00
Vincent Rabaud
d7af7dd7cb
Get code to compile with older VS with partial AVX2 support.
...
This is inspired by
https://aomedia.googlesource.com/aom/+/b2f80f721fe87547e3bae73be550e3d75ba478ad/aom_ports/msvc.h#57
This was reported on https://github.com/opencv/opencv/pull/28139
Change-Id: Iad38d842ef1647fc1a578a851b3593281855e30e
2025-12-09 13:25:50 +01:00
Vincent Rabaud
934b7d7448
Merge "Clarify dc[k]^ range" into main
2025-12-02 12:22:21 -08:00
James Zern
2d5c82155a
Merge "Fix -fbounds-safety errors in dec." into main
2025-12-02 09:51:09 -08:00
Vincent Rabaud
507c372276
Clarify dc[k]^ range
...
Change-Id: If748958c8dd4f82bbef974aa4f40a4d0a758d10b
2025-12-02 18:05:43 +01:00
Vincent Rabaud
4c7aaa92e4
More fuzzer fixes
...
- allow for malloc to return 0.
- do not go through big resizing
BUG: oss-fuzz:4667732529577984, oss-fuzz:6595689259008000
Change-Id: I56892bbba2fbcf5d1ceede2b56ea34612f8d13ac
2025-12-02 13:54:25 +01:00
Arman Hasanzadeh
b81f462050
Fix -fbounds-safety errors in dec.
...
This change adds -fbounds-safety annotations to several pointers in the
`dec` directory. These annotations resolve errors and warnings that
arose from interactions with annotated functions in `utils`.
Bug: 465196207
Change-Id: I89554b85b19cd068c619c3ed2a31c36eb93d552a
2025-12-01 15:02:47 -08:00
Vincent Rabaud
f776da44f4
Make uint32_t multiplication explicitly uint64_t
...
There cannot be any overflow in practice, this is to quiet some
analyzer.
Change-Id: Ib76fc13aa27b72063ba6032f659987f47bb57117
2025-12-01 12:59:27 +01:00
Vincent Rabaud
4fc426c461
Force bash for fuzz tests
...
Change-Id: I73777b3285354d26a65b70665967d6f82d6a4db4
2025-11-28 09:52:32 +01:00
Vincent Rabaud
770ca097e7
Remove the other -rss_limit_mb= used by oss-fuzz
...
Change-Id: I21689d30c2665138d38ec13ff71a209e46ca3fea
2025-11-27 10:02:32 +01:00
Vincent Rabaud
488f26bc16
Do not have OOM be fuzzer errors
...
BUG: 463791651, 463746806, 463795905
Change-Id: Ie2272ec1f27ae3140306a9c91abec2bb4c9d42d9
2025-11-26 14:52:11 +01:00
Vincent Rabaud
3532891de4
Fix potential overflow in imageio
...
BUG: 836597550
Change-Id: I7c00f4cb831142113e6c27e632f989e8cd84ef76
2025-11-25 12:42:39 +01:00
Vincent Rabaud
a3dddea9b5
Prevent some overflow during MBAnalyze
...
kThreshold * m2 can be 17 * (16*(16*255)^2) in the worst case.
Change-Id: Id9d82a7f2f933273bb04e7df37aaf724b3a69f43
2025-11-24 16:17:58 +01:00
Vincent Rabaud
5465220b03
Add arbitrary data for the encoding fuzzers
...
Change-Id: Ia264e0edf742630f45d22670f5e1ead140036046
2025-11-24 16:16:18 +01:00
Vincent Rabaud
4ebf0b0ac8
Properly validate picture dimensions for overflow
...
Change-Id: I42735f6c651d0bb768b9c727209a7b5fe991b456
2025-11-21 09:08:15 +01:00
James Zern
df24b5632e
Merge "VP8ApplyNearLossless: skip alloc for small images" into main
2025-11-18 11:52:34 -08:00
James Zern
3697df15d7
Merge "io_dec,CustomSetup: rm unnecessary 'is_alpha' check" into main
2025-11-18 11:52:24 -08:00
Vincent Rabaud
acedec6860
Update the emscripten instructions
...
More info at:
https://wiki.libsdl.org/SDL2/README-emscripten#building-sdlemscripten
Change-Id: Iaec18c6f540d0753ef07327f4a7ecde7d86cea12
2025-11-18 19:09:01 +01:00
Andrzej Hunt
41c2a8d2f5
VP8ApplyNearLossless: skip alloc for small images
...
Change-Id: I193513c1fbbc5fab571014d3cfd3319d671d8949
2025-11-17 15:12:06 +00:00
James Zern
05934f93b9
io_dec,CustomSetup: rm unnecessary 'is_alpha' check
...
`WebPIoInitFromOptions()` doesn't distinguish between `MODE_YUV` and
`MODE_YUVA`, only RGB vs YUV. Removing this check also removes a
confusing mix up between `MODE_YUV` and `MODE_YUVA` in the conditional.
Change-Id: Id46b21785433aded733ad914941398b0bd5d6b8f
2025-11-11 16:18:13 -08:00
Vincent Rabaud
2760d87827
Do not index costs out of bounds.
...
In practice, the value is never read.
Change-Id: Idb33dad2581e597bd5e5b5c9414ae2c34f3a8ef2
2025-11-04 10:24:45 +01:00
Vincent Rabaud
2d16e4ac95
Use ptrdiff_t to avoid potential int overflow
...
Change-Id: I2a32506ee2e987b6b5a20a3f472af21b946289c3
2025-11-04 09:23:43 +01:00
Vincent Rabaud
2a755e7eec
Set alpha to 0xff in ImportYUVAFromRGBA by default
...
Change-Id: I09d69aff23d990bf171cc0afaec0fd60e3ba9365
2025-10-30 11:40:58 +01:00
James Zern
d1e9c93961
Merge "Convert additional memcpy/memsets to unsafe variants" into main
2025-10-28 20:54:15 -07:00
Vincent Rabaud
160ad07632
Add a fuzzer for WebPDecoderConfig
...
Change-Id: I156304ae361c5f18ec2705adec51dae51ff91f2e
2025-10-28 11:28:23 +01:00
Vincent Rabaud
4efd97e825
Shorten sclip1
...
The maximum range for sclip1 is at:
https://chromium.googlesource.com/webm/libwebp/+/refs/tags/v1.6.0/src/dsp/dec.c#521
where:
const int a = VP8ksclip1[3 * (q0 - p0) + VP8ksclip1[p1 - q1]];
3 * 255 + 127 = 892 and 3 * -255 - 128 = -893
Change-Id: I13f73c28fad4429c1ba69b87cd6f6c0e97f40771
2025-10-28 10:09:02 +01:00
mxms
ea3f3f7c00
Convert additional memcpy/memsets to unsafe variants
...
Bug: 432511225
Change-Id: I5ea1fcc2e4884985bec0b3a7618dd75dbd6c21f8
2025-10-28 05:40:19 +00:00
Vincent Rabaud
3eb58b56d9
Fix clipping arrays
...
Those arrays are only used for filtering
Change-Id: Ic609222b51ba8509fca5f1a3119213d3e78ca6ad
2025-10-27 10:51:41 +01:00
mxms
ed05414168
Prepare decoder and demuxer for -fbounds-safety adoption
...
Change memcpy|memset|memchr to unsafe variants
Add WEBP_ASSUME_UNSAFE_INDEXABLE_ABI to relevant files. I've also added
it to lossless.h, yuv.h, and decode.h as they're all imported by code in
dec, which will have -fbounds-safety annotations.
Bug: 432511225
Change-Id: I3011a0a56633b8437ead31607c7ac5f6311fa846
2025-10-25 13:40:45 -07:00
James Zern
9f14c2605b
Merge "Move non-abi breaking annotations into types.h" into main
2025-10-22 12:53:30 -07:00
mxms
0ee1a5f4b0
Move non-abi breaking annotations into types.h
...
By moving non-abi breaking annotations into types.h, this enables us to
mark more of libwebp as unsafe to allow better interop with struct
members which default to __single.
Change-Id: I54b78f68581e41389538f7332989c04c2e02ccc7
Bug: webp:432511225
2025-10-22 01:53:59 +00:00
James Zern
3066c7ea59
Merge changes I32b33cb9,I118aac97 into main
...
* changes:
tests/fuzzer: apply clang-format
.clang-format: add DerivePointerAlignment: false
2025-10-21 11:27:10 -07:00
Vincent Rabaud
23359a1039
Process rows properly in case of YUV cropping on odd lines.
...
Bug: 447845730,447958064,448792425,449246999,449546226,449781448
Change-Id: Ie8a855b5410019ec1f618fa4d4705ae3984db444
2025-10-10 11:03:26 +02:00
Vincent Rabaud
61791c774a
Expand the 64-bit platforms for VP8LBitWriter
...
The defines are the same as the ones in bit_reader_utils.h
Change-Id: I3782425baf7dfb861dcc39d7683fba5c15e33f84
2025-10-10 09:22:25 +02:00
mxms
e40787da71
Add WEBP_UNSAFE_MEMCMP helper
...
Memcmp is used in other parts of libwebp which we didn't see yet in
webputils. The places that use memcp use it as an expression, (i.e. if
(memcmp(...)), so explicitly do not wrap in do { } while (0) guard.
Change-Id: Ifa972640bae052717a1af02112c62dc197dfe0f1
2025-10-09 16:38:41 +00:00
Vincent Rabaud
9636d8e04f
Restrict MSAN fixes to old clang versions
...
Bug: 448420960
Change-Id: Ia9cb762bc9f5d9415a28ddebaf39855c46a51768
2025-10-09 10:19:04 +02:00
clang-format
bbbf29a9b6
tests/fuzzer: apply clang-format
...
Change-Id: I32b33cb911fe828b0c3f777e4e35fcd7b65068fb
2025-10-08 19:02:55 -07:00
James Zern
7a155ce913
.clang-format: add DerivePointerAlignment: false
...
This will become the default in later versions of clang-format with
--style=Google. This will normalize the pointer alignment in the
fuzzers.
Change-Id: I118aac9758ab2a1af82a907ee61f4a7af88209b1
2025-10-08 18:59:17 -07:00
James Zern
64dce5d826
api.md: mention 'exact' default in WebPEncodeLossless*
...
Note that config.exact defaults to 0 and point users to WebPEncode() if
the default isn't acceptable. This duplicates the comment from encode.h
for visibility. Follow up to:
6d2e11ec encode.h: mention 'exact' default in WebPEncodeLossless*
Bug: 449296530
Change-Id: Iba44dbcbb179bd80ea0a6b9e129b2c7e0a406916
2025-10-06 15:23:36 -07:00
Vincent Rabaud
1f0a494e80
Fix 32 bit writing in VP8LPutBits
...
>>32 is undefined. VP8LPutBits is never called for 32 bits in the
pipeline though.
Change-Id: I11f0a4c15380ab94213adab25f06b2ab73e73519
2025-10-01 09:15:34 +02:00
Vincent Rabaud
0e5f4ee3de
Fix endianness with CMake.
...
Original patch from C. Neidahl.
Change-Id: I734d7cb33c3da5abb8d4faf074277dba53b37147
2025-09-29 22:26:10 +02:00
Vincent Rabaud
158b533d3e
Fix potential integer overflow
...
Bug: 447862936
Change-Id: I58129333520facf213b7961a284e07fe04a0e55e
2025-09-29 21:11:03 +02:00
Vincent Rabaud
13f42ea2d2
Remove dead code
...
rg==NULL is dealt with above. Reported by Coverity.
Change-Id: I703698efaf9d5dd8cfd16309d3d83040a76c0749
2025-09-29 15:29:50 +02:00
Vincent Rabaud
74f6afd3e6
Merge "Have lossless use ImportYUVAFromRGB" into main
2025-09-27 04:56:31 -07:00
Vincent Rabaud
0d14d84bdb
Have lossless use ImportYUVAFromRGB
...
There was a duplicated functionality with a lower quality which
could lead to decoded lossless WebP to YUV being different from
lossless WebP to PNG to YUV.
The rescaler is not using it yet.
Bug: 432241412
Change-Id: Id794880957935b69729d4b34ae453551d13364dc
2025-09-24 16:43:02 +02:00