On Thu, Aug 06, 2015 at 06:37:29PM +0200, Michael Schwendt wrote:
On Thu, 06 Aug 2015 13:15:02 +0000, Igor Gnatenko wrote:
> We discussed with Jan Silhan yesterday. It looks like something broken in
> createrepo/createrepo_c in F22. So it's not dnf/yum/hawkey/libsolv issue.
>
> LOG:
https://ignatenkobrain.fedorapeople.org/epoch_bug.log
>
> Also CCing Jan.
Wow. createrepo is also affected.
createrepo_c uses strtol() to accept only numbers as Epoch. Anything
else strol() cannot parse is ignored and defaults to "epoch=0" in the
repo metadata. This means it can break for typos as well as, not just
an undefined macro used as Epoch in a versioned dep.
It couldn't find a comment in the source that would tell whether this
is by design.
Does this really matter? If it's by design, then the design is
wrong.
If not, than the implementation is wrong.
(Nevertheless, I think it's not by design, but because strtol() is
so hard to use correctly. I think it's fair to say to it is designed
to be used incorrectly. Systemd has a bunch of wrappers for strto*()
that try to answer the question "was the conversion successful?" [1],
and it's sad that they are needed and that they are so complex.)
[1]
https://github.com/systemd/systemd/blob/73974f6768e#L406