Package: libssh-4
Version: 0.11.1-1
Severity: important
Tags: upstream
Control: affects -1 = qemu-block-extra qemu guestmount guestfish
Dear Maintainer,
With libssh-4 (0.11.1) qemu fails to access remote disk images via
ssh. After downgrading to libssh-4 (0.10.6-3) the VM starts again as
expected.
To reproduce the issue on a amd64 machine
* make sure you have sshd running
* make sure sure can ssh to localhost
* make sure you have ssh-agent running and preloaded with your private key
* apt install qemu-system-x86
* download and unpack the amd64-pc disk image from
https://people.debian.org/~gio/dqib/
* cd to the dqib_amd64-pc directory resulting from unpacking
* run
qemu-system-x86_64 -machine 'pc' -enable-kvm -m 1G \
-drive
file=ssh://<user>@localhost/home/<user>/.../dqib_amd64-pc/image.qcow2 \
-kernel kernel -initrd initrd -nographic -append "root=LABEL=rootfs
console=ttyS0"
With libssh-4 (0.11.1-1) qemu-system-x86_64 exits with error message
Could not read image for determining its format: Input/output error
With libssh-4 (0.10-6-3) the VM starts up.
For guestfish and guestmount downgrading libssh-4 does not help.
Running questmount with libssh-4 (0.11.1-1)
guestmount -i -a
ssh://<user>@localhost/home/<user>/.../dqib_amd64-pc/image.qcow2 <mount point>
returns (amongst others)
libguestfs: error: appliance closed the connection unexpectedly.
Running questmount with libssh-4 (0.10-6-3) returns
guestmount: /lib/x86_64-linux-gnu/libssh.so.4: version `LIBSSH_4_10_0' not
found (required by /lib/x86_64-linux-gnu/libvirt.so.0)
The attached report, generated using abi-compliance-checker, reveals
problematic changes to data types
ssh_callbacks_struct, ssh_channel_callbacks_struct in callbacks.h
sftp_session_struct in sftp.h
Hope this helps to fix the issue.
Sven
-- System Information:
Debian Release: trixie/sid
APT prefers testing
APT policy: (500, 'testing')
Architecture: amd64 (x86_64)
Kernel: Linux 6.11.2-amd64 (SMP w/8 CPU threads; PREEMPT)
Kernel taint flags: TAINT_OOT_MODULE, TAINT_UNSIGNED_MODULE
Locale: LANG=de_DE.UTF-8, LC_CTYPE=de_DE.UTF-8 (charmap=UTF-8),
LANGUAGE not set
Shell: /bin/sh linked to /usr/bin/dash
Init: systemd (via /run/systemd/system)
LSM: AppArmor: enabled
Versions of packages libssh-4 depends on:
ii libc6 2.40-3
ii libgssapi-krb5-2 1.21.3-3
ii libssl3t64 3.3.2-1
ii zlib1g 1:1.3.dfsg+really1.3.1-1
libssh-4 recommends no packages.
libssh-4 suggests no packages.
-- no debconf information
--
GPG Fingerprint
3DF5 E8AA 43FC 9FDF D086 F195 ADF5 0EDA F8AD D585
Title: libssh: 1.10.6 to 1.11.0 compatibility report
API compatibility report for the libssh library between 1.10.6 and 1.11.0 versions on x86_64
Test Info
| Library Name | libssh |
| Version #1 | 1.10.6 |
| Version #2 | 1.11.0 |
| Arch | x86_64 |
| GCC Version | 14 |
| Subject | Binary Compatibility |
Test Results
| Total Header Files | 8 |
| Total Libraries | 1 |
| Total Symbols / Types | 424 / 156 |
| Compatibility |
100% |
Problem Summary
| Severity | Count |
|---|
| Added Symbols | - | 18 |
| Removed Symbols | High | 0 |
Problems with Data Types | High | 0 |
| Medium | 0 |
| Low | 7 |
Problems with Symbols | High | 0 |
| Medium | 0 |
| Low | 0 |
Problems with Constants | Low | 0 |
Other Changes in Data Types | - | 8 |
Added Symbols 18
libssh.h,
libssh.so.4.10.1
ssh_channel_get_exit_state ( ssh_channel channel, uint32_t* pexit_code, char** pexit_signal, int* pcore_dumped ) @@ LIBSSH_4_10_0
ssh_channel_request_pty_size_modes ( ssh_channel channel, char const* term, int cols, int rows, unsigned char const* modes, size_t modes_len ) @@ LIBSSH_4_10_0
ssh_pki_export_privkey_base64_format ( ssh_key const privkey, char const* passphrase, ssh_auth_callback auth_fn, void* auth_data, char** b64_key, enum ssh_file_format_e format ) @@ LIBSSH_4_10_0
ssh_pki_export_privkey_file_format ( ssh_key const privkey, char const* passphrase, ssh_auth_callback auth_fn, void* auth_data, char const* filename, enum ssh_file_format_e format ) @@ LIBSSH_4_10_0
ssh_request_no_more_sessions ( ssh_session session ) @@ LIBSSH_4_10_0
sftp.h,
libssh.so.4.10.1
sftp_aio_begin_read ( sftp_file file, size_t len, sftp_aio* aio ) @@ LIBSSH_4_10_0
sftp_aio_begin_write ( sftp_file file, void const* buf, size_t len, sftp_aio* aio ) @@ LIBSSH_4_10_0
sftp_aio_free ( sftp_aio aio ) @@ LIBSSH_4_10_0
sftp_aio_wait_read ( sftp_aio* aio, void* buf, size_t buf_size ) @@ LIBSSH_4_10_0
sftp_aio_wait_write ( sftp_aio* aio ) @@ LIBSSH_4_10_0
sftp_expand_path ( sftp_session sftp, char const* path ) @@ LIBSSH_4_10_0
sftp_hardlink ( sftp_session sftp, char const* oldpath, char const* newpath ) @@ LIBSSH_4_10_0
sftp_home_directory ( sftp_session sftp, char const* username ) @@ LIBSSH_4_10_0
sftp_limits ( sftp_session sftp ) @@ LIBSSH_4_10_0
sftp_limits_free ( sftp_limits_t limits ) @@ LIBSSH_4_10_0
sftp_lsetstat ( sftp_session sftp, char const* file, sftp_attributes attr ) @@ LIBSSH_4_10_0
sftpserver.h,
libssh.so.4.10.1
sftp_channel_default_data_callback ( ssh_session session, ssh_channel channel, void* data, uint32_t len, int is_stderr, void* userdata ) @@ LIBSSH_4_10_0
sftp_channel_default_subsystem_request ( ssh_session session, ssh_channel channel, char const* subsystem, void* userdata ) @@ LIBSSH_4_10_0
to the top
Problems with Data Types, Low Severity 7
callbacks.h
[+] struct ssh_callbacks_struct 2
|
Change |
Effect |
| 1 |
Field channel_open_request_forwarded_tcpip_function has been added to this type. |
1) This field will not be initialized by old clients. 2) Size of the inclusive type has been changed.
NOTE: this field should be accessed only from the new library functions, otherwise it may result in crash or incorrect behavior of applications. |
| 2 |
Size of this type has been changed from 64 bytes to 72 bytes. |
The fields or parameters of such data type may be incorrectly initialized or accessed by old client applications. |
[+] affected symbols: 1 (0.2%)
ssh_set_callbacks ( ssh_session session, ssh_callbacks cb )
2nd parameter 'cb' (pointer) has base type 'struct ssh_callbacks_struct'.
[+] struct ssh_channel_callbacks_struct 3
|
Change |
Effect |
| 1 |
Field channel_open_response_function has been added to this type. |
1) This field will not be initialized by old clients. 2) Size of the inclusive type has been changed.
NOTE: this field should be accessed only from the new library functions, otherwise it may result in crash or incorrect behavior of applications. |
| 2 |
Field channel_request_response_function has been added to this type. |
1) This field will not be initialized by old clients. 2) Size of the inclusive type has been changed.
NOTE: this field should be accessed only from the new library functions, otherwise it may result in crash or incorrect behavior of applications. |
| 3 |
Size of this type has been changed from 136 bytes to 152 bytes. |
The fields or parameters of such data type may be incorrectly initialized or accessed by old client applications. |
[+] affected symbols: 3 (0.7%)
ssh_add_channel_callbacks ( ssh_channel channel, ssh_channel_callbacks cb )
2nd parameter 'cb' (pointer) has base type 'struct ssh_channel_callbacks_struct'.
ssh_remove_channel_callbacks ( ssh_channel channel, ssh_channel_callbacks cb )
2nd parameter 'cb' (pointer) has base type 'struct ssh_channel_callbacks_struct'.
ssh_set_channel_callbacks ( ssh_channel channel, ssh_channel_callbacks cb )
2nd parameter 'cb' (pointer) has base type 'struct ssh_channel_callbacks_struct'.
sftp.h
[+] struct sftp_session_struct 2
|
Change |
Effect |
| 1 |
Field limits has been added to this type. |
1) This field will not be initialized by old clients. 2) Size of the inclusive type has been changed.
NOTE: this field should be accessed only from the new library functions, otherwise it may result in crash or incorrect behavior of applications. |
| 2 |
Size of this type has been changed from 72 bytes to 80 bytes. |
The fields or parameters of such data type may be incorrectly initialized or accessed by old client applications. |
[+] affected symbols: 63 (14.9%)
sftp_async_read ( sftp_file file, void* data, uint32_t len, uint32_t id )
Field 'file.sftp' in 1st parameter 'file' (pointer) has base type 'struct sftp_session_struct'.
sftp_async_read_begin ( sftp_file file, uint32_t len )
Field 'file.sftp' in 1st parameter 'file' (pointer) has base type 'struct sftp_session_struct'.
sftp_canonicalize_path ( sftp_session sftp, char const* path )
1st parameter 'sftp' (pointer) has base type 'struct sftp_session_struct'.
sftp_chmod ( sftp_session sftp, char const* file, mode_t mode )
1st parameter 'sftp' (pointer) has base type 'struct sftp_session_struct'.
sftp_chown ( sftp_session sftp, char const* file, uid_t owner, gid_t group )
1st parameter 'sftp' (pointer) has base type 'struct sftp_session_struct'.
sftp_client_message_free ( sftp_client_message msg )
Field 'msg.sftp' in 1st parameter 'msg' (pointer) has base type 'struct sftp_session_struct'.
sftp_client_message_get_data ( sftp_client_message msg )
Field 'msg.sftp' in 1st parameter 'msg' (pointer) has base type 'struct sftp_session_struct'.
sftp_client_message_get_filename ( sftp_client_message msg )
Field 'msg.sftp' in 1st parameter 'msg' (pointer) has base type 'struct sftp_session_struct'.
sftp_client_message_get_flags ( sftp_client_message msg )
Field 'msg.sftp' in 1st parameter 'msg' (pointer) has base type 'struct sftp_session_struct'.
sftp_client_message_get_submessage ( sftp_client_message msg )
Field 'msg.sftp' in 1st parameter 'msg' (pointer) has base type 'struct sftp_session_struct'.
...
to the top
Other Changes in Data Types 8
libssh.h
[+] enum ssh_keycmp_e 1
|
Change |
Effect |
| 1 |
The member SSH_KEY_CMP_CERTIFICATE with value 2 has been added. |
No effect. |
[+] affected symbols: 1 (0.2%)
ssh_key_cmp ( ssh_key const k1, ssh_key const k2, enum ssh_keycmp_e what )
3rd parameter 'what' is of type 'enum ssh_keycmp_e'.
[+] enum ssh_options_e 6
|
Change |
Effect |
| 1 |
The member SSH_OPTIONS_CERTIFICATE with value 46 has been added. |
No effect. |
| 2 |
The member SSH_OPTIONS_CONTROL_MASTER with value 44 has been added. |
No effect. |
| 3 |
The member SSH_OPTIONS_CONTROL_PATH with value 45 has been added. |
No effect. |
| 4 |
The member SSH_OPTIONS_IDENTITIES_ONLY with value 43 has been added. |
No effect. |
| 5 |
The member SSH_OPTIONS_PROXYJUMP with value 47 has been added. |
No effect. |
| 6 |
The member SSH_OPTIONS_PROXYJUMP_CB_LIST_APPEND with value 48 has been added. |
No effect. |
[+] affected symbols: 2 (0.5%)
ssh_options_get ( ssh_session session, enum ssh_options_e type, char** value )
2nd parameter 'type' is of type 'enum ssh_options_e'.
ssh_options_set ( ssh_session session, enum ssh_options_e type, void const* value )
2nd parameter 'type' is of type 'enum ssh_options_e'.
server.h
[+] enum ssh_bind_options_e 1
|
Change |
Effect |
| 1 |
The member SSH_BIND_OPTIONS_IMPORT_KEY_STR with value 22 has been added. |
No effect. |
[+] affected symbols: 1 (0.2%)
ssh_bind_options_set ( ssh_bind sshbind, enum ssh_bind_options_e type, void const* value )
2nd parameter 'type' is of type 'enum ssh_bind_options_e'.
to the top
Header Files 8
callbacks.h
legacy.h
libssh.h
libssh_version.h
libsshpp.hpp
server.h
sftp.h
ssh2.h
to the top
Libraries 1
libssh.so.4.9.6
to the top
Test Info
| Library Name | libssh |
| Version #1 | 1.10.6 |
| Version #2 | 1.11.0 |
| Arch | x86_64 |
| Subject | Source Compatibility |
Test Results
| Total Header Files | 8 |
| Total Libraries | 1 |
| Total Symbols / Types | 502 / 163 |
| Compatibility |
100% |
Problem Summary
| Severity | Count |
|---|
| Added Symbols | - | 18 |
| Removed Symbols | High | 0 |
Problems with Data Types | High | 0 |
| Medium | 0 |
| Low | 4 |
Problems with Symbols | High | 0 |
| Medium | 0 |
| Low | 0 |
Problems with Constants | Low | 2 |
Other Changes in Data Types | - | 8 |
Added Symbols 18
libssh.h
ssh_channel_get_exit_state ( ssh_channel channel, uint32_t* pexit_code, char** pexit_signal, int* pcore_dumped )
ssh_channel_request_pty_size_modes ( ssh_channel channel, char const* term, int cols, int rows, unsigned char const* modes, size_t modes_len )
ssh_pki_export_privkey_base64_format ( ssh_key const privkey, char const* passphrase, ssh_auth_callback auth_fn, void* auth_data, char** b64_key, enum ssh_file_format_e format )
ssh_pki_export_privkey_file_format ( ssh_key const privkey, char const* passphrase, ssh_auth_callback auth_fn, void* auth_data, char const* filename, enum ssh_file_format_e format )
ssh_request_no_more_sessions ( ssh_session session )
sftp.h
sftp_aio_begin_read ( sftp_file file, size_t len, sftp_aio* aio )
sftp_aio_begin_write ( sftp_file file, void const* buf, size_t len, sftp_aio* aio )
sftp_aio_free ( sftp_aio aio )
sftp_aio_wait_read ( sftp_aio* aio, void* buf, size_t buf_size )
sftp_aio_wait_write ( sftp_aio* aio )
sftp_expand_path ( sftp_session sftp, char const* path )
sftp_hardlink ( sftp_session sftp, char const* oldpath, char const* newpath )
sftp_home_directory ( sftp_session sftp, char const* username )
sftp_limits ( sftp_session sftp )
sftp_limits_free ( sftp_limits_t limits )
sftp_lsetstat ( sftp_session sftp, char const* file, sftp_attributes attr )
sftpserver.h
sftp_channel_default_data_callback ( ssh_session session, ssh_channel channel, void* data, uint32_t len, int is_stderr, void* userdata )
sftp_channel_default_subsystem_request ( ssh_session session, ssh_channel channel, char const* subsystem, void* userdata )
to the top
Problems with Data Types, Low Severity 4
callbacks.h
[+] struct ssh_callbacks_struct 1
|
Change |
Effect |
| 1 |
Field channel_open_request_forwarded_tcpip_function has been added to this type. |
This field will not be initialized or used by old client applications. |
[+] affected symbols: 1 (0.2%)
ssh_set_callbacks ( ssh_session session, ssh_callbacks cb )
2nd parameter 'cb' (pointer) has base type 'struct ssh_callbacks_struct'.
[+] struct ssh_channel_callbacks_struct 2
|
Change |
Effect |
| 1 |
Field channel_open_response_function has been added to this type. |
This field will not be initialized or used by old client applications. |
| 2 |
Field channel_request_response_function has been added to this type. |
This field will not be initialized or used by old client applications. |
[+] affected symbols: 3 (0.6%)
ssh_add_channel_callbacks ( ssh_channel channel, ssh_channel_callbacks cb )
2nd parameter 'cb' (pointer) has base type 'struct ssh_channel_callbacks_struct'.
ssh_remove_channel_callbacks ( ssh_channel channel, ssh_channel_callbacks cb )
2nd parameter 'cb' (pointer) has base type 'struct ssh_channel_callbacks_struct'.
ssh_set_channel_callbacks ( ssh_channel channel, ssh_channel_callbacks cb )
2nd parameter 'cb' (pointer) has base type 'struct ssh_channel_callbacks_struct'.
sftp.h
[+] struct sftp_session_struct 1
|
Change |
Effect |
| 1 |
Field limits has been added to this type. |
This field will not be initialized or used by old client applications. |
[+] affected symbols: 63 (12.5%)
sftp_async_read ( sftp_file file, void* data, uint32_t len, uint32_t id )
Field 'file.sftp' in 1st parameter 'file' (pointer) has base type 'struct sftp_session_struct'.
sftp_async_read_begin ( sftp_file file, uint32_t len )
Field 'file.sftp' in 1st parameter 'file' (pointer) has base type 'struct sftp_session_struct'.
sftp_canonicalize_path ( sftp_session sftp, char const* path )
1st parameter 'sftp' (pointer) has base type 'struct sftp_session_struct'.
sftp_chmod ( sftp_session sftp, char const* file, mode_t mode )
1st parameter 'sftp' (pointer) has base type 'struct sftp_session_struct'.
sftp_chown ( sftp_session sftp, char const* file, uid_t owner, gid_t group )
1st parameter 'sftp' (pointer) has base type 'struct sftp_session_struct'.
sftp_client_message_free ( sftp_client_message msg )
Field 'msg.sftp' in 1st parameter 'msg' (pointer) has base type 'struct sftp_session_struct'.
sftp_client_message_get_data ( sftp_client_message msg )
Field 'msg.sftp' in 1st parameter 'msg' (pointer) has base type 'struct sftp_session_struct'.
sftp_client_message_get_filename ( sftp_client_message msg )
Field 'msg.sftp' in 1st parameter 'msg' (pointer) has base type 'struct sftp_session_struct'.
sftp_client_message_get_flags ( sftp_client_message msg )
Field 'msg.sftp' in 1st parameter 'msg' (pointer) has base type 'struct sftp_session_struct'.
sftp_client_message_get_submessage ( sftp_client_message msg )
Field 'msg.sftp' in 1st parameter 'msg' (pointer) has base type 'struct sftp_session_struct'.
...
to the top
Problems with Constants, Low Severity 2
libssh_version.h
[+] LIBSSH_VERSION_MICRO
|
Change |
Effect |
| 1 |
The value of constant LIBSSH_VERSION_MICRO has been changed from 6 to 1. |
Recompilation of a client program may be broken. |
[+] LIBSSH_VERSION_MINOR
|
Change |
Effect |
| 1 |
The value of constant LIBSSH_VERSION_MINOR has been changed from 10 to 11. |
Recompilation of a client program may be broken. |
to the top
Other Changes in Data Types 8
libssh.h
[+] enum ssh_keycmp_e 1
|
Change |
Effect |
| 1 |
The member SSH_KEY_CMP_CERTIFICATE with value 2 has been added. |
No effect. |
[+] affected symbols: 1 (0.2%)
ssh_key_cmp ( ssh_key const k1, ssh_key const k2, enum ssh_keycmp_e what )
3rd parameter 'what' is of type 'enum ssh_keycmp_e'.
[+] enum ssh_options_e 6
|
Change |
Effect |
| 1 |
The member SSH_OPTIONS_CERTIFICATE with value 46 has been added. |
No effect. |
| 2 |
The member SSH_OPTIONS_CONTROL_MASTER with value 44 has been added. |
No effect. |
| 3 |
The member SSH_OPTIONS_CONTROL_PATH with value 45 has been added. |
No effect. |
| 4 |
The member SSH_OPTIONS_IDENTITIES_ONLY with value 43 has been added. |
No effect. |
| 5 |
The member SSH_OPTIONS_PROXYJUMP with value 47 has been added. |
No effect. |
| 6 |
The member SSH_OPTIONS_PROXYJUMP_CB_LIST_APPEND with value 48 has been added. |
No effect. |
[+] affected symbols: 5 (1%)
ssh::Session::setOption ( enum ssh_options_e type, long option )
1st parameter 'type' is of type 'enum ssh_options_e'.
ssh::Session::setOption ( enum ssh_options_e type, char const* option )
1st parameter 'type' is of type 'enum ssh_options_e'.
ssh::Session::setOption ( enum ssh_options_e type, void* option )
1st parameter 'type' is of type 'enum ssh_options_e'.
ssh_options_get ( ssh_session session, enum ssh_options_e type, char** value )
2nd parameter 'type' is of type 'enum ssh_options_e'.
ssh_options_set ( ssh_session session, enum ssh_options_e type, void const* value )
2nd parameter 'type' is of type 'enum ssh_options_e'.
server.h
[+] enum ssh_bind_options_e 1
|
Change |
Effect |
| 1 |
The member SSH_BIND_OPTIONS_IMPORT_KEY_STR with value 22 has been added. |
No effect. |
[+] affected symbols: 1 (0.2%)
ssh_bind_options_set ( ssh_bind sshbind, enum ssh_bind_options_e type, void const* value )
2nd parameter 'type' is of type 'enum ssh_bind_options_e'.
to the top
Header Files 8
callbacks.h
legacy.h
libssh.h
libssh_version.h
libsshpp.hpp
server.h
sftp.h
ssh2.h
to the top
Libraries 1
libssh.so.4.9.6
to the top
signature.asc
Description: This is a digitally signed message part