navidrome/core/artwork
Deluan 19d89143f7 fix(artwork): compare the pixel cap without multiplying
Defence in depth rather than a live hole: the reported crafted PNG
(0xffffffff square) never reaches the multiplication, because
image/png rejects it at DecodeConfig, and the largest dimensions any
supported format can declare — 2^30-1 for PNG, 16-bit for JPEG and
GIF, 14-bit for WebP — cannot overflow the int64 product.

decodeCapped is format-agnostic though, so the guard should not depend
on a decoder's own limits staying where they are. Comparing by division
holds for any dimensions a decoder might report, and non-positive ones
are now rejected outright.
2026-07-25 15:22:22 -04:00
..
blurhash feat(artwork): import blurhash encoder from #5797 2026-07-22 15:53:32 -04:00
e2e fix(artwork): treat an unreadable artist-folder image as a failure 2026-07-25 14:58:19 -04:00
agent_images.go feat(artwork): log external image-lookup failures at debug 2026-07-24 18:15:07 -04:00
agent_images_test.go fix(artwork): make the pool-split worker test race-clean 2026-07-25 14:22:45 -04:00
animation.go feat(artwork): preserve animated image artwork during resize (#5184) 2026-03-13 18:11:12 -04:00
animation_test.go feat(artwork): preserve animated image artwork during resize (#5184) 2026-03-13 18:11:12 -04:00
artwork_suite_test.go refactor(artwork): delete the legacy reader chain, cache warmer, and provider image methods 2026-07-23 14:08:08 -04:00
benchmark_decode_test.go perf(artwork): improve image serving performance with WebP encoding and optimized pipeline (#5181) 2026-03-13 09:35:59 -04:00
benchmark_encode_test.go perf(artwork): improve image serving performance with WebP encoding and optimized pipeline (#5181) 2026-03-13 09:35:59 -04:00
benchmark_helpers_test.go chore: go fix 2026-05-28 22:13:05 -03:00
benchmark_pipeline_test.go feat(artwork): preserve animated image artwork during resize (#5184) 2026-03-13 18:11:12 -04:00
benchmark_tag_test.go perf(artwork): improve image serving performance with WebP encoding and optimized pipeline (#5181) 2026-03-13 09:35:59 -04:00
disc.go fix(artwork): key disc art on folder image changes, not just the album 2026-07-25 14:33:47 -04:00
disc_test.go refactor(artwork): delete the legacy reader chain, cache warmer, and provider image methods 2026-07-23 14:08:08 -04:00
folders_album.go refactor(artwork): delete the legacy reader chain, cache warmer, and provider image methods 2026-07-23 14:08:08 -04:00
folders_artist.go fix(artwork): treat an unreadable artist-folder image as a failure 2026-07-25 14:58:19 -04:00
folders_artist_test.go test(artwork): inject the unreadable source instead of chmod 2026-07-25 15:16:35 -04:00
housekeeping.go feat(artwork): make artwork re-resolution targeted, not blunt 2026-07-24 20:42:14 -04:00
housekeeping_test.go feat(artwork): make artwork re-resolution targeted, not blunt 2026-07-24 20:42:14 -04:00
image_cache.go refactor(artwork): delete the legacy reader chain, cache warmer, and provider image methods 2026-07-23 14:08:08 -04:00
image_store.go fix(artwork): make the prune sweep cancellable 2026-07-25 10:16:00 -04:00
image_store_test.go fix(artwork): make the prune sweep cancellable 2026-07-25 10:16:00 -04:00
library_fs.go fix(artwork): preserve the drive when normalizing Windows file:// library paths 2026-07-23 14:08:08 -04:00
library_fs_test.go fix(artwork): open library-backed artwork through its on-disk root 2026-07-23 14:08:08 -04:00
playlist_cover.go fix(artwork): serve a local playlist ExternalImageURL as a file-backed reference 2026-07-23 14:08:08 -04:00
processor.go fix(artwork): compare the pixel cap without multiplying 2026-07-25 15:22:22 -04:00
processor_test.go fix(artwork): compare the pixel cap without multiplying 2026-07-25 15:22:22 -04:00
prune.go fix(artwork): make the prune sweep cancellable 2026-07-25 10:16:00 -04:00
prune_test.go refactor(artwork): thread model.Kind through the artwork API 2026-07-24 16:58:23 -04:00
refresh.go refactor(artwork): thread model.Kind through the artwork API 2026-07-24 16:58:23 -04:00
resize.go feat(artwork): state-backed serving path with provisional read-through 2026-07-23 14:08:08 -04:00
resolve.go fix(artwork): treat an unreadable artist-folder image as a failure 2026-07-25 14:58:19 -04:00
resolve_test.go fix(artwork): serve a local playlist ExternalImageURL as a file-backed reference 2026-07-23 14:08:08 -04:00
serving.go fix(artwork): give full-size disc art a real ETag 2026-07-25 15:06:51 -04:00
serving_test.go fix(artwork): give full-size disc art a real ETag 2026-07-25 15:06:51 -04:00
sources.go fix(artwork): never record absent after a local I/O failure 2026-07-25 10:06:51 -04:00
sources_internal_test.go refactor(artwork): migrate readers to storage.MusicFS and add e2e suite (#5379) 2026-04-26 18:16:14 -04:00
testhelpers_test.go refactor(artwork): delete the legacy reader chain, cache warmer, and provider image methods 2026-07-23 14:08:08 -04:00
uploader.go refactor(artwork): thread model.Kind through the artwork API 2026-07-24 16:58:23 -04:00
uploader_test.go refactor(artwork): thread model.Kind through the artwork API 2026-07-24 16:58:23 -04:00
wire_providers.go refactor(artwork): move ImageUploadService to artwork.Uploader 2026-07-24 16:24:19 -04:00
worker.go fix(artwork): return undispatched items when a drain is cancelled 2026-07-25 14:39:44 -04:00
worker_soak_test.go perf(artwork): precache from the bytes just acquired 2026-07-25 11:47:40 -04:00
worker_test.go fix(artwork): return undispatched items when a drain is cancelled 2026-07-25 14:39:44 -04:00
worker_timing_test.go feat(artwork): precache on acquisition, bump on upload/radio changes, manual re-resolve API 2026-07-23 14:08:08 -04:00