• Bug#1061926: Bug#1061966 closed by Debian FTP Masters

    From Steve Langasek@21:1/5 to Steve Langasek on Fri Feb 2 19:10:01 2024
    --pgn235ZOjOZ3aXr8
    Content-Type: text/plain; charset=us-ascii
    Content-Disposition: inline
    Content-Transfer-Encoding: quoted-printable

    Really-really-really....

    On Fri, Feb 02, 2024 at 09:36:27AM -0800, Steve Langasek wrote:
    Helmut pointed out the preinst.in files didn't actually include the token to be substituted, but instead still had the hard-coded architecture path :/

    Attached is the really-really-fixed-this-time NMU patch.


    On Fri, Feb 02, 2024 at 08:56:32AM -0800, Steve Langasek wrote:
    By happenstance I noticed that I had mindlessly hard-coded the amd64-specific multiarch path into the preinsts.

    Please find a really-fixed-this-time NMU patch for experimental.


    On Wed, Jan 31, 2024 at 12:41:48PM -0800, Steve Langasek wrote:
    Sorry, and thanks for bearing with me. Uploaded to experimental again; updated full NMU debdiff attached.

    On Wed, Jan 31, 2024 at 09:31:25PM +0100, Helmut Grohne wrote:
    Control: reopen -1

    On Wed, Jan 31, 2024 at 10:12:03AM +0000, Debian Bug Tracking System wrote:
    #1061966: file loss due to combining time64 + /usr-move

    It has been closed by Debian FTP Masters <ftpmaster@ftp-master.debian.org> (reply to Steve Langasek <vorlon@debian.org>).

    I fear this is not fixed.

    /usr/lib/x86_64-linux-gnu/libaudit.so.1 and

    This is fixed.

    /usr/lib/x86_64-linux-gnu/libaudit.so.1.0.0 have been moved from

    This not.

    libaudit1 to libaudit1t64 in this upload and these files have formerly
    been installed below /lib in bookworm. Hence, we are creating exactly the problem that the file move moratorium was meant to prevent.

    /usr/lib/x86_64-linux-gnu/libauparse.so.0 and

    This is fixed.

    /usr/lib/x86_64-linux-gnu/libauparse.so.0.0.0 likewise move from

    This not.

    libauparse0 to libauparse0t64 and create the same problem.

    DEP17 classifies this a P1 and proposed mitigations M7 and M8. In this
    case, I recommend not exercising Conflicts (M7), because they are known
    to be unreliable and libaudit1 is part of the the essential set (login
    depends on it). Instead, their respective preinst script should create
    protective diversions

    dpkg-divert --package libaudit1t64 --no-rename --divert /lib/x86_64-linux-gnu/libaudit.so.1.usr-is-merged /lib/x86_64-linux-gnu/libaudit.so.1

    for each of the affected files with their aliased location. In this case
    - since we cannot use Conflicts - we cannot get rid of these diversions
    in postinst. We already have Breaks: libaudit1 (<< ...), but that allows
    concurrent unpack and hence still allows for the file loss scenario. The
    diversions should be cleaned up in forky's postinst.

    I appreciate another upload of audit to experimental to verify the mitigation.

    Helmut


    --
    Steve Langasek Give me a lever long enough and a Free OS
    Debian Developer to set it on, and I can move the world.
    Ubuntu Developer https://www.debian.org/
    slangasek@ubuntu.com vorlon@debian.org

    diff -Nru audit-3.1.2/debian/changelog audit-3.1.2/debian/changelog
    --- audit-3.1.2/debian/changelog 2024-01-24 15:05:18.000000000 +0000
    +++ audit-3.1.2/debian/changelog 2024-01-31 20:39:17.000000000 +0000
    @@ -1,3 +1,19 @@
    +audit (1:3.1.2-2.1~exp3) experimental; urgency=medium
    +
    + * Proper complete fix for usrmerge. Closes: #1061966.
    +
    + -- Steve Langasek <vorlon@debian.org> Wed, 31 Jan 2024 20:39:17 +0000 +
    +audit (1:3.1.2-2.1~exp2) experimental; urgency=medium
    +
    + * Non-maintainer upload.
    + * Rename libraries for 64-bit time_t transition.
    + * Fix uninstallable packages from the previous upload.
    + * Add usrmerge diversions in preinst to protect against file deletion + due to libraries moving between packages. Closes: #1061966.
    +
    + -- Steve Langasek <vorlon@debian.org> Wed, 31 Jan 2024 08:49:07 +0000 +
    audit (1:3.1.2-2) unstable; urgency=medium

    [ Chris Hofstaedtler ]
    diff -Nru audit-3.1.2/debian/control audit-3.1.2/debian/control
    --- audit-3.1.2/debian/control 2024-01-24 15:05:18.000000000 +0000
    +++ audit-3.1.2/debian/control 2024-01-31 08:49:07.000000000 +0000
    @@ -26,8 +26,8 @@
    Package: auditd
    Section: admin
    Architecture: linux-any
    -Depends: libaudit1 (= ${binary:Version}),
    - libauparse0 (= ${binary:Version}),
    +Depends: libaudit1t64 (= ${binary:Version}),
    + libauparse0t64 (= ${binary:Version}),
    mawk | gawk,
    ${misc:Depends},
    ${shlibs:Depends}
    @@ -41,29 +41,35 @@
    .
    Also contains the audit dispatcher "audisp".

    -Package: libauparse0
    +Package: libauparse0t64
    +Provides: ${t64:Provides}
    +Replaces: libauparse0
    +Breaks: libauparse0 (<< ${source:Version})
    Architecture: linux-any
    Pre-Depends: ${misc:Pre-Depends}
    -Depends: libaudit1 (= ${binary:Version}), ${misc:Depends}, ${shlibs:Depends}
    +Depends: libaudit1t64 (= ${binary:Version}), ${misc:Depends}, ${shlibs:Depends}
    Multi-Arch: same
    Description: Dynamic library for parsing security auditing
    The libauparse package contains the dynamic libraries needed for
    applications to use the audit framework. It is used to monitor systems for
    security related events.
    .
    - This package contains the libauparse0 library.
    + This package contains the libauparse0t64 library.

    Package: libauparse-dev
    Section: libdevel
    Architecture: linux-any
    -Depends: libauparse0 (= ${binary:Version}), ${misc:Depends}
    +Depends: libauparse0t64 (= ${binary:Version}), ${misc:Depends}
    Multi-Arch: same
    -Description: Header files and static library for the libauparse0 library +Description: Header files and static library for the libauparse0t64 library
    The audit-libs parse package contains the dynamic libraries needed for
    applications to use the audit framework. It is used to monitor systems for
    security related events.

    -Package: libaudit1
    +Package: libaudit1t64
    +Provides: ${t64:Provides}
    +Replaces: libaudit1
    +Breaks: libaudit1 (<< ${source:Version})
    Architecture: linux-any
    Pre-Depends: ${misc:Pre-Depends}
    Depends: libaudit-common (>= ${source:Version}),
    @@ -90,7 +96,7 @@
    Package: libaudit-dev
    Section: libdevel
    Architecture: linux-any
    -Depends: libaudit1 (= ${binary:Version}), libcap-ng-dev, ${misc:Depends} +Depends: libaudit1t64 (= ${binary:Version}), libcap-ng-dev, ${misc:Depends}
    Multi-Arch: same
    Description: Header files and static library for security auditing
    The audit-libs-devel package contains the static libraries and header @@ -100,8 +106,8 @@
    Package: python3-audit
    Section: python
    Architecture: linux-any
    -Depends: libaudit1 (= ${binary:Version}),
    - libauparse0 (= ${binary:Version}),
    +Depends: libaudit1t64 (= ${binary:Version}),
    + libauparse0t64 (= ${binary:Version}),
    ${misc:Depends},
    ${python3:Depends},
    ${shlibs:Depends}
    @@ -127,7 +133,7 @@
    Section: admin
    Architecture: linux-any
    Depends: auditd (= ${binary:Version}),
    - libauparse0 (= ${binary:Version}),
    + libauparse0t64 (= ${binary:Version}),
    ${misc:Depends},
    ${shlibs:Depends}
    Build-Profiles: <!pkg.audit.noldap>
    diff -Nru audit-3.1.2/debian/libaudit1.install audit-3.1.2/debian/libaudit1.install
    --- audit-3.1.2/debian/libaudit1.install 2024-01-24 15:05:18.000000000 +0000
    +++ audit-3.1.2/debian/libaudit1.install 1970-01-01 00:00:00.000000000 +0000
    @@ -1 +0,0 @@
    -usr/lib/*/libaudit.so.*
    diff -Nru audit-3.1.2/debian/libaudit1.symbols audit-3.1.2/debian/libaudit1.symbols
    --- audit-3.1.2/debian/libaudit1.symbols 2024-01-24 15:05:18.000000000 +0000
    +++ audit-3.1.2/debian/libaudit1.symbols 1970-01-01 00:00:00.000000000 +0000
    @@ -1,89 +0,0 @@
    -libaudit.so.1 libaudit1 #MINVER#
    -* Build-Depends-Package: libaudit-dev
    - __audit_send@Base 1:2.8.2
    - _audit_archadded@Base 1:2.2.1
    - _audit_elf@Base 1:2.2.1
    - _audit_exeadded@Base 1:2.5.1
    - _audit_filterfsadded@Base 1:2.8
    - _audit_permadded@Base 1:2.2.1
    - _audit_syscalladded@Base 1:2.2.1
    - audit_action_to_name@Base 1:2.2.1
    - audit_add_rule_data@Base 1:2.2.1
    - audit_add_watch@Base 1:2.2.1
    - audit_add_watch_dir@Base 1:2.2.1
    - audit_can_control@Base 1:2.6.1
    - audit_can_read@Base 1:2.6.1
    - audit_can_write@Base 1:2.6.1
    - audit_close@Base 1:2.2.1
    - audit_delete_rule_data@Base 1:2.2.1
    - audit_detect_machine@Base 1:2.2.1
    - audit_determine_machine@Base 1:2.3.6
    - audit_elf_to_machine@Base 1:2.2.1
    - audit_encode_nv_string@Base 1:2.2.1
    - audit_encode_value@Base 1:2.2.1
    - audit_errno_to_name@Base 1:2.2.1
    - audit_field_to_name@Base 1:2.2.1
    - audit_flag_to_name@Base 1:2.2.1
    - audit_format_signal_info@Base 1:3.0~alpha9
    - audit_fstype_to_name@Base 1:2.8
    - audit_ftype_to_name@Base 1:2.2.1
    - audit_get_features@Base 1:2.5.1
    - audit_get_reply@Base 1:2.2.1
    - audit_get_session@Base 1:2.7.7
    - audit_getloginuid@Base 1:2.2.1
    - audit_is_enabled@Base 1:2.2.1
    - audit_log_acct_message@Base 1:2.2.1
    - audit_log_semanage_message@Base 1:2.2.1
    - audit_log_user_avc_message@Base 1:2.2.1
    - audit_log_user_comm_message@Base 1:2.2.1
    - audit_log_user_command@Base 1:2.2.1
    - audit_log_user_message@Base 1:2.2.1
    - audit_machine_to_elf@Base 1:2.2.1
    - audit_machine_to_name@Base 1:2.2.1
    - audit_make_equivalent@Base 1:2.2.1
    - audit_msg@Base 1:2.2.1
    - audit_msg_type_to_name@Base 1:2.2.1
    - audit_name_to_action@Base 1:2.2.1
    - audit_name_to_errno@Base 1:2.2.1
    - audit_name_to_field@Base 1:2.2.1
    - audit_name_to_flag@Base 1:2.2.1
    - audit_name_to_fstype@Base 1:2.8
    - audit_name_to_ftype@Base 1:2.2.1
    - audit_name_to_machine@Base 1:2.2.1
    - audit_name_to_msg_type@Base 1:2.2.1
    - audit_name_to_syscall@Base 1:2.2.1
    - audit_name_to_uringop@Base 1:3.1.1
    - audit_number_to_errmsg@Base 1:2.2.1
    - audit_open@Base 1:2.2.1
    - audit_operator_to_symbol@Base 1:2.2.1
    - audit_request_features@Base 1:2.4
    - audit_request_rules_list_data@Base 1:2.2.1
    - audit_request_signal_info@Base 1:2.2.1
    - audit_request_status@Base 1:2.2.1
    - audit_reset_backlog_wait_time_actual@Base 1:3.0
    - audit_reset_lost@Base 1:2.7.7
    - audit_rule_create_data@Base 1:3.0~alpha9
    - audit_rule_fieldpair_data@Base 1:2.2.1
    - audit_rule_free_data@Base 1:2.2.1
    - audit_rule_init_data@Base 1:3.0~alpha9
    - audit_rule_interfield_comp_data@Base 1:2.2.1
    - audit_rule_io_uringbyname_data@Base 1:3.1.1
    - audit_rule_syscall_data@Base 1:2.2.1
    - audit_rule_syscallbyname_data@Base 1:2.2.1
    - audit_send@Base 1:2.2.1
    - audit_set_backlog_limit@Base 1:2.2.1
    - audit_set_backlog_wait_time@Base 1:2.4.2
    - audit_set_enabled@Base 1:2.2.1
    - audit_set_failure@Base 1:2.2.1
    - audit_set_feature@Base 1:2.4
    - audit_set_loginuid_immutable@Base 1:2.4
    - audit_set_pid@Base 1:2.2.1
    - audit_set_rate_limit@Base 1:2.2.1
    - audit_setloginuid@Base 1:2.2.1
    - audit_syscall_to_name@Base 1:2.2.1
    - audit_trim_subtrees@Base 1:2.2.1
    - audit_update_watch_perms@Base 1:2.2.1
    - audit_uringop_to_name@Base 1:3.1.1
    - audit_value_needs_encoding@Base 1:2.2.1
    - get_auditfail_action@Base 1:2.2.1
    - set_aumessage_mode@Base 1:2.2.1
    diff -Nru audit-3.1.2/debian/libaudit1t64.install audit-3.1.2/debian/libaudit1t64.install
    --- audit-3.1.2/debian/libaudit1t64.install 1970-01-01 00:00:00.000000000 +0000
    +++ audit-3.1.2/debian/libaudit1t64.install 2024-01-24 15:05:18.000000000 +0000
    @@ -0,0 +1 @@
    +usr/lib/*/libaudit.so.*
    diff -Nru audit-3.1.2/debian/libaudit1t64.lintian-overrides audit-3.1.2/debian/libaudit1t64.lintian-overrides
    --- audit-3.1.2/debian/libaudit1t64.lintian-overrides 1970-01-01 00:00:00.000000000 +0000
    +++ audit-3.1.2/debian/libaudit1t64.lintian-overrides 2024-01-31 08:49:07.000000000 +0000
    @@ -0,0 +1 @@
    +libaudit1t64: package-name-doesnt-match-sonames libaudit1
    diff -Nru audit-3.1.2/debian/libaudit1t64.preinst audit-3.1.2/debian/libaudit1t64.preinst
    --- audit-3.1.2/debian/libaudit1t64.preinst 1970-01-01 00:00:00.000000000 +0000
    +++ audit-3.1.2/debian/libaudit1t64.preinst 2024-01-31 20:37:58.000000000 +0000
    @@ -0,0 +1,16 @@
    +#!/bin/sh
    +
    +set -e
    +
    +case $1 in
    + install)
    + for file in libaudit.so.1 libaudit.so.1.0.0; do
    + dpkg-divert --package libaudit1t64 --no-rename \
    + --divert \
    + /lib/x86_64-linux-gnu/$file.usr-is-merged \
    + /lib/x86_64-linux-gnu/$file
    + done
    + ;;
    +esac
    +
    +#DEBHELPER#
    diff -Nru audit-3.1.2/debian/libaudit1t64.symbols audit-3.1.2/debian/libaudit1t64.symbols
    --- audit-3.1.2/debian/libaudit1t64.symbols 1970-01-01 00:00:00.000000000 +0000
    +++ audit-3.1.2/debian/libaudit1t64.symbols 2024-01-31 08:49:07.000000000 +0000
    @@ -0,0 +1,89 @@
    +libaudit.so.1 libaudit1t64 #MINVER#
    +* Build-Depends-Package: libaudit-dev
    + __audit_send@Base 1:2.8.2
    + _audit_archadded@Base 1:2.2.1
    + _audit_elf@Base 1:2.2.1
    + _audit_exeadded@Base 1:2.5.1
    + _audit_filterfsadded@Base 1:2.8
    + _audit_permadded@Base 1:2.2.1
    + _audit_syscalladded@Base 1:2.2.1
    + audit_action_to_name@Base 1:2.2.1
    + audit_add_rule_data@Base 1:2.2.1
    + audit_add_watch@Base 1:2.2.1
    + audit_add_watch_dir@Base 1:2.2.1
    + audit_can_control@Base 1:2.6.1
    + audit_can_read@Base 1:2.6.1
    + audit_can_write@Base 1:2.6.1
    + audit_close@Base 1:2.2.1
    + audit_delete_rule_data@Base 1:2.2.1
    + audit_detect_machine@Base 1:2.2.1
    + audit_determine_machine@Base 1:2.3.6
    + audit_elf_to_machine@Base 1:2.2.1
    + audit_encode_nv_string@Base 1:2.2.1
    + audit_encode_value@Base 1:2.2.1
    + audit_errno_to_name@Base 1:2.2.1
    + audit_field_to_name@Base 1:2.2.1
    + audit_flag_to_name@Base 1:2.2.1
    + audit_format_signal_info@Base 1:3.0~alpha9
    + audit_fstype_to_name@Base 1:2.8
    + audit_ftype_to_name@Base 1:2.2.1
    + audit_get_features@Base 1:2.5.1
    + audit_get_reply@Base 1:2.2.1
    + audit_get_session@Base 1:2.7.7
    + audit_getloginuid@Base 1:2.2.1
    + audit_is_enabled@Base 1:2.2.1
    + audit_log_acct_message@Base 1:2.2.1
    + audit_log_semanage_message@Base 1:2.2.1
    + audit_log_user_avc_message@Base 1:2.2.1
    + audit_log_user_comm_message@Base 1:2.2.1
    + audit_log_user_command@Base 1:2.2.1
    + audit_log_user_message@Base 1:2.2.1
    + audit_machine_to_elf@Base 1:2.2.1
    + audit_machine_to_name@Base 1:2.2.1
    + audit_make_equivalent@Base 1:2.2.1
    + audit_msg@Base 1:2.2.1
    + audit_msg_type_to_name@Base 1:2.2.1
    + audit_name_to_action@Base 1:2.2.1
    + audit_name_to_errno@Base 1:2.2.1
    + audit_name_to_field@Base 1:2.2.1
    + audit_name_to_flag@Base 1:2.2.1
    + audit_name_to_fstype@Base 1:2.8
    + audit_name_to_ftype@Base 1:2.2.1
    + audit_name_to_machine@Base 1:2.2.1
    + audit_name_to_msg_type@Base 1:2.2.1
    + audit_name_to_syscall@Base 1:2.2.1
    + audit_name_to_uringop@Base 1:3.1.1
    + audit_number_to_errmsg@Base 1:2.2.1
    + audit_open@Base 1:2.2.1
    + audit_operator_to_symbol@Base 1:2.2.1
    + audit_request_features@Base 1:2.4
    + audit_request_rules_list_data@Base 1:2.2.1
    + audit_request_signal_info@Base 1:2.2.1
    + audit_request_status@Base 1:2.2.1
    + audit_reset_backlog_wait_time_actual@Base 1:3.0
    + audit_reset_lost@Base 1:2.7.7
    + audit_rule_create_data@Base 1:3.0~alpha9
    + audit_rule_fieldpair_data@Base 1:2.2.1
    + audit_rule_free_data@Base 1:2.2.1
    + audit_rule_init_data@Base 1:3.0~alpha9
    + audit_rule_interfield_comp_data@Base 1:2.2.1
    + audit_rule_io_uringbyname_data@Base 1:3.1.1
    + audit_rule_syscall_data@Base 1:2.2.1
    + audit_rule_syscallbyname_data@Base 1:2.2.1
    + audit_send@Base 1:2.2.1
    + audit_set_backlog_limit@Base 1:2.2.1
    + audit_set_backlog_wait_time@Base 1:2.4.2
    + audit_set_enabled@Base 1:2.2.1
    + audit_set_failure@Base 1:2.2.1
    + audit_set_feature@Base 1:2.4
    + audit_set_loginuid_immutable@Base 1:2.4
    + audit_set_pid@Base 1:2.2.1
    + audit_set_rate_limit@Base 1:2.2.1
    + audit_setloginuid@Base 1:2.2.1
    + audit_syscall_to_name@Base 1:2.2.1
    + audit_trim_subtrees@Base 1:2.2.1
    + audit_update_watch_perms@Base 1:2.2.1
    + audit_uringop_to_name@Base 1:3.1.1
    + audit_value_needs_encoding@Base 1:2.2.1
    + get_auditfail_action@Base 1:2.2.1
    + set_aumessage_mode@Base 1:2.2.1
    diff -Nru audit-3.1.2/debian/libauparse0.install audit-3.1.2/debian/libauparse0.install
    --- audit-3.1.2/debian/libauparse0.install 2024-01-24 15:05:18.000000000 +0000
    +++ audit-3.1.2/debian/libauparse0.install 1970-01-01 00:00:00.000000000 +0000
    @@ -1 +0,0 @@
    -usr/lib/*/libauparse.so.*
    diff -Nru audit-3.1.2/debian/libauparse0.symbols audit-3.1.2/debian/libauparse0.symbols
    --- audit-3.1.2/debian/libauparse0.symbols 2024-01-24 15:05:18.000000000 +0000
    +++ audit-3.1.2/debian/libauparse0.symbols 1970-01-01 00:00:00.000000000 +0000
    @@ -1,84 +0,0 @@
    -libauparse.so.0 libauparse0 #MINVER#
    -* Build-Depends-Package: libauparse-dev
    - _auparse_flush_caches@Base 1:3.0.5
    - _auparse_free_interpretations@Base 1:2.6
    - _auparse_load_interpretations@Base 1:2.6
    - _auparse_lookup_interpretation@Base 1:2.6.1
    - auparse_add_callback@Base 1:2.2.1
    - auparse_destroy@Base 1:2.2.1
    - auparse_destroy_ext@Base 1:2.7.7
    - auparse_do_interpretation@Base 1:2.3.1
    - auparse_feed@Base 1:2.2.1
    - auparse_feed_age_events@Base 1:2.5.1
    - auparse_feed_has_data@Base 1:2.2.2
    - auparse_feed_has_ready_event@Base 1:3.0.5
    - auparse_find_field@Base 1:2.2.1
    - auparse_find_field_next@Base 1:2.2.1
    - auparse_first_field@Base 1:2.2.1
    - auparse_first_record@Base 1:2.2.1
    - auparse_flush_feed@Base 1:2.2.1
    - auparse_get_field_int@Base 1:2.2.1
    - auparse_get_field_name@Base 1:2.2.1
    - auparse_get_field_num@Base 1:2.7.7
    - auparse_get_field_str@Base 1:2.2.1
    - auparse_get_field_type@Base 1:2.2.1
    - auparse_get_filename@Base 1:2.2.1
    - auparse_get_line_number@Base 1:2.2.1
    - auparse_get_milli@Base 1:2.2.1
    - auparse_get_node@Base 1:2.2.1
    - auparse_get_num_fields@Base 1:2.2.1
    - auparse_get_num_records@Base 1:2.2.1
    - auparse_get_record_interpretations@Base 1:2.6
    - auparse_get_record_num@Base 1:2.7.7
    - auparse_get_record_text@Base 1:2.2.1
    - auparse_get_serial@Base 1:2.2.1
    - auparse_get_time@Base 1:2.2.1
    - auparse_get_timestamp@Base 1:2.2.1
    - auparse_get_type@Base 1:2.2.1
    - auparse_get_type_name@Base 1:2.3.4
    - auparse_goto_field_num@Base 1:2.7.7
    - auparse_goto_record_num@Base 1:2.2.1
    - auparse_init@Base 1:2.2.1
    - auparse_interp_adjust_type@Base 1:2.3.1
    - auparse_interpret_field@Base 1:2.2.1
    - auparse_interpret_realpath@Base 1:2.7.8
    - auparse_interpret_sock_address@Base 1:2.8
    - auparse_interpret_sock_family@Base 1:2.8
    - auparse_interpret_sock_port@Base 1:2.8
    - auparse_new_buffer@Base 1:3.0.5
    - auparse_next_event@Base 1:2.2.1
    - auparse_next_field@Base 1:2.2.1
    - auparse_next_record@Base 1:2.2.1
    - auparse_node_compare@Base 1:2.2.1
    - auparse_normalize@Base 1:2.7.7
    - auparse_normalize_get_action@Base 1:2.7.7
    - auparse_normalize_get_event_kind@Base 1:2.7.7
    - auparse_normalize_get_results@Base 1:2.7.7
    - auparse_normalize_how@Base 1:2.7.7
    - auparse_normalize_key@Base 1:2.7.7
    - auparse_normalize_object_first_attribute@Base 1:2.7.7
    - auparse_normalize_object_kind@Base 1:2.7.7
    - auparse_normalize_object_next_attribute@Base 1:2.7.7
    - auparse_normalize_object_primary2@Base 1:2.8
    - auparse_normalize_object_primary@Base 1:2.7.7
    - auparse_normalize_object_secondary@Base 1:2.7.7
    - auparse_normalize_session@Base 1:2.7.7
    - auparse_normalize_subject_first_attribute@Base 1:2.7.7
    - auparse_normalize_subject_kind@Base 1:2.7.7
    - auparse_normalize_subject_next_attribute@Base 1:2.7.7
    - auparse_normalize_subject_primary@Base 1:2.7.7
    - auparse_normalize_subject_secondary@Base 1:2.7.7
    - auparse_reset@Base 1:2.2.1
    - auparse_set_eoe_timeout@Base 1:3.0.5
    - auparse_set_escape_mode@Base 1:2.4.4
    - auparse_timestamp_compare@Base 1:2.2.1
    - ausearch_add_expression@Base 1:2.2.1
    - ausearch_add_interpreted_item@Base 1:2.2.1
    - ausearch_add_item@Base 1:2.2.1
    - ausearch_add_regex@Base 1:2.2.1
    - ausearch_add_timestamp_item@Base 1:2.2.1
    - ausearch_add_timestamp_item_ex@Base 1:2.4
    - ausearch_clear@Base 1:2.2.1
    - ausearch_next_event@Base 1:2.2.1
    - ausearch_set_stop@Base 1:2.2.1
    - find_config_change_object@Base 1:3.0.5
    diff -Nru audit-3.1.2/debian/libauparse0t64.install audit-3.1.2/debian/libauparse0t64.install
    --- audit-3.1.2/debian/libauparse0t64.install 1970-01-01 00:00:00.000000000 +0000
    +++ audit-3.1.2/debian/libauparse0t64.install 2024-01-24 15:05:18.000000000 +0000
    @@ -0,0 +1 @@
    +usr/lib/*/libauparse.so.*
    diff -Nru audit-3.1.2/debian/libauparse0t64.lintian-overrides audit-3.1.2/debian/libauparse0t64.lintian-overrides
    --- audit-3.1.2/debian/libauparse0t64.lintian-overrides 1970-01-01 00:00:00.000000000 +0000
    +++ audit-3.1.2/debian/libauparse0t64.lintian-overrides 2024-01-31 08:49:07.000000000 +0000
    @@ -0,0 +1 @@
    +libauparse0t64: package-name-doesnt-match-sonames libauparse0
    diff -Nru audit-3.1.2/debian/libauparse0t64.preinst audit-3.1.2/debian/libauparse0t64.preinst
    --- audit-3.1.2/debian/libauparse0t64.preinst 1970-01-01 00:00:00.000000000 +0000
    +++ audit-3.1.2/debian/libauparse0t64.preinst 2024-01-31 20:38:54.000000000 +0000
    @@ -0,0 +1,17 @@
    +#!/bin/sh
    +
    +set -e
    +
    +case $1 in
    + install)
    + for file in libauparse.so.0 libauparse.so.0.0.0; do
    + dpkg-divert --package libauparse0t64 --no-rename \
    + --divert \
    + /lib/x86_64-linux-gnu/$file.usr-is-merged \
    + /lib/x86_64-linux-gnu/$file
    + done
    + ;;
    +esac
    +
    +#DEBHELPER#
    +
    diff -Nru audit-3.1.2/debian/libauparse0t64.symbols audit-3.1.2/debian/libauparse0t64.symbols
    --- audit-3.1.2/debian/libauparse0t64.symbols 1970-01-01 00:00:00.000000000 +0000
    +++ audit-3.1.2/debian/libauparse0t64.symbols 2024-01-31 08:49:07.000000000 +0000
    @@ -0,0 +1,84 @@
    +libauparse.so.0 libauparse0t64 #MINVER#
    +* Build-Depends-Package: libauparse-dev
    + _auparse_flush_caches@Base 1:3.0.5
    + _auparse_free_interpretations@Base 1:2.6
    + _auparse_load_interpretations@Base 1:2.6
    + _auparse_lookup_interpretation@Base 1:2.6.1
    + auparse_add_callback@Base 1:2.2.1
    + auparse_destroy@Base 1:2.2.1
    + auparse_destroy_ext@Base 1:2.7.7
    + auparse_do_interpretation@Base 1:2.3.1
    + auparse_feed@Base 1:2.2.1
    + auparse_feed_age_events@Base 1:2.5.1
    + auparse_feed_has_data@Base 1:2.2.2
    + auparse_feed_has_ready_event@Base 1:3.0.5
    + auparse_find_field@Base 1:2.2.1
    + auparse_find_field_next@Base 1:2.2.1
    + auparse_first_field@Base 1:2.2.1
    + auparse_first_record@Base 1:2.2.1
    + auparse_flush_feed@Base 1:2.2.1
    + auparse_get_field_int@Base 1:2.2.1
    + auparse_get_field_name@Base 1:2.2.1
    + auparse_get_field_num@Base 1:2.7.7
    + auparse_get_field_str@Base 1:2.2.1
    + auparse_get_field_type@Base 1:2.2.1
    + auparse_get_filename@Base 1:2.2.1
    + auparse_get_line_number@Base 1:2.2.1
    + auparse_get_milli@Base 1:2.2.1
    + auparse_get_node@Base 1:2.2.1
    + auparse_get_num_fields@Base 1:2.2.1
    + auparse_get_num_records@Base 1:2.2.1
    + auparse_get_record_interpretations@Base 1:2.6
    + auparse_get_record_num@Base 1:2.7.7
    + auparse_get_record_text@Base 1:2.2.1
    + auparse_get_serial@Base 1:2.2.1
    + auparse_get_time@Base 1:2.2.1
    + auparse_get_timestamp@Base 1:2.2.1
    + auparse_get_type@Base 1:2.2.1
    + auparse_get_type_name@Base 1:2.3.4
    + auparse_goto_field_num@Base 1:2.7.7
    + auparse_goto_record_num@Base 1:2.2.1
    + auparse_init@Base 1:2.2.1
    + auparse_interp_adjust_type@Base 1:2.3.1
    + auparse_interpret_field@Base 1:2.2.1
    + auparse_interpret_realpath@Base 1:2.7.8
    + auparse_interpret_sock_address@Base 1:2.8
    + auparse_interpret_sock_family@Base 1:2.8
    + auparse_interpret_sock_port@Base 1:2.8
    + auparse_new_buffer@Base 1:3.0.5
    + auparse_next_event@Base 1:2.2.1
    + auparse_next_field@Base 1:2.2.1
    + auparse_next_record@Base 1:2.2.1
    + auparse_node_compare@Base 1:2.2.1
    + auparse_normalize@Base 1:2.7.7
    + auparse_normalize_get_action@Base 1:2.7.7
    + auparse_normalize_get_event_kind@Base 1:2.7.7
    + auparse_normalize_get_results@Base 1:2.7.7
    + auparse_normalize_how@Base 1:2.7.7
    + auparse_normalize_key@Base 1:2.7.7
    + auparse_normalize_object_first_attribute@Base 1:2.7.7
    + auparse_normalize_object_kind@Base 1:2.7.7
    + auparse_normalize_object_next_attribute@Base 1:2.7.7
    + auparse_normalize_object_primary2@Base 1:2.8
    + auparse_normalize_object_primary@Base 1:2.7.7
    + auparse_normalize_object_secondary@Base 1:2.7.7
    + auparse_normalize_session@Base 1:2.7.7
    + auparse_normalize_subject_first_attribute@Base 1:2.7.7
    + auparse_normalize_subject_kind@Base 1:2.7.7
    + auparse_normalize_subject_next_attribute@Base 1:2.7.7
    + auparse_normalize_subject_primary@Base 1:2.7.7
    + auparse_normalize_subject_secondary@Base 1:2.7.7
    + auparse_reset@Base 1:2.2.1
    + auparse_set_eoe_timeout@Base 1:3.0.5
    + auparse_set_escape_mode@Base 1:2.4.4
    + auparse_timestamp_compare@Base 1:2.2.1
    + ausearch_add_expression@Base 1:2.2.1
    + ausearch_add_interpreted_item@Base 1:2.2.1
    + ausearch_add_item@Base 1:2.2.1
    + ausearch_add_regex@Base 1:2.2.1
    + ausearch_add_timestamp_item@Base 1:2.2.1
    + ausearch_add_timestamp_item_ex@Base 1:2.4
    + ausearch_clear@Base 1:2.2.1
    + ausearch_next_event@Base 1:2.2.1
    + ausearch_set_stop@Base 1:2.2.1
    + find_config_change_object@Base 1:3.0.5


    --
    Steve Langasek Give me a lever long enough and a Free OS Debian Developer to set it on, and I can move the world. Ubuntu Developer https://www.debian.org/ slangasek@ubuntu.com vorlon@debian.org

    diff -Nru audit-3.1.2/debian/changelog audit-3.1.2/debian/changelog
    --- audit-3.1.2/debian/changelog 2024-01-24 15:05:18.000000000 +0000
    +++ audit-3.1.2/debian/changelog 2024-02-02 16:47:59.000000000 +0000
    @@ -1,3 +1,25 @@
    +audit (1:3.1.2-2.1~exp4) experimental; urgency=medium
    +
    + * Fix accidental hard-coding of amd64 architecture paths in diversions. +
    + -- Steve Langasek <vorlon@debian.org> Fri, 02 Feb 2024 16:47:59 +0000
    +
    +audit (1:3.1.2-2.1~exp3) experimental; urgency=medium
    +
    + * Proper complete fix for usrmerge. Closes: #1061966.
    +
    + -- Steve Langasek <vorlon@debian.org> Wed, 31 Jan 2024 20:39:17 +0000
    +
    +audit (1:3.1.2-2.1~exp2) experimental; urgency=medium
    +
    + * Non-maintainer upload.
    + * Rename libraries for 64-bit time_t transition.
    + * Fix uninstallable packages from the previous upload.
    + * Add usrmerge diversions in preinst to protect against file deletion
    + due to libraries moving between packages. Closes: #1061966.
    +
    + -- Steve Langasek <vorlon@debian.org> Wed, 31 Jan 2024 08:49:07 +0000
    +
    audit (1:3.1.2-2) unstable; urgency=medium

    [ Chris Hofstaedtler ]
    diff -Nru audit-3.1.2/debian/clean audit-3.1.2/debian/clean
    --- audit-3.1.2/debian/clean 1970-01-01 00:00:00.000000000 +0000
    +++ audit-3.1.2/debian/clean 2024-02-02 16:45:43.000000000 +0000
    @@ -0,0 +1,2 @@
    +debian/libaudit1t64.preinst
    +debian/libauparse0t64.preinst
    diff -Nru audit-3.1.2/debian/control audit-3.1.2/debian/control
    --- audit-3.1.2/debian/control 2024-01-24 15:05:18.000000000 +0000
    +++ audit-3.1.2/debian/control 2024-01-31 08:49:07.000000000 +0000
    @@ -26,8 +26,8 @@
    Package: auditd
    Section: admin
    Architecture: linux-any
    -Depends: libaudit1 (= ${binary:Version}),
    - libauparse0 (= ${binary:Version}),
    +Depends: libaudit1t64 (= ${binary:Version}),
    + libauparse0t64 (= ${binary:Version}),
    mawk | gawk,
    ${misc:Depends},
    ${shlibs:Depends}
    @@ -41,29 +41,35 @@
    .
    Also contains the audit dispatcher "audisp".

    -Package: libauparse0
    +Package: libauparse0t64
    +Provides: ${t64:Provides}
    +Replaces: libauparse0
    +Breaks: libauparse0 (<< ${source:Version})
    Architecture: linux-any
    Pre-Depends: ${misc:Pre-Depends}
    -Depends: libaudit1 (= ${binary:Version}), ${misc:Depends}, ${shlibs:Depends}
    +Depends: libaudit1t64 (= ${binary:Version}), ${misc:Depends}, ${shlibs:Depends}
    Multi-Arch: same
    Description: Dynamic library for parsing security auditing
    The libauparse package contains the dynamic libraries needed for
    applications to use the audit framework. It is used to monitor systems for
    security related events.
    .
    - This package contains the libauparse0 library.
    + This package contains the libauparse0t64 library.

    Package: libauparse-dev
    Section: libdevel
    Architecture: linux-any
    -Depends: libauparse0 (= ${binary:Version}), ${misc:Depends}
    +Depends: libauparse0t64 (= ${binary:Version}), ${misc:Depends}
    Multi-Arch: same
    -Description: Header files and static library for the libauparse0 library +Description: Header files and static library for the libauparse0t64 library
    The audit-libs parse package contains the dynamic libraries needed for
    applications to use the audit framework. It is used to monitor systems for
    security related events.

    -Package: libaudit1
    +Package: libaudit1t64
    +Provides: ${t64:Provides}
    +Replaces: libaudit1
    +Breaks: libaudit1 (<< ${source:Version})

    [continued in next message]

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)