| Age | Commit message (Collapse) | Author | Files | Lines | |
|---|---|---|---|---|---|
| 31 hours | fix(notify): cap image dimensions and rank icon_data last | Danilo M. | 1 | -3/+27 | |
| A notification is untrusted input. RawImage.PNG computed stride*(Height-1)+Width*Channels in int, so Width=Height=2^31-1 with RowStride=0 wrapped the length expression negative, slipped past the guard, and reached image.NewRGBA, which panics. The D-Bus call path has no recover, so one malformed Notify killed the daemon. Cap Width/Height at 1<<16 before any multiplication and compute the required byte count in int64. image-data, image-path and the deprecated icon_data were read as one tier, with icon_data ahead of image-path, inverting the spec's order. Split the deprecated key into IconDataFromHints and apply tier 1 (image-data/image_data), then image-path, then icon_data. Raw handling is unchanged: encode, hold pendingImage, WriteImage after Add, SetImage. | |||||
| 32 hours | test(notify): actually exercise rowstride, 3-channel and short-data paths | Danilo M. | 1 | -7/+46 | |
| The stride test was Height 1, so the second row and the padding beyond the used pixels were never reached and rowstride was untested despite the comment. It is now 2x2 with RowStride 12 and asserts a pixel in row 1, which fails if the stride is ignored (verified by mutation). Add the 3-channel opaque encode and the short-data rejection, both explicit requirements of the image-data contract. | |||||
| 32 hours | feat(notify): parse the image hints and encode them to PNG | Danilo M. | 1 | -0/+101 | |
| image-data (and the deprecated icon_data) is the (iiibiiay) struct; the PNG encoder honours rowstride and both 3- and 4-channel data. The path and data readers are pure, so the service can apply the spec's priority and the store stays free of image handling. | |||||
