po 9. 3. 2026 v 20:58 odesÃlatel Wander Lairson Costa <[email protected]> napsal: > > The parse_ns_duration() function currently uses prefix matching for > detecting time units. This approach is problematic as it silently > accepts malformed strings such as "100nsx" or "100us_invalid" by > ignoring the trailing characters, leading to potential configuration > errors. > > Introduce a match_time_unit() helper that checks the suffix matches > exactly and is followed by either end-of-string or a ':' delimiter. > The ':' is needed because parse_ns_duration() is also called from > get_long_ns_after_colon() when parsing SCHED_DEADLINE priority > specifications in the format "d:runtime:period" (e.g., "d:10ms:100ms"). > > A plain strcmp() would reject valid deadline strings because the suffix > "ms" is followed by ":100ms", not end-of-string. Similarly, > strncmp_static() would fail because ARRAY_SIZE() includes the NUL > terminator, making it equivalent to strcmp() for this comparison. >
This fixes both the command and the corresponding unit test, thanks! > The match_time_unit() helper solves both problems: it rejects malformed > input like "100msx" while correctly handling the colon-delimited > deadline format. > It now fails to reject this kind of input: $ rtla timerlat -P d:10ms:100ms:somethingsomething // this is also parsed as valid But that can be fixed in a future patchset, perhaps together with also migrating parse_seconds_duration() from prefix matching to match_time_unit() as well. That would prevent the same imprecise parsing issue for -d: $ rtla timerlat -d 1somethingsomething // this is also parsed as valid Tomas
