Hello community, here is the log from the commit of package libisofs for openSUSE:Factory checked in at 2017-01-31 12:28:47 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/libisofs (Old) and /work/SRC/openSUSE:Factory/.libisofs.new (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "libisofs" Changes: -------- --- /work/SRC/openSUSE:Factory/libisofs/libisofs.changes 2016-08-03 11:42:18.000000000 +0200 +++ /work/SRC/openSUSE:Factory/.libisofs.new/libisofs.changes 2017-02-03 17:47:41.583863115 +0100 @@ -1,0 +2,12 @@ +Sun Jan 29 20:56:41 UTC 2017 - [email protected] + +- Update to 1.4.6: + * Bug fix: SIGSEGV by NULL when a data file was larger than ISO + level allows. + * Bug fix: Interpretation of 17 digit timestamps was wrong. + * New API calls iso_generate_gpt_guid() and + iso_write_opts_set_gpt_guid(). + * Made several pseudo-random ids reproducible by overriding + volume modification time. + +------------------------------------------------------------------- Old: ---- libisofs-1.4.4.tar.gz New: ---- libisofs-1.4.6.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ libisofs.spec ++++++ --- /var/tmp/diff_new_pack.HIGA1R/_old 2017-02-03 17:47:42.059796022 +0100 +++ /var/tmp/diff_new_pack.HIGA1R/_new 2017-02-03 17:47:42.059796022 +0100 @@ -1,7 +1,7 @@ # # spec file for package libisofs # -# Copyright (c) 2016 SUSE LINUX GmbH, Nuernberg, Germany. +# Copyright (c) 2017 SUSE LINUX GmbH, Nuernberg, Germany. # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -18,7 +18,7 @@ %define so_ver 6 Name: libisofs -Version: 1.4.4 +Version: 1.4.6 Release: 0 Summary: Library for Creating ISO-9660 Filesystems License: GPL-2.0+ and LGPL-2.0+ ++++++ libisofs-1.4.4.tar.gz -> libisofs-1.4.6.tar.gz ++++++ ++++ 1717 lines of diff (skipped) ++++ retrying with extended exclude list diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/libisofs-1.4.4/ChangeLog new/libisofs-1.4.6/ChangeLog --- old/libisofs-1.4.4/ChangeLog 2016-07-01 09:37:50.000000000 +0200 +++ new/libisofs-1.4.6/ChangeLog 2016-09-16 11:07:07.000000000 +0200 @@ -1,4 +1,12 @@ +libisofs-1.4.6.tar.gz Fri Sep 16 2016 +=============================================================================== +* Bug fix: SIGSEGV by NULL when a data file was larger than ISO level allows. +* Bug fix: Interpretation of 17 digit timestamps was wrong. +* New API calls iso_generate_gpt_guid() and iso_write_opts_set_gpt_guid(). +* Made several pseudo-random ids reproducible by overriding volume modification + time. + libisofs-1.4.4.tar.gz Fri Jul 01 2016 =============================================================================== * Bug fix: HFS+ production could cause MBR partition of type 0xEE without GPT. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/libisofs-1.4.4/README new/libisofs-1.4.6/README --- old/libisofs-1.4.4/README 2015-08-01 16:07:50.000000000 +0200 +++ new/libisofs-1.4.6/README 2016-07-22 14:41:30.000000000 +0200 @@ -4,7 +4,7 @@ Released under GPL (see COPYING file for details). -Copyright (C) 2008 - 2015 Vreixo Formoso, +Copyright (C) 2008 - 2016 Vreixo Formoso, Mario Danic, Vladimir Serbinenko, Thomas Schmitt @@ -14,7 +14,7 @@ Download, Build and Installation -libisofs code is mantained in a Bazaar repository at Launchpad +libisofs code is maintained in a Bazaar repository at Launchpad (https://launchpad.net/libisofs/). You can download it with: $ bzr branch lp:libisofs/for-libisoburn diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/libisofs-1.4.4/configure.ac new/libisofs-1.4.6/configure.ac --- old/libisofs-1.4.4/configure.ac 2016-07-01 09:53:51.000000000 +0200 +++ new/libisofs-1.4.6/configure.ac 2016-09-16 11:11:23.000000000 +0200 @@ -1,4 +1,4 @@ -AC_INIT([libisofs], [1.4.4], [http://libburnia-project.org]) +AC_INIT([libisofs], [1.4.6], [http://libburnia-project.org]) AC_PREREQ([2.50]) dnl AC_CONFIG_HEADER([config.h]) @@ -41,7 +41,7 @@ dnl LIBISOFS_MAJOR_VERSION=1 LIBISOFS_MINOR_VERSION=4 -LIBISOFS_MICRO_VERSION=4 +LIBISOFS_MICRO_VERSION=6 LIBISOFS_VERSION=$LIBISOFS_MAJOR_VERSION.$LIBISOFS_MINOR_VERSION.$LIBISOFS_MICRO_VERSION AC_SUBST(LIBISOFS_MAJOR_VERSION) @@ -52,9 +52,9 @@ dnl Libtool versioning LT_RELEASE=$LIBISOFS_MAJOR_VERSION.$LIBISOFS_MINOR_VERSION # 2016.07.01 development jump has not yet happened -# SONAME = 86 - 80 = 6 . Library name = libisofs.6.80.0 -LT_CURRENT=86 -LT_AGE=80 +# SONAME = 88 - 82 = 6 . Library name = libisofs.6.82.0 +LT_CURRENT=88 +LT_AGE=82 LT_REVISION=0 LT_CURRENT_MINUS_AGE=`expr $LT_CURRENT - $LT_AGE` @@ -92,7 +92,7 @@ AC_PROG_LIBTOOL AC_SUBST(LIBTOOL_DEPS) -dnl LIBTOOL="$LIBTOOL --silent" +# LIBTOOL="$LIBTOOL --silent" AC_PROG_INSTALL diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/libisofs-1.4.4/demo/demo.c new/libisofs-1.4.6/demo/demo.c --- old/libisofs-1.4.4/demo/demo.c 2015-10-12 20:03:20.000000000 +0200 +++ new/libisofs-1.4.6/demo/demo.c 2016-07-22 14:40:46.000000000 +0200 @@ -1,6 +1,6 @@ /* - * Copyright (c) 2007 - 2015 Vreixo Formoso, Thomas Schmitt + * Copyright (c) 2007 - 2016 Vreixo Formoso, Thomas Schmitt * * This file is part of the libisofs project; you can redistribute it and/or * modify it under the terms of the GNU General Public License version 2 @@ -375,7 +375,7 @@ result = iso_write_opts_new(&opts, 0); if (result < 0) { - printf ("Cant create write opts, error %d\n", result); + printf ("Cannot create write opts, error %d\n", result); goto ex; } iso_write_opts_set_iso_level(opts, level); @@ -385,7 +385,7 @@ result = iso_image_create_burn_source(image, opts, &burn_src); if (result < 0) { - printf ("Cant create image, error %d\n", result); + printf ("Cannot create image, error %d\n", result); goto ex; } @@ -904,7 +904,7 @@ result = iso_image_create_burn_source(image, opts, &burn_src); if (result < 0) { - printf ("Cant create image, error %d\n", result); + printf ("Cannot create image, error %d\n", result); goto ex; } iso_write_opts_free(opts); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/libisofs-1.4.4/doc/checksums.txt new/libisofs-1.4.6/doc/checksums.txt --- old/libisofs-1.4.4/doc/checksums.txt 2010-02-13 13:54:30.000000000 +0100 +++ new/libisofs-1.4.6/doc/checksums.txt 2016-07-22 14:40:15.000000000 +0200 @@ -189,7 +189,7 @@ Keep the original MD5 context of the data blocks and clone one for obtaining the MD5 bytes. -If the MD5s match, then compute the checksum block and all folowing ones into +If the MD5s match, then compute the checksum block and all following ones into the kept MD5 context and go on with reading and computing for the tree checksum tag. This will be found at block address next_tag, verified and parsed by: iso_util_decode_md5_tag(block, &tag_type, &pos, @@ -211,7 +211,7 @@ Checking the Data Part of the Session -In order to check the trustworthyness of a whole session, continue reading +In order to check the trustworthiness of a whole session, continue reading and checksumming after the tree was verified. Read and checksum the blocks. When reaching block address next_tag (from the diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/libisofs-1.4.4/doc/doxygen.conf.in new/libisofs-1.4.6/doc/doxygen.conf.in --- old/libisofs-1.4.4/doc/doxygen.conf.in 2011-04-15 14:51:14.000000000 +0200 +++ new/libisofs-1.4.6/doc/doxygen.conf.in 2016-08-29 16:42:38.000000000 +0200 @@ -394,12 +394,6 @@ SHOW_USED_FILES = YES -# If the sources in your project are distributed over multiple directories -# then setting the SHOW_DIRECTORIES tag to YES will show the directory hierarchy -# in the documentation. The default is NO. - -SHOW_DIRECTORIES = NO - # The FILE_VERSION_FILTER tag can be used to specify a program or script that # doxygen should invoke to get the current version for each file (typically from the # version control system). Doxygen will invoke the program by executing (via @@ -527,7 +521,7 @@ # directories that contain example code fragments that are included (see # the \include command). -EXAMPLE_PATH = test +EXAMPLE_PATH = demo/demo.c # If the value of the EXAMPLE_PATH tag contains directories, you can use the # EXAMPLE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp @@ -698,12 +692,6 @@ HTML_STYLESHEET = -# If the HTML_ALIGN_MEMBERS tag is set to YES, the members of classes, -# files or namespaces will be aligned in HTML using tables. If set to -# NO a bullet list will be used. - -HTML_ALIGN_MEMBERS = YES - # If the GENERATE_HTMLHELP tag is set to YES, additional index files # will be generated that can be used as input for tools like the # Microsoft HTML help workshop to generate a compressed HTML help file (.chm) @@ -938,18 +926,6 @@ XML_OUTPUT = xml -# The XML_SCHEMA tag can be used to specify an XML schema, -# which can be used by a validating XML parser to check the -# syntax of the XML files. - -XML_SCHEMA = - -# The XML_DTD tag can be used to specify an XML DTD, -# which can be used by a validating XML parser to check the -# syntax of the XML files. - -XML_DTD = - # If the XML_PROGRAMLISTING tag is set to YES Doxygen will # dump the program listings (including syntax highlighting # and cross-referencing information) to the XML output. Note that diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/libisofs-1.4.4/doc/susp_aaip_2_0.txt new/libisofs-1.4.6/doc/susp_aaip_2_0.txt --- old/libisofs-1.4.4/doc/susp_aaip_2_0.txt 2015-08-01 16:17:16.000000000 +0200 +++ new/libisofs-1.4.6/doc/susp_aaip_2_0.txt 2016-07-22 14:39:41.000000000 +0200 @@ -235,7 +235,7 @@ [b] "BP 2 - Qualifier Record Head" shall be present only if QUALIFIER is set to 1. It shall give the number of Qualifier Bytes and eventually indicate that the qualifier continues in a Qualifier Record which comes - imediately after this record. + immediately after this record. 0 to 127 Q_LENGTH, the qualifier is complete by this record 128 to 255 Q_LENGTH+128, the qualifier is continued by next record So a Qualifier Record can contain at most 127 Qualifier Bytes. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/libisofs-1.4.4/libisofs/aaip-os-freebsd.c new/libisofs-1.4.6/libisofs/aaip-os-freebsd.c --- old/libisofs-1.4.4/libisofs/aaip-os-freebsd.c 2015-12-12 13:23:39.000000000 +0100 +++ new/libisofs-1.4.6/libisofs/aaip-os-freebsd.c 2016-07-21 18:42:36.000000000 +0200 @@ -5,9 +5,9 @@ Arbitrary Attribute Interchange Protocol , system adapter for getting and setting of ACLs and xattr. - To be included by aaip_0_2.c for FreeBSD and NetBSD + To be included by aaip_0_2.c for FreeBSD, NetBSD, and OpenBSD - Copyright (c) 2009 - 2014 Thomas Schmitt, libburnia project, GPLv2+ + Copyright (c) 2009 - 2016 Thomas Schmitt, libburnia project, GPLv2+ */ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/libisofs-1.4.4/libisofs/aaip-os-linux.c new/libisofs-1.4.6/libisofs/aaip-os-linux.c --- old/libisofs-1.4.4/libisofs/aaip-os-linux.c 2015-10-13 14:40:31.000000000 +0200 +++ new/libisofs-1.4.6/libisofs/aaip-os-linux.c 2016-07-22 14:38:35.000000000 +0200 @@ -7,7 +7,7 @@ To be included by aaip_0_2.c for Linux - Copyright (c) 2009 - 2011 Thomas Schmitt, libburnia project, GPLv2+ + Copyright (c) 2009 - 2016 Thomas Schmitt, libburnia project, GPLv2+ */ @@ -443,7 +443,7 @@ I.e. those with a name which does not begin by "user." bit5= in case of symbolic link: manipulate link target - bit6= tolerate inappropriate presence or absense of + bit6= tolerate inappropriate presence or absence of directory default ACL @return 1 success -1 error memory allocation diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/libisofs-1.4.4/libisofs/aaip_0_2.c new/libisofs-1.4.6/libisofs/aaip_0_2.c --- old/libisofs-1.4.4/libisofs/aaip_0_2.c 2015-12-14 17:15:12.000000000 +0100 +++ new/libisofs-1.4.6/libisofs/aaip_0_2.c 2016-07-22 14:35:18.000000000 +0200 @@ -7,7 +7,7 @@ See libisofs/aaip_0_2.h http://libburnia-project.org/wiki/AAIP - Copyright (c) 2009 - 2015 Thomas Schmitt, libburnia project, GPLv2+ + Copyright (c) 2009 - 2016 Thomas Schmitt, libburnia project, GPLv2+ */ @@ -648,7 +648,7 @@ mission bits. */ -/* Analyze occurence of ACL tag types in long text form. If not disabled by +/* Analyze occurrence of ACL tag types in long text form. If not disabled by parameter flag remove the entries of type "user::" , "group::" , "other::" , or "other:" from an ACL in long text form if they match the bits in st_mode as described by man 2 stat and man 5 acl. @@ -2214,6 +2214,11 @@ #include "aaip-os-freebsd.c" #else +#ifdef __OpenBSD__ + +#include "aaip-os-freebsd.c" + +#else #ifdef __linux #include "aaip-os-linux.c" @@ -2230,6 +2235,7 @@ #include "aaip-os-dummy.c" #endif /* ! __linux */ +#endif /* ! __OpenBSD__ */ #endif /* ! __NetBSD__ */ #endif /* ! __FreeBSD_kernel__ */ #endif /* ! __FreeBSD__ */ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/libisofs-1.4.4/libisofs/aaip_0_2.h new/libisofs-1.4.6/libisofs/aaip_0_2.h --- old/libisofs-1.4.4/libisofs/aaip_0_2.h 2016-05-24 12:56:16.000000000 +0200 +++ new/libisofs-1.4.6/libisofs/aaip_0_2.h 2016-07-22 14:34:34.000000000 +0200 @@ -9,7 +9,7 @@ test/aaip_0_2.h - Public declarations - Copyright (c) 2009 Thomas Schmitt, libburnia project, GPLv2+ + Copyright (c) 2009 - 2016 Thomas Schmitt, libburnia project, GPLv2+ */ @@ -93,7 +93,7 @@ size_t *result_len, unsigned char **result, int flag); -/* Analyze occurence of ACL tag types in long text form. If not disabled by +/* Analyze occurrence of ACL tag types in long text form. If not disabled by parameter flag remove the entries of type "user::" , "group::" , "other::" , or "other:" from an ACL in long text form if they match the bits in st_mode as described by man 2 stat and man 5 acl. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/libisofs-1.4.4/libisofs/data_source.c new/libisofs-1.4.6/libisofs/data_source.c --- old/libisofs-1.4.4/libisofs/data_source.c 2014-11-26 14:42:59.000000000 +0100 +++ new/libisofs-1.4.6/libisofs/data_source.c 2016-07-22 14:32:27.000000000 +0200 @@ -145,7 +145,7 @@ /** * Create a new IsoDataSource from a local file. This is suitable for - * accessing regular .iso images, or to acces drives via its block device + * accessing regular .iso images, or to access drives via its block device * and standard POSIX I/O calls. * * @param path diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/libisofs-1.4.4/libisofs/ecma119.c new/libisofs-1.4.6/libisofs/ecma119.c --- old/libisofs-1.4.4/libisofs/ecma119.c 2016-01-26 11:24:45.000000000 +0100 +++ new/libisofs-1.4.6/libisofs/ecma119.c 2016-09-13 19:36:14.000000000 +0200 @@ -1,7 +1,7 @@ /* * Copyright (c) 2007 Vreixo Formoso * Copyright (c) 2007 Mario Danic - * Copyright (c) 2009 - 2015 Thomas Schmitt + * Copyright (c) 2009 - 2016 Thomas Schmitt * * This file is part of the libisofs project; you can redistribute it and/or * modify it under the terms of the GNU General Public License version 2 @@ -193,7 +193,7 @@ /** * Computes the total size of all directory entries of a single dir, - * acording to ECMA-119 6.8.1.1 + * according to ECMA-119 6.8.1.1 * * This also take into account the size needed for RR entries and * SUSP continuation areas (SUSP, 5.1). @@ -2320,6 +2320,73 @@ return ret; } +/* Determine the alleged time of image production by predicting the volume + creation and modification timestamps and taking the maximum of both. +*/ +static +void ecma119_determine_now_time(Ecma119Image *target) +{ + IsoWriteOpts *o; + time_t now = 0, t, t0; + uint8_t time_text[18]; + int i; + + t0 = time(NULL); + o = target->opts; + if (o->vol_uuid[0]) { + for(i = 0; i < 16; i++) + if(o->vol_uuid[i] < '0' || o->vol_uuid[i] > '9') + break; + else + time_text[i] = o->vol_uuid[i]; + for(; i < 16; i++) + time_text[i] = '1'; + time_text[16] = time_text[17] = 0; + t = iso_datetime_read_17(time_text); + if (t > now) + now = t; + } else { + if (o->vol_creation_time > 0) { + if (o->vol_creation_time > now) + now = o->vol_creation_time; + } else if (t0 > now) { + now = t0; + } + if (o->vol_modification_time > 0) { + if (o->vol_modification_time > now) + now = o->vol_modification_time; + } else if (t0 > now) { + now = t0; + } + } + target->now = now; +} + +static +int gpt_disk_guid_setup(Ecma119Image *target) +{ + if (target->opts->gpt_disk_guid_mode == 0) { + /* Random UUID production delayed until really needed */ + return ISO_SUCCESS; + } else if (target->opts->gpt_disk_guid_mode == 1) { + memcpy(target->gpt_uuid_base, target->opts->gpt_disk_guid, 16); + } else if (target->opts->gpt_disk_guid_mode == 2) { + if (target->opts->vol_uuid[0] == 0) + return ISO_GPT_NO_VOL_UUID; + /* Move centi-seconds part to byte 9 and 10 */ + memcpy(target->gpt_uuid_base, target->opts->vol_uuid, 9); + memcpy(target->gpt_uuid_base + 9, target->opts->vol_uuid + 14, 2); + memcpy(target->gpt_uuid_base + 11, target->opts->vol_uuid + 9, 5); + iso_mark_guid_version_4(target->gpt_uuid_base); + } else { + return ISO_BAD_GPT_GUID_MODE; + } + memcpy(target->gpt_disk_guid, target->gpt_uuid_base, 16); + target->gpt_disk_guid_set = 1; + target->gpt_uuid_counter = 1; + return ISO_SUCCESS; +} + static int ecma119_image_new(IsoImage *src, IsoWriteOpts *in_opts, Ecma119Image **img) { @@ -2338,7 +2405,7 @@ if (target == NULL) { return ISO_OUT_OF_MEM; } - /* This reference will be transfered to the burn_source and released by + /* This reference will be transferred to the burn_source and released by bs_free_data. */ target->refcount = 1; @@ -2375,7 +2442,7 @@ target->dir_mode = opts->replace_dir_mode == 2 ? opts->dir_mode : 0555; target->file_mode = opts->replace_file_mode == 2 ? opts->file_mode : 0444; - target->now = time(NULL); + ecma119_determine_now_time(target); target->replace_timestamps = opts->replace_timestamps ? 1 : 0; target->timestamp = opts->replace_timestamps == 2 ? @@ -2406,6 +2473,16 @@ target->boot_intvl_start[i] = 0; target->boot_intvl_size[i] = 0; } + /* It is not easy to predict when the node gets created and can be + manipulated. So it is better for reproducibility to derive its + timestamps from the well controllable now-time. + */ + if (target->catalog->node != NULL) { + iso_node_set_mtime((IsoNode *) target->catalog->node, target->now); + iso_node_set_atime((IsoNode *) target->catalog->node, target->now); + iso_node_set_ctime((IsoNode *) target->catalog->node, target->now); + } + } else { target->num_bootsrc = 0; target->bootsrc = NULL; @@ -2545,7 +2622,12 @@ target->gpt_req_count = 0; target->gpt_req_flags = 0; target->gpt_backup_outside = 0; + memset(target->gpt_uuid_base, 0, 16); + target->gpt_uuid_counter = 0; target->gpt_disk_guid_set = 0; + ret = gpt_disk_guid_setup(target); + if (ret < 0) + goto target_cleanup; target->gpt_part_start = 0; target->gpt_backup_end = 0; target->gpt_backup_size = 0; @@ -3378,7 +3460,7 @@ wopts->vol_modification_time = 0; wopts->vol_expiration_time = 0; wopts->vol_effective_time = 0; - wopts->vol_uuid[0] = 0; + memset(wopts->vol_uuid, 0, 17); wopts->partition_offset = 0; wopts->partition_secs_per_head = 0; wopts->partition_heads_per_cyl = 0; @@ -3409,6 +3491,8 @@ wopts->hfsp_serial_number[i] = 0; wopts->apm_block_size = 0; wopts->hfsp_block_size = 0; + memset(wopts->gpt_disk_guid, 0, 16); + wopts->gpt_disk_guid_mode = 0; *opts = wopts; return ISO_SUCCESS; @@ -4160,6 +4244,16 @@ return ISO_SUCCESS; } +int iso_write_opts_set_gpt_guid(IsoWriteOpts *opts, uint8_t guid[16], int mode) +{ + if (mode < 0 || mode > 2) + return ISO_BAD_GPT_GUID_MODE; + opts->gpt_disk_guid_mode = mode; + if (opts->gpt_disk_guid_mode == 1) + memcpy(opts->gpt_disk_guid, guid, 16); + return ISO_SUCCESS; +} + /* * @param flag diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/libisofs-1.4.4/libisofs/ecma119.h new/libisofs-1.4.6/libisofs/ecma119.h --- old/libisofs-1.4.4/libisofs/ecma119.h 2016-01-25 16:25:27.000000000 +0100 +++ new/libisofs-1.4.6/libisofs/ecma119.h 2016-08-11 15:01:43.000000000 +0200 @@ -59,7 +59,7 @@ #define ISO_DISC_LABEL_SIZE 129 -/* The maximum lenght of an specs violating ECMA-119 file identifier. +/* The maximum length of an specs violating ECMA-119 file identifier. The theoretical limit is 254 - 34 - 28 (len of SUSP CE entry) = 192 Currently the practical limit is 254 - 34 - 96 (non-CE RR entries) - 28 (CE) */ @@ -223,7 +223,7 @@ /** * Write AAIP as extension according to SUSP 1.10 rather than SUSP 1.12. * I.e. without announcing it by an ER field and thus without the need - * to preceed the RRIP fields by an ES and to preceed the AA field by ES. + * to precede the RRIP fields by an ES and to precede the AA field by ES. * This saves bytes and might avoid problems with readers which dislike * ER fields other than the ones for RRIP. * On the other hand, SUSP 1.12 frowns on such unannounced extensions @@ -513,6 +513,13 @@ */ int apm_block_size; + /* User defined GUID for GPT header and base of reproducible partition + GUIDs. (Not to be confused with volume "UUID", which is actually a + timestamp.) + See API call iso_write_opts_set_gpt_guid(). + */ + uint8_t gpt_disk_guid[16]; + int gpt_disk_guid_mode; }; typedef struct ecma119_image Ecma119Image; @@ -844,6 +851,11 @@ /* Whether the eventual backup GPT is not part of the ISO filesystem */ int gpt_backup_outside; + /* The base UUID for the generated GPT UUIDs */ + uint8_t gpt_uuid_base[16]; + /* The counter which distinguishes the GPT UUIDs */ + uint32_t gpt_uuid_counter; + uint32_t efi_boot_part_size; IsoFileSrc *efi_boot_part_filesrc; /* Just a pointer. Do not free. */ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/libisofs-1.4.4/libisofs/ecma119_tree.c new/libisofs-1.4.6/libisofs/ecma119_tree.c --- old/libisofs-1.4.4/libisofs/ecma119_tree.c 2015-10-13 18:21:15.000000000 +0200 +++ new/libisofs-1.4.6/libisofs/ecma119_tree.c 2016-09-12 17:48:17.000000000 +0200 @@ -1,6 +1,6 @@ /* * Copyright (c) 2007 Vreixo Formoso - * Copyright (c) 2009 - 2014 Thomas Schmitt + * Copyright (c) 2009 - 2016 Thomas Schmitt * * This file is part of the libisofs project; you can redistribute it and/or * modify it under the terms of the GNU General Public License version 2 @@ -241,11 +241,11 @@ size = iso_stream_get_size(iso->stream); if (size > (off_t)MAX_ISO_FILE_SECTION_SIZE && img->opts->iso_level != 3) { char *ipath = iso_tree_get_node_path(ISO_NODE(iso)); - ret = iso_msg_submit(img->image->id, ISO_FILE_TOO_BIG, 0, - "File \"%s\" can't be added to image because " - "is greater than 4GB", ipath); + iso_msg_submit(img->image->id, ISO_FILE_TOO_BIG, 0, + "File \"%s\" cannot be added to image because " + "its size is 4 GiB or larger", ipath); free(ipath); - return ret; + return ISO_FILE_TOO_BIG; } ret = iso_file_src_create(img, iso, src); if (ret < 0) { @@ -597,7 +597,7 @@ /** * Sorts a the children of each directory in the ECMA-119 tree represented - * by \p root, acording to the order specified in ECMA-119, section 9.3. + * by \p root, according to the order specified in ECMA-119, section 9.3. */ static void sort_tree(Ecma119Node *root) @@ -1270,7 +1270,7 @@ if (img->opts->rockridge && !img->opts->allow_deep_paths) { - /* Relocate deep directories, acording to RRIP, 4.1.5 */ + /* Relocate deep directories, according to RRIP, 4.1.5 */ ret = reorder_tree(img, root, 1, 0); if (ret < 0) { return ret; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/libisofs-1.4.4/libisofs/eltorito.c new/libisofs-1.4.6/libisofs/eltorito.c --- old/libisofs-1.4.4/libisofs/eltorito.c 2016-01-16 15:41:54.000000000 +0100 +++ new/libisofs-1.4.6/libisofs/eltorito.c 2016-08-06 10:12:56.000000000 +0200 @@ -1,6 +1,6 @@ /* * Copyright (c) 2007 Vreixo Formoso - * Copyright (c) 2010 - 2015 Thomas Schmitt + * Copyright (c) 2010 - 2016 Thomas Schmitt * * This file is part of the libisofs project; you can redistribute it and/or * modify it under the terms of the GNU General Public License version 2 @@ -290,7 +290,7 @@ node->size = 0; node->content = NULL; - /* atributes from parent */ + /* attributes from parent */ node->node.mode = S_IFREG | (parent->node.mode & 0444); node->node.uid = parent->node.uid; node->node.gid = parent->node.gid; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/libisofs-1.4.4/libisofs/fs_image.c new/libisofs-1.4.6/libisofs/fs_image.c --- old/libisofs-1.4.4/libisofs/fs_image.c 2016-04-24 17:58:38.000000000 +0200 +++ new/libisofs-1.4.6/libisofs/fs_image.c 2016-07-22 14:33:41.000000000 +0200 @@ -1,6 +1,6 @@ /* * Copyright (c) 2007 Vreixo Formoso - * Copyright (c) 2009 - 2015 Thomas Schmitt + * Copyright (c) 2009 - 2016 Thomas Schmitt * * This file is part of the libisofs project; you can redistribute it and/or * modify it under the terms of the GNU General Public License version 2 @@ -3598,7 +3598,7 @@ boot_pvd_found = iso_read_lsb(boot_info_found, 4); image_pvd = (uint32_t) (opts->block + 16); - /* Accomodate to eventually relocated superblock */ + /* Accommodate to eventually relocated superblock */ if (image_pvd != boot_pvd_found && image_pvd == 16 && boot_pvd_found < iso_image_size) { /* Check whether there is a PVD at boot_pvd_found @@ -3993,7 +3993,7 @@ } if (sai->mbr_req_count >= 1 && (sai->mbr_req[0]->type_byte == 0xee || !is_isohybrid) && - !sai->prep_part_start > 0) { + !(sai->prep_part_start > 0)) { part = sai->mbr_req[0]; part2_start = 0; if (sai->mbr_req_count >= 2) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/libisofs-1.4.4/libisofs/fsource.h new/libisofs-1.4.6/libisofs/fsource.h --- old/libisofs-1.4.4/libisofs/fsource.h 2015-03-09 19:02:02.000000000 +0100 +++ new/libisofs-1.4.6/libisofs/fsource.h 2016-07-22 14:37:33.000000000 +0200 @@ -1,6 +1,6 @@ /* * Copyright (c) 2007 Vreixo Formoso - * Copyright (c) 2009 - 2015 Thomas Schmitt + * Copyright (c) 2009 - 2016 Thomas Schmitt * * This file is part of the libisofs project; you can redistribute it and/or * modify it under the terms of the GNU General Public License version 2 @@ -28,7 +28,7 @@ * Create a new IsoFilesystem to deal with local filesystem. * * @return - * 1 sucess, < 0 error + * 1 success, < 0 error */ int iso_local_filesystem_new(IsoFilesystem **fs); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/libisofs-1.4.4/libisofs/image.h new/libisofs-1.4.6/libisofs/image.h --- old/libisofs-1.4.4/libisofs/image.h 2015-09-14 13:50:52.000000000 +0200 +++ new/libisofs-1.4.6/libisofs/image.h 2016-07-22 14:34:54.000000000 +0200 @@ -1,6 +1,6 @@ /* * Copyright (c) 2007 Vreixo Formoso - * Copyright (c) 2009 - 2015 Thomas Schmitt + * Copyright (c) 2009 - 2016 Thomas Schmitt * * This file is part of the libisofs project; you can redistribute it and/or * modify it under the terms of the GNU General Public License version 2 @@ -31,7 +31,7 @@ * Global objects such as the message_queues must belogn to that * context. Thus we will have, for example, a msg queue per image, * so images are completelly independent and can be managed together. - * (Usefull, for example, in Multiple-Document-Interface GUI apps. + * (Useful, for example, in Multiple-Document-Interface GUI apps. * [The stuff we have in init belongs really to image!] */ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/libisofs-1.4.4/libisofs/libiso_msgs.h new/libisofs-1.4.6/libisofs/libiso_msgs.h --- old/libisofs-1.4.4/libisofs/libiso_msgs.h 2015-08-01 16:24:39.000000000 +0200 +++ new/libisofs-1.4.6/libisofs/libiso_msgs.h 2016-07-22 14:31:11.000000000 +0200 @@ -1,7 +1,7 @@ /* libiso_msgs (generated from libdax_msgs : Fri Feb 22 19:42:52 CET 2008) Message handling facility of libisofs. - Copyright (C) 2006-2008 Thomas Schmitt <[email protected]>, + Copyright (C) 2006-2016 Thomas Schmitt <[email protected]>, provided under GPL version 2 or later */ @@ -266,8 +266,9 @@ /** Destroy a message handling facility and all its eventual messages. The submitted pointer gets set to NULL. - Actually only the last destroy call of all offical references to the object - will really dispose it. All others just decrement the reference counter. + Actually only the last destroy call of all official references to the + object will really dispose it. All others just decrement the reference + counter. Call this function only with official reference pointers obtained by libiso_msgs_new() or libiso_msgs_refer(), and only once per such pointer. @param flag Bitfield for control purposes (unused yet, submit 0) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/libisofs-1.4.4/libisofs/libisofs.h new/libisofs-1.4.6/libisofs/libisofs.h --- old/libisofs-1.4.4/libisofs/libisofs.h 2016-07-01 09:53:59.000000000 +0200 +++ new/libisofs-1.4.6/libisofs/libisofs.h 2016-09-16 11:44:45.000000000 +0200 @@ -94,7 +94,7 @@ */ #define iso_lib_header_version_major 1 #define iso_lib_header_version_minor 4 -#define iso_lib_header_version_micro 4 +#define iso_lib_header_version_micro 6 /** * Get version of the libisofs library at runtime. @@ -167,7 +167,7 @@ * A node in the iso tree, i.e. a file that will be written to image. * * It can represent any kind of files. When needed, you can get the type with - * iso_node_get_type() and cast it to the appropiate subtype. Useful macros + * iso_node_get_type() and cast it to the appropriate subtype. Useful macros * are provided, see below. * * @since 0.6.2 @@ -1257,7 +1257,7 @@ * @param image * Location where the image pointer will be stored. * @return - * 1 sucess, < 0 error + * 1 success, < 0 error * * @since 0.6.2 */ @@ -1376,7 +1376,7 @@ * resulting image will have long filenames (up to 255 characters), deeper * directory structure, POSIX permissions and owner info on files and * directories, support for symbolic links or special files... All that - * attributes can be modified/setted with the appropiate function. + * attributes can be modified/set with the appropriate function. * * @param opts * The option set to be manipulated. @@ -1485,7 +1485,7 @@ * @param hfsp_block_size * The allocation block size to be used by the HFS+ fileystem. * 0, 512, or 2048 - * @param hfsp_block_size + * @param apm_block_size * The block size to be used for and within the Apple Partition Map. * 0, 512, or 2048. * Size 512 is not compatible with options which produce GPT. @@ -1670,7 +1670,7 @@ * The name given by this call will be compared with iso_node_get_name() * of the directories in the root directory, not with the final ECMA-119 * names of those directories. - * @parm flags + * @param flags * Bitfield for control purposes. * bit0= Mark the relocation directory by a Rock Ridge RE entry, if it * gets created during iso_image_create_burn_source(). This will @@ -1812,7 +1812,7 @@ /** * Write AAIP as extension according to SUSP 1.10 rather than SUSP 1.12. * I.e. without announcing it by an ER field and thus without the need - * to preceed the RRIP fields and the AAIP field by ES fields. + * to precede the RRIP fields and the AAIP field by ES fields. * This saves 5 to 10 bytes per file and might avoid problems with readers * which dislike ER fields other than the ones for RRIP. * On the other hand, SUSP 1.12 frowns on such unannounced extensions @@ -2358,7 +2358,7 @@ #define iso_libjte_req_micro 0 /** - * Associate a libjte environment object to the upcomming write run. + * Associate a libjte environment object to the upcoming write run. * libjte implements Jigdo Template Extraction as of Steve McIntyre and * Richard Atterer. * The call will fail if no libjte support was enabled at compile time. @@ -2498,6 +2498,8 @@ * * @param ivr * The reader object to be disposed. *ivr will be set to NULL. + * @param flag + * Unused yet. Submit 0. * @return * ISO_SUCCESS or error (which is < 0) * @@ -2596,6 +2598,52 @@ int flag); /** + * Control whether the emerging GPT gets a pseudo-randomly generated disk GUID + * or whether it gets a user supplied GUID. + * The partition GUIDs will be generated in a reproducible way by exoring the + * little-endian 32 bit partion number with the disk GUID beginning at byte + * offset 9. + * + * @param opts + * The option set to be manipulated. + * @param guid + * 16 bytes of user supplied GUID. Readily byte-swapped as prescribed by + * UEFI specs: 4 byte, 2 byte, 2 byte as little-endian. The rest as + * big-endian. + * The upper 4 bit of guid[7] should bear the value 4 to express the + * RFC 4122 version 4. Bit 7 of byte[8] should be set to 1 and bit 6 + * be set to 0, in order to express the RFC 4122 variant of UUID, + * where version 4 means "pseudo-random uuid". + * @param mode + * 0 = ignore parameter guid and produce the GPT disk GUID by a + * pseudo-random algorithm. This is the default setting. + * 1 = use parameter guid as GPT disk GUID + * 2 = ignore parameter guid and derive the GPT disk GUID from + * parameter vol_uuid of iso_write_opts_set_pvd_times(). + * The 16 bytes of vol_uuid get copied and bytes 7, 8 get their + * upper bits changed to comply to RFC 4122 and UEFI. + * Error ISO_GPT_NO_VOL_UUID will occur if image production begins + * before vol_uuid was set. + * + * @return + * ISO_SUCCESS or ISO_BAD_GPT_GUID_MODE + * + * @since 1.4.6 + */ +int iso_write_opts_set_gpt_guid(IsoWriteOpts *opts, uint8_t guid[16], + int mode); + +/** + * Generate a pseudo-random GUID suitable for iso_write_opts_set_gpt_guid(). + * + * @param guid + * Will be filled by 16 bytes of generated GUID. + * + * @since 1.4.6 + */ +void iso_generate_gpt_guid(uint8_t guid[16]); + +/** * Cause an arbitrary data file to be appended to the ISO image and to be * described by a partition table entry in an MBR or SUN Disk Label at the * start of the ISO image. @@ -2613,15 +2661,15 @@ * Range with MBR: 1 to 4. 1 will cause the whole ISO image to be * unclaimable space before partition 1. * Range with SUN Disk Label: 2 to 8. + * @param partition_type + * The MBR partition type. E.g. FAT12 = 0x01 , FAT16 = 0x06, + * Linux Native Partition = 0x83. See fdisk command L. + * This parameter is ignored with SUN Disk Label. * @param image_path * File address in the local file system or instructions for interval * reader. See flag bit0. * With SUN Disk Label: an empty name causes the partition to become * a copy of the next lower partition. - * @param image_type - * The MBR partition type. E.g. FAT12 = 0x01 , FAT16 = 0x06, - * Linux Native Partition = 0x83. See fdisk command L. - * This parameter is ignored with SUN Disk Label. * @param flag * bit0= The path contains instructions for the interval reader * See above. @@ -3176,7 +3224,7 @@ * effect if both, the truncate mode value from "isofs.nt" and the current * truncate mode of the IsoImage are 1, and the length is between 64 and 255. * - * @param image + * @param img * The image which shall be manipulated. * @param mode * 0= Do not truncate but throw error ISO_RR_NAME_TOO_LONG if a file name @@ -3200,7 +3248,7 @@ /** * Inquire the current setting of iso_image_set_truncate_mode(). * - * @param image + * @param img * The image which shall be inquired. * @param mode * Returns the mode value. @@ -3429,16 +3477,16 @@ * * @param image * The image to be inquired. - * @param vol_creation_time + * @param creation_time * Returns a pointer to the Volume Creation time: * When "the information in the volume was created." - * @param vol_modification_time + * @param modification_time * Returns a pointer to Volume Modification time: * When "the information in the volume was last modified." - * @param vol_expiration_time + * @param expiration_time * Returns a pointer to Volume Expiration time: * When "the information in the volume may be regarded as obsolete." - * @param vol_effective_time + * @param effective_time * Returns a pointer to Volume Expiration time: * When "the information in the volume may be used." * @return @@ -3459,17 +3507,22 @@ * The image to make bootable. If it was already bootable this function * returns an error and the image remains unmodified. * @param image_path - * The absolute path of a IsoFile to be used as default boot image. - ->>> or --interval:appended_partition_$number_start_$start_size_$size:... - + * The absolute path of a IsoFile to be used as default boot image or + * --interval:appended_partition_$number[_start_$start_size_$size]:... + * if type is ELTORITO_NO_EMUL. $number gives the partition number. + * If _start_$start_size_$size is present, then it overrides the 2 KiB + * start block of the partition and the partition size counted in + * blocks of 512 bytes. * @param type * The boot media type. This can be one of 3 types: - * - Floppy emulation: Boot image file must be exactly - * 1200 kB, 1440 kB or 2880 kB. - * - Hard disc emulation: The image must begin with a master + * - ELTORITO_FLOPPY_EMUL. + * Floppy emulation: Boot image file must be exactly + * 1200 KiB, 1440 KiB or 2880 KiB. + * - ELTORITO_HARD_DISC_EMUL. + * Hard disc emulation: The image must begin with a master * boot record with a single image. - * - No emulation. You should specify load segment and load size + * - ELTORITO_NO_EMUL. + * No emulation. You should specify load segment and load size * of image. * @param catalog_path * The absolute path in the image tree where the catalog will be stored. @@ -3504,12 +3557,11 @@ * The image to which the boot image shall be added. * returns an error and the image remains unmodified. * @param image_path - * The absolute path of a IsoFile to be used as boot image. - ->>> or --interval:appended_partition_${number}s_start_${start}d_size_$size:... - + * The absolute path of a IsoFile to be used as boot image or + * --interval:appended_partition_$number[_start_$start_size_$size]:... + * if type is ELTORITO_NO_EMUL. See iso_image_set_boot_image. * @param type - * The boot media type. See iso_image_set_boot_image + * The boot media type. See iso_image_set_boot_image. * @param flag * Bitfield for control purposes. Unused yet. Submit 0. * @param boot @@ -3552,9 +3604,7 @@ * @param imgnode * When not NULL, it will be filled with the image tree node. No extra ref * is added, you can use iso_node_ref() to get one if you need it. - ->>> The returned value is NULL if the boot image source is no IsoFile. - + * The returned value is NULL if the boot image source is no IsoFile. * @param catnode * When not NULL, it will be filled with the catnode tree node. No extra * ref is added, you can use iso_node_ref() to get one if you need it. @@ -3612,8 +3662,7 @@ * @param bootnodes * Returns NULL or an allocated array of pointers to the IsoFile nodes * which bear the content of the boot images in boots. - ->>> An array entry is NULL if the boot image source is no IsoFile. + * An array entry is NULL if the boot image source is no IsoFile. >>> Need getter for partition index @@ -3868,7 +3917,7 @@ * * @param bootimg * The image to inquire - * @param id_string + * @param crit * Returns 20 bytes of type and data * @return * 1 = ok , <0 = error @@ -4255,7 +4304,7 @@ * Else it will consist of lines as described in ISO_SYSAREA_REPORT_DOC above. * * File paths and other long texts are reported as "(too long to show here)" - * if their length plus preceeding text plus trailing 0-byte exceeds the + * if their length plus preceding text plus trailing 0-byte exceeds the * line length limit of ISO_MAX_SYSAREA_LINE_LENGTH bytes. * Texts which may contain whitespace or unprintable characters will start * at fixed positions and extend to the end of the line. @@ -4411,7 +4460,7 @@ * the first added file gets into effect with this system area type. * The data files which shall serve as MIPS boot files have to be brought into * the image by the normal means. - * @param img + * @param image * The image to be manipulated. * @param path * Absolute path of the boot file in the ISO 9660 Rock Ridge tree. @@ -4426,7 +4475,7 @@ /** * Obtain the number of added MIPS Big Endian boot files and pointers to * their paths in the ISO 9660 Rock Ridge tree. - * @param img + * @param image * The image to be inquired. * @param paths * An array of pointers to be set to the registered boot file paths. @@ -4442,7 +4491,7 @@ /** * Clear the list of MIPS Big Endian boot file paths. - * @param img + * @param image * The image to be manipulated. * @param flag * Bitfield for control purposes, unused yet, submit 0 @@ -4570,7 +4619,7 @@ * * @param img * The image to be inquired. - * @param cmdline + * @param boot_loader_path * Will return the path. NULL if none is currently submitted. * @return * 1 is success , <0 means error @@ -5237,7 +5286,7 @@ * The node removed will be the one returned by the previous iteration. * * It is not allowed to call this function twice without calling - * iso_dir_iter_next inbetween. + * iso_dir_iter_next between the calls. * * @return * 1 on succes, < 0 error @@ -5256,8 +5305,9 @@ * * @param node * The node to be removed. - * @param iter - * If not NULL, then the node will be removed by iso_dir_iter_remove(iter) + * @param boss_iter + * If not NULL, then the node will be removed by + * iso_dir_iter_remove(boss_iter) * else it will be removed by iso_node_remove(node). * @return * 1 is success, <0 indicates error @@ -5461,10 +5511,10 @@ const char *iso_symlink_get_dest(const IsoSymlink *link); /** - * Set the destination of a link. + * Set the destination of a symbolic * - * @param opts - * The option set to be manipulated + * @param link + * The link node to be manipulated * @param dest * New destination for the link. It must be a non-empty string, otherwise * this function doesn't modify previous destination. @@ -5485,7 +5535,7 @@ * or regular files, this function has no effect. * @param w * The weight as a integer number, the greater this value is, the - * closer from the begining of image the file will be written. + * closer from the beginning of image the file will be written. * Default value at IsoNode creation is 0. * * @since 0.6.2 @@ -5718,7 +5768,7 @@ * * @param buf * The dynamically allocated memory buffer with the stream content. - * @parm size + * @param size * The number of bytes which may be read from buf. * @param stream * Will return a reference to the newly created stream. @@ -6239,7 +6289,7 @@ * Add the contents of a dir to a given directory of the iso tree. * * There are several options to control what files are added or how they are - * managed. Take a look at iso_tree_set_* functions to see diferent options + * managed. Take a look at iso_tree_set_* functions to see different options * for recursive directory addition. * * TODO comment Builder and Filesystem related issues when exposing both @@ -6432,7 +6482,7 @@ * will discard the whole queue. * * @param minimum_severity - * Threshhold + * Threshold * @param error_code * Will become a unique error code as listed at the end of this header * @param imgid @@ -6882,7 +6932,7 @@ * @param fs * Will be filled with a pointer to the filesystem that can be used * to access image contents. - * @param + * @return * 1 on success, < 0 on error * * @since 0.6.2 @@ -7260,7 +7310,7 @@ * @param names * Will return an array of pointers to 0-terminated names * @param value_lengths - * Will return an arry with the lenghts of values + * Will return an array with the lengths of values * @param values * Will return an array of pointers to strings of 8-bit bytes * @param flag @@ -7286,7 +7336,7 @@ * @param name * The xattr name that shall be looked up. * @param value_length - * Will return the lenght of value + * Will return the length of value * @param value * Will return a string of 8-bit bytes. free() it when no longer needed. * @param flag @@ -7469,7 +7519,7 @@ * @param names * Will return an array of pointers to 0-terminated names * @param value_lengths - * Will return an arry with the lenghts of values + * Will return an array with the lengths of values * @param values * Will return an array of pointers to 8-bit values * @param flag @@ -8169,7 +8219,7 @@ * Issue a blessing to a particular IsoNode. If the blessing is already issued * to some file, then it gets revoked from that one. * - * @param image + * @param img * The image to manipulate. * @param blessing * The kind of blessing to be issued. @@ -8203,7 +8253,7 @@ * * Several usage restrictions apply. See parameter blessed_nodes. * - * @param image + * @param img * The image to inquire. * @param blessed_nodes * Will return a pointer to an internal node array of image. @@ -8398,8 +8448,8 @@ /** File not supported in ECMA-119 tree and thus ignored (WARNING,MEDIUM, -139) */ #define ISO_FILE_IGNORED 0xD020FF75 -/* A file is bigger than supported by used standard (WARNING,MEDIUM, -140) */ -#define ISO_FILE_TOO_BIG 0xD020FF74 +/* A file is bigger than supported by used standard (FAILURE,HIGH, -140) */ +#define ISO_FILE_TOO_BIG 0xE830FF74 /* File read error during image creation (MISHAP,HIGH, -141) */ #define ISO_FILE_CANT_WRITE 0xE430FF73 @@ -8787,6 +8837,15 @@ /** Unrecognized file type of IsoFileSrc object (SORRY, HIGH, -415) */ #define ISO_BAD_FSRC_FILETYPE 0xE030FE61 +/** Cannot derive GPT GUID from undefined pseudo-UUID volume timestamp + (FAILURE, HIGH, -416) */ +#define ISO_GPT_NO_VOL_UUID 0xE830FE60 + +/** Unrecognized GPT disk GUID setup mode + (FAILURE, HIGH, -417) */ +#define ISO_BAD_GPT_GUID_MODE 0xE830FE5F + + /* Internal developer note: Place new error codes directly above this comment. Newly introduced errors must get a message entry in diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/libisofs-1.4.4/libisofs/libisofs.ver new/libisofs-1.4.6/libisofs/libisofs.ver --- old/libisofs-1.4.4/libisofs/libisofs.ver 2016-01-26 11:24:37.000000000 +0100 +++ new/libisofs-1.4.6/libisofs/libisofs.ver 2016-08-10 21:35:13.000000000 +0200 @@ -68,6 +68,7 @@ iso_filesystem_unref; iso_finish; iso_fs_global_id; +iso_generate_gpt_guid; iso_get_local_charset; iso_get_messenger; iso_gzip_get_refcounts; @@ -320,6 +321,7 @@ iso_write_opts_set_efi_bootp; iso_write_opts_set_fat; iso_write_opts_set_fifo_size; +iso_write_opts_set_gpt_guid; iso_write_opts_set_hardlinks; iso_write_opts_set_hfsp_block_size; iso_write_opts_set_hfsp_serial_number; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/libisofs-1.4.4/libisofs/make_isohybrid_mbr.c new/libisofs-1.4.6/libisofs/make_isohybrid_mbr.c --- old/libisofs-1.4.4/libisofs/make_isohybrid_mbr.c 2016-03-10 19:16:06.000000000 +0100 +++ new/libisofs-1.4.6/libisofs/make_isohybrid_mbr.c 2016-08-05 20:56:50.000000000 +0200 @@ -604,8 +604,28 @@ } +/* For generating a weak random number */ +static uint32_t iso_make_mbr_id(Ecma119Image *t, int flag) +{ + uint32_t id; + struct timeval tv; + + if(t->opts->vol_uuid[0]) { + id = iso_crc32_gpt((unsigned char *) t->opts->vol_uuid, 16, 0); + } else if(t->opts->vol_modification_time > 0) { + id = iso_crc32_gpt((unsigned char *) &(t->opts->vol_modification_time), + sizeof(time_t), 0); + } else { + gettimeofday(&tv, NULL); + id = 0xffffffff & (tv.tv_sec ^ (tv.tv_usec * 2000)); + } + return id; +} + + /* * @param flag bit0= make own random MBR Id from current time + * >>> or from overridden modification time * bit1= create protective MBR as of UEFI/GPT specs */ int make_isolinux_mbr(uint32_t *img_blocks, Ecma119Image *t, @@ -618,8 +638,6 @@ uint32_t boot_lba; int head_count, sector_count, ret; int gpt_count = 0, gpt_idx[128], apm_count = 0, gpt_cursor, i; - /* For generating a weak random number */ - struct timeval tv; if (t->bootsrc[0] == NULL) return iso_msg_submit(t->image->id, ISO_BOOT_IMAGE_NOT_VALID, 0, @@ -668,8 +686,7 @@ (here some 32-bit random value with no crypto strength) */ if (flag & 1) { - gettimeofday(&tv, NULL); - id = 0xffffffff & (tv.tv_sec ^ (tv.tv_usec * 2000)); + id = iso_make_mbr_id(t, 0); lsb_to_buf(&wpt, id, 32, 0); } else { wpt+= 4; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/libisofs-1.4.4/libisofs/messages.c new/libisofs-1.4.6/libisofs/messages.c --- old/libisofs-1.4.4/libisofs/messages.c 2016-02-05 13:07:32.000000000 +0100 +++ new/libisofs-1.4.6/libisofs/messages.c 2016-08-11 14:17:56.000000000 +0200 @@ -1,6 +1,6 @@ /* * Copyright (c) 2007 Vreixo Formoso - * Copyright (c) 2009 - 2015 Thomas Schmitt + * Copyright (c) 2009 - 2016 Thomas Schmitt * * This file is part of the libisofs project; you can redistribute it and/or * modify it under the terms of the GNU General Public License version 2 @@ -157,7 +157,7 @@ #ifdef Libisofs_with_libjtE /* Ugly compile time check for header version compatibility. - If everthing matches, then it produces no C code. In case of mismatch, + If everything matches, then it produces no C code. In case of mismatch, intentionally faulty C code will be inserted. */ /* The indendation is an advise of man gcc to help old compilers ignoring */ @@ -543,6 +543,10 @@ return "A general note message was issued"; case ISO_BAD_FSRC_FILETYPE: return "Unrecognized file type of IsoFileSrc object"; + case ISO_GPT_NO_VOL_UUID: + return "Cannot derive GPT GUID from undefined pseudo-UUID volume timestamp"; + case ISO_BAD_GPT_GUID_MODE: + return "Unrecognized GPT disk GUID setup mode"; default: return "Unknown error"; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/libisofs-1.4.4/libisofs/node.c new/libisofs-1.4.6/libisofs/node.c --- old/libisofs-1.4.4/libisofs/node.c 2015-10-15 16:04:17.000000000 +0200 +++ new/libisofs-1.4.6/libisofs/node.c 2016-07-22 14:30:06.000000000 +0200 @@ -1,6 +1,6 @@ /* * Copyright (c) 2007 Vreixo Formoso - * Copyright (c) 2009 - 2015 Thomas Schmitt + * Copyright (c) 2009 - 2016 Thomas Schmitt * * This file is part of the libisofs project; you can redistribute it and/or * modify it under the terms of the GNU General Public License version 2 @@ -1114,7 +1114,7 @@ * or regular files, this function has no effect. * @param w * The weight as a integer number, the greater this value is, the - * closer from the begining of image the file will be written. + * closer from the beginning of image the file will be written. */ void iso_node_set_sort_weight(IsoNode *node, int w) { @@ -1818,7 +1818,7 @@ /* Merge attribute list of node and given new attribute list into attribute list returned by m_* parameters. - The m_* paramters have finally to be freed by a call with bit15 set. + The m_* parameters have finally to be freed by a call with bit15 set. @param flag Bitfield for control purposes bit0= delete all old names which begin by "user." (but not if bit2 is set) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/libisofs-1.4.4/libisofs/node.h new/libisofs-1.4.6/libisofs/node.h --- old/libisofs-1.4.4/libisofs/node.h 2015-09-27 15:09:32.000000000 +0200 +++ new/libisofs-1.4.6/libisofs/node.h 2016-07-22 14:32:55.000000000 +0200 @@ -1,6 +1,6 @@ /* * Copyright (c) 2007 Vreixo Formoso - * Copyright (c) 2009 - 2011 Thomas Schmitt + * Copyright (c) 2009 - 2016 Thomas Schmitt * * This file is part of the libisofs project; you can redistribute it and/or * modify it under the terms of the GNU General Public License version 2 @@ -487,7 +487,7 @@ /** - * Set the checksum index (typically comming from IsoFileSrc.checksum_index) + * Set the checksum index (typically coming from IsoFileSrc.checksum_index) * of a regular file node. The index is encoded as xattr "isofs.cx" with * four bytes of value. */ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/libisofs-1.4.4/libisofs/stream.h new/libisofs-1.4.6/libisofs/stream.h --- old/libisofs-1.4.4/libisofs/stream.h 2015-07-07 15:28:54.000000000 +0200 +++ new/libisofs-1.4.6/libisofs/stream.h 2016-07-22 14:31:53.000000000 +0200 @@ -1,6 +1,6 @@ /* * Copyright (c) 2007 Vreixo Formoso - * Copyright (c) 2009 - 2011 Thomas Schmitt + * Copyright (c) 2009 - 2016 Thomas Schmitt * * This file is part of the libisofs project; you can redistribute it and/or * modify it under the terms of the GNU General Public License version 2 @@ -41,7 +41,7 @@ * take an extra ref. * * @return - * 1 sucess, < 0 error + * 1 success, < 0 error * Possible errors: * */ @@ -52,7 +52,7 @@ * The stream will add a ref. to the IsoFileSource. * * @return - * 1 sucess, < 0 error + * 1 success, < 0 error */ int iso_cut_out_stream_new(IsoFileSource *src, off_t offset, off_t size, IsoStream **stream); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/libisofs-1.4.4/libisofs/system_area.c new/libisofs-1.4.6/libisofs/system_area.c --- old/libisofs-1.4.4/libisofs/system_area.c 2016-03-28 22:18:35.000000000 +0200 +++ new/libisofs-1.4.6/libisofs/system_area.c 2016-08-14 21:19:58.000000000 +0200 @@ -1476,8 +1476,12 @@ for (i = 0; i < 16; i++) if (part_uuid[i]) break; - if (i == 16) - iso_random_uuid(t, part_uuid); + if (i == 16) { + if (!t->gpt_disk_guid_set) + iso_gpt_uuid(t, t->gpt_disk_guid); + t->gpt_disk_guid_set = 1; + iso_gpt_uuid(t, part_uuid); + } memcpy(wpt, part_uuid, 16); wpt += 16; iso_lsb_to_buf(&wpt, start_lba & 0xffffffff, 4, 0); @@ -1538,9 +1542,8 @@ (uint32_t) ((back_lba - max_entries / 4 - 1) >> 32), 4, 1); /* Disk GUID */ - /* >>> Make adjustable */ if (!t->gpt_disk_guid_set) - iso_random_uuid(t, t->gpt_disk_guid); + iso_gpt_uuid(t, t->gpt_disk_guid); t->gpt_disk_guid_set = 1; memcpy(wpt, t->gpt_disk_guid, 16); wpt += 16; @@ -2357,67 +2360,69 @@ return result ^ 0xffffffff; } +void iso_mark_guid_version_4(uint8_t *u) +{ + /* Mark as UUID version 4. RFC 4122 says u[6], but UEFI prescribes + bytes 6 and 7 to be swapped. + */ + u[7] = (u[7] & 0x0f) | 0x40; + + /* Variant is "1 0 x" as described in RFC 4122. + */ + u[8] = (u[8] & 0x3f) | 0x80; -void iso_random_uuid(Ecma119Image *t, uint8_t uuid[16]) + return; +} + +void iso_generate_gpt_guid(uint8_t guid[16]) { + #ifdef Libisofs_with_uuid_generatE + uuid_t u; + + uuid_generate(u); + swap_uuid((void *) u); + memcpy(guid, u, 16); + #else - uint8_t u[16]; - /* produced by uuid_generate() and byte-swapped to isohybrid.c habits */ + + uint8_t *u; + /* produced by uuid_generate() and byte-swapped to UEFI specs */ static uint8_t uuid_template[16] = { 0xee, 0x29, 0x9d, 0xfc, 0x65, 0xcc, 0x7c, 0x40, 0x92, 0x61, 0x5b, 0xcd, 0x6f, 0xed, 0x08, 0x34 }; - static uint8_t uuid_urandom[16]; uint32_t rnd, salt; struct timeval tv; pid_t pid; - static int counter = 0, use_urandom = 0; int i, ret, fd; -#endif -#ifdef Libisofs_with_uuid_generatE + u = guid; - uuid_generate(u); - swap_uuid((void *) u); - memcpy(uuid, u, 16); - -#else - - /* First try /dev/urandom. - (Weakening the result by 8 bit saves a lot of pool entropy.) + /* First try /dev/urandom */ - if ((counter & 0xff) == 0) { - fd = open("/dev/urandom", O_RDONLY | O_BINARY); - if (fd == -1) - goto fallback; - ret = read(fd, uuid_urandom, 16); - if (ret != 16) { - close(fd); - goto fallback; - } - /* Mark as UUID version 4 */ - uuid_urandom[7] = (uuid_urandom[7] & 0x0f) | 0x40; - uuid_urandom[8] = (uuid_urandom[8] & 0x3f) | 0x80; + fd = open("/dev/urandom", O_RDONLY | O_BINARY); + if (fd == -1) + goto fallback; + ret = read(fd, u, 16); + if (ret != 16) { close(fd); - use_urandom = 1; - } - if (!use_urandom) goto fallback; - memcpy(uuid, uuid_urandom, 16); - uuid[9] ^= counter & 0xff; - counter++; + } + close(fd); + iso_mark_guid_version_4(u); return; + fallback:; pid = getpid(); - salt = iso_crc32_gpt((unsigned char *) t, sizeof(Ecma119Image), 0) ^ pid; + salt = iso_crc32_gpt((unsigned char *) &guid, sizeof(uint8_t *), 0) ^ pid; /* This relies on the uniqueness of the template and the rareness of - bootable ISO image production via libisofs. Estimated 53 bits of + bootable ISO image production via libisofs. Estimated 48 bits of entropy should influence the production of a single day. - So first collisions are to be expected with about 100 million images + So first collisions are to be expected with about 16 million images per day. */ memcpy(u, uuid_template, 16); @@ -2429,19 +2434,36 @@ u[6] = ((salt >> 8) ^ (pid >> 16)) & 0xff; rnd = ((0xffffff & tv.tv_sec) << 8) | (((tv.tv_usec >> 16) ^ (salt & 0xf0)) & 0xff); - u[9] ^= counter & 0xff; for (i = 0; i < 4; i++) u[10 + i] ^= (rnd >> (8 * i)) & 0xff; u[14] ^= (tv.tv_usec >> 8) & 0xff; u[15] ^= tv.tv_usec & 0xff; - counter++; - memcpy(uuid, u, 16); + iso_mark_guid_version_4(u); + return; #endif /* ! Libisofs_with_uuid_generatE */ } +void iso_gpt_uuid(Ecma119Image *t, uint8_t uuid[16]) +{ + if (t->gpt_uuid_counter == 0) + iso_generate_gpt_guid(t->gpt_uuid_base); + + memcpy(uuid, t->gpt_uuid_base, 16); + + /* Previous implementation changed only byte 9. So i expand it by applying + the counter in little-endian style. + */ + uuid[9] ^= t->gpt_uuid_counter & 0xff; + uuid[10] ^= (t->gpt_uuid_counter >> 8) & 0xff; + uuid[11] ^= (t->gpt_uuid_counter >> 16) & 0xff; + uuid[12] ^= (t->gpt_uuid_counter >> 24) & 0xff; + t->gpt_uuid_counter++; + return; +} + int assess_appended_gpt(Ecma119Image *t, int flag) { static uint8_t basic_data_uuid[16] = { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/libisofs-1.4.4/libisofs/system_area.h new/libisofs-1.4.6/libisofs/system_area.h --- old/libisofs-1.4.4/libisofs/system_area.h 2015-02-06 11:50:17.000000000 +0100 +++ new/libisofs-1.4.6/libisofs/system_area.h 2016-08-11 13:14:09.000000000 +0200 @@ -182,10 +182,15 @@ run on other machines with the same process number at the same time. */ -/* Produces a weakly random variation of a hardcoded real random uuid +/* Produces a GPT disk or partition GUID. + Pseudo-random by iso_generate_gpt_guid() if t->gpt_uuid_counter is 0. + Else derived reproducibly by counter number from t->gpt_uuid_base. */ -void iso_random_uuid(Ecma119Image *t, uint8_t uuid[16]); +void iso_gpt_uuid(Ecma119Image *t, uint8_t uuid[16]); +/* Mark a given byte string as UUID version 4, RFC 4122. +*/ +void iso_mark_guid_version_4(uint8_t *u); /* The parameter struct for production of a single GPT entry. See also the partial GPT description in doc/boot_sectors.txt. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/libisofs-1.4.4/libisofs/util.c new/libisofs-1.4.6/libisofs/util.c --- old/libisofs-1.4.4/libisofs/util.c 2015-10-11 09:42:57.000000000 +0200 +++ new/libisofs-1.4.6/libisofs/util.c 2016-09-13 19:23:40.000000000 +0200 @@ -1823,7 +1823,7 @@ tm.tm_mon -= 1; tm.tm_isdst = 0; - return timegm(&tm) - ((int8_t)buf[6]) * 60 * 15; + return timegm(&tm) - ((int8_t)buf[16]) * 60 * 15; } /** diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/libisofs-1.4.4/libisofs/writer.h new/libisofs-1.4.6/libisofs/writer.h --- old/libisofs-1.4.4/libisofs/writer.h 2014-04-09 08:05:09.000000000 +0200 +++ new/libisofs-1.4.6/libisofs/writer.h 2016-07-22 14:38:02.000000000 +0200 @@ -29,13 +29,13 @@ }; /** - * This is the function all Writers shoudl call to write data to image. + * This is the function all Writers should call to write data to image. * Currently, it is just a wrapper for write(2) Unix system call. * * It is implemented in ecma119.c * * @return - * 1 on sucess, < 0 error + * 1 on success, < 0 error */ int iso_write(Ecma119Image *target, void *buf, size_t count); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' --exclude Makefile.in --exclude configure --exclude config.guess --exclude '*.pot' --exclude mkinstalldirs --exclude aclocal.m4 --exclude config.sub --exclude depcomp --exclude install-sh --exclude ltmain.sh old/libisofs-1.4.4/libtool.m4 new/libisofs-1.4.6/libtool.m4 --- old/libisofs-1.4.4/libtool.m4 2016-07-01 09:54:21.000000000 +0200 +++ new/libisofs-1.4.6/libtool.m4 2016-09-16 11:46:20.000000000 +0200 @@ -2738,7 +2738,10 @@ ;; openbsd*) - version_type=sunos + # ts B60722 : changed version_type for lt_main.sh from "sunos" to "netbsd" + # http://www.openbsd.org/faq/ports/specialtopics.html + # "Understanding shared libraries number rules" + version_type=netbsd sys_lib_dlsearch_path_spec="/usr/lib" need_lib_prefix=no # Some older versions of OpenBSD (3.3 at least) *do* need versioned libs.
