Skip to Content
AI agents & assistants — machine-readable index at /llms.txt
Contributions

Upstream Contributions

Work in other people’s repositories. Every entry links to the project’s own issue tracker, so the record can be read there rather than taken on trust — including the parts written by the maintainers, not by me.


upower — composite battery reported above 100%

upower  is the daemon that abstracts power devices for Linux desktop environments.

On a dual-battery laptop the composite DisplayDevice reported 204%. One battery’s firmware reports energy_full=0; upower summed the current energy of both batteries while that zero entered the sum of full energy, so the ratio was computed against half the capacity that was actually there.

Reported as issue #336  on January 5, 2026, with the root cause traced to up_daemon_update_display_battery() in src/up-daemon.c — including the assumption stated in the source itself:

ASSUMPTION: If one battery has energy data, then all batteries do

The report carried the system’s own data, the arithmetic, and a proposed patch. Hardware: Dell Latitude 7330 Rugged Extreme, upower 1.90.3, BIOS 1.40.0.

Fixed upstream on July 30, 2026 in commit b8e567a, written by maintainer Kate Hsuan (Red Hat). The fix landed a layer lower than the report proposed — in up-device-supply-battery, falling back to energy_full_design when energy_full is invalid. The commit carries the trailer Reported-by: Dmitrii Zatona <dmitrii@zatona.dev>.


asn1-rs — fuzzing harness and four defects in the legacy parse route

asn1-rs  is an ASN.1 implementation for Rust.

At the time of this work the crate shipped no fuzzing harness, although its README lists fuzzing among the project’s goals. I wrote a libFuzzer harness targeting the BER/DER parse entry points and filed two reports covering four defects in the legacy FromDer route:

  • bool::from_der indexes the first content octet without checking the length, so a zero-length TLV crashes the parser. The ordering is what makes it reachable: check_constraints runs before TryFrom<Any> validates the tag.
  • decode_real accumulates a REAL mantissa in i64, while X.690 §8.5.7.5 defines N as unsigned. A conforming positive value decodes as negative — silently, with no error and no diagnostic. Affects 0.1.0 through 0.7.2 and both 0.8.0 betas.

Patches were submitted for the first report and for two of the three defects in the second.

Issues #142  and #143 ; pull requests #144 , #145 , #146 . Status: open — not merged.

Last updated on