[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] Re: [Xen-devel] mkelf32 uninitialized data and reproducible builds
On Mon, Aug 08, 2016 at 07:02:25PM +0000, Trammell Hudson wrote: > The xen/arch/x86/boot/mkelf32 executable is preventing Xen hypervisors > from being reproducibly built. It is using an uninitialized stack > buffer for padding after the ehdr and phdr are written to the xen file, > which leads to non-deterministic bytes in the binary. > > Additionally, the file is then compressed with gzip -9 without the > -n or --no-name flag, which leads to the xen.gz file having > non-deterministric timestamp bytes in the compressed file. > > The xen/Makefile variables XEN_WHOAMI, XEN_DOMAIN, XEN_BUILD_TIME, > XEN_BUILD_DATE and XEN_BUILD_HOST are also not reproducible, but > since they are defined with ?= it is possible for an outside > build script to override them. Perhaps having a flag to set > these to a default value would be useful. > > Fixing these allows a re-build of the binary to be the same on > a given host and avoids undefined behaviour in mkelf32. That is a nice patch. Sadly it is missing an Signed Off By. I am wondering if you would be comfortable providing that? The implication of it is that: Developer's Certificate of Origin 1.1 By making a contribution to this project, I certify that: (a) The contribution was created in whole or in part by me and I have the right to submit it under the open source license indicated in the file; or (b) The contribution is based upon previous work that, to the best of my knowledge, is covered under an appropriate open source license and I have the right under that license to submit that work with modifications, whether created in whole or in part by me, under the same open source license (unless I am permitted to submit under a different license), as indicated in the file; or (c) The contribution was provided directly to me by some other person who certified (a), (b) or (c) and I have not modified it. (d) I understand and agree that this project and the contribution are public and that a record of the contribution (including all personal information I submit with it, including my sign-off) is maintained indefinitely and may be redistributed consistent with this project or the open source license(s) involved. > > -- > Trammell > > diff --recursive -u > /home/hudson/build/clean/xen-4.6.3/xen/arch/x86/boot/mkelf32.c > ./xen/arch/x86/boot/mkelf32.c > --- /home/hudson/build/clean/xen-4.6.3/xen/arch/x86/boot/mkelf32.c > 2016-06-20 08:08:22.000000000 -0400 > +++ ./xen/arch/x86/boot/mkelf32.c 2016-08-04 18:02:25.854371605 -0400 > @@ -231,14 +231,14 @@ > u32 loadbase, dat_siz, mem_siz; > char *inimage, *outimage; > int infd, outfd; > - char buffer[1024]; > + char buffer[1024] = {}; > int bytes, todo, i; > > - Elf32_Ehdr in32_ehdr; > - Elf32_Phdr in32_phdr; > + Elf32_Ehdr in32_ehdr = {}; > + Elf32_Phdr in32_phdr = {}; > > - Elf64_Ehdr in64_ehdr; > - Elf64_Phdr in64_phdr; > + Elf64_Ehdr in64_ehdr = {}; > + Elf64_Phdr in64_phdr = {}; > > if ( argc != 5 ) > { > diff --recursive -u /home/hudson/build/clean/xen-4.6.3/xen/Makefile > ./xen/Makefile > --- /home/hudson/build/clean/xen-4.6.3/xen/Makefile 2016-06-20 > 08:08:22.000000000 -0400 > +++ ./xen/Makefile 2016-08-04 17:50:04.888970103 -0400 > @@ -97,7 +103,7 @@ > rm -f tags TAGS cscope.files cscope.in.out cscope.out cscope.po.out > GTAGS GPATH GRTAGS GSYMS > > $(TARGET).gz: $(TARGET) > - gzip -f -9 < $< > $@.new > + gzip -n -f -9 < $< > $@.new > mv $@.new $@ > > $(TARGET): delete-unfresh-files > > _______________________________________________ > Xen-devel mailing list > Xen-devel@xxxxxxxxxxxxx > https://lists.xen.org/xen-devel _______________________________________________ Xen-devel mailing list Xen-devel@xxxxxxxxxxxxx https://lists.xen.org/xen-devel
|
Lists.xenproject.org is hosted with RackSpace, monitoring our |