[systemd-devel] How to handle untagged hexvalues in systemd code?

Lennart Poettering lennart at poettering.net
Tue Jan 16 10:41:21 UTC 2018


On Mo, 15.01.18 18:44, Olaf Hering (olaf at aepfle.de) wrote:

> I submitted a correct and tested patch via
> https://github.com/systemd/systemd/pull/7581, which was using
> sscanf("0028f0", "%x",&val). During discussion I was soft-forced to
> use systemd helper functions. These (strtoull based) helpers expect
> "0x...", which sysfs does not provide. As a result 575e658 is
> broken. My fault, I did not doublecheck the updated submission...
> 
> So, how is one supposed to handle untagged hexvalues? Invent a new
> helper, or prepend "0x" if missing, or just use sscanf?

We have very few cases of that so far, hence there is no
helper. Adding a helper is probably worth it if there are multiple
users and until then sscanf() is fine, as long as it is done safely
with all parsing error caught.

We have the safe_atou() and friends mostly because parsing things in C
with strtoul() is really nasty if you want to catch all errors
properly. libc strtoul() is not precisely an easy-to-use API.

Lennart

-- 
Lennart Poettering, Red Hat


More information about the systemd-devel mailing list