shared-mime-info endianness issue

David Faure faure at kde.org
Thu Dec 29 16:44:21 UTC 2016


On jeudi 29 décembre 2016 17:26:12 CET Bastien Nocera wrote:
> On Mon, 2016-12-26 at 13:35 +0100, David Faure wrote:
> > The magic for application/x-java-keystore says
> > <match type="host32" value="0xfeedfeed" offset="0"/>
> > 
> > And the test file test.jks starts with 0xFE, 0xED, 0xFE, 0xED.
> > On a little-endian machine this leads to a value of 0xedfeedfe
> > when read as a single 32-bit value.
> > 
> > So this does not match. Am I missing something?
> > 
> > I found this with an implementation which does not go through
> > mime.cache but 
> > reads directly from the XML, so the fact that xdgmime works on this
> > file might 
> > indicate a bug related to the mime.cache intermediary?
> > 
> > http://mindprod.com/jgloss/cacerts.html says "The first four
> > signature bytes of 
> > a Sun cacerts file in hex are FEEDFEED." so I wonder if this rule
> > should say 
> > big32 instead of host32. With big32, both the s-m-i testsuite and my 
> > implementation (which uses the same testsuite) pass.
> > 
> > Everything else passes, which makes me wonder if this is the only
> > "host" match 
> > actually used by the test suite ;)
> > Actually, if it's not, then I have to assume the test suite is known
> > broken on 
> > big-endian machines, given that any "host" match would fail there,
> > unless we 
> > put two versions of the file in the testsuite (one generated for
> > little-endian 
> > machines and one generated for big-endian machines). But apparently
> > this isn't 
> > needed yet, if I'm right that the java keystore magic should say
> > big32.
> 
> This looks like a straight up bug in the definition.

We agree, but that means there's also a bug in the reference implementation, 
because it should NOT match test.jks, and it does.

> Given that the test suite only runs from git checkouts, and that
> developers with big endian machines are pretty thin on the ground, this
> likely never got tested.

Sure. But the fact that it passes on a little endian machine given the broken 
definition, looks to me like a bug in update-mime-database or in xdgmime.
Any chance you can look into it ? I'm not great at reading glib code...

> Feel free to file a bug and attach a patch for those wrong definitions.

OK will do (I also have push access, but reviews are good)

Thanks,

-- 
David Faure, faure at kde.org, http://www.davidfaure.fr
Working on KDE Frameworks 5



More information about the xdg mailing list