Fix crash during early close of TLS channel
-----BEGIN PGP SIGNATURE----- iQIzBAABCAAdFiEE2vOm/bJrYpEtDo4/vobrtBUQT98FAmTJRN4ACgkQvobrtBUQ T9+jYBAAinW63Oj4PVXMD1hQr3r6aShr3O5YkUqZjWeOh0+VdJpfRwk39Cgagjp5 WURcPIlE7NR78ZeHQmd4w+D36EyzqMajm+MuGnOUUdCUR/zCHmAzeClyDlEZoril Fn6urO/qg+38vdyvnZUJ35KC5vtTn+uX0djEVJRwrOb0mXaeU6z3RY/XzIJcY9HZ sL1yhyyAaQ2T5lX8kD3cJhyqjjpZHUXWFE0HoxxzcfR4dLOF45RevT8fPzrLl+wi UrTMc8agylo2J/h6FD9niUNlgUjmeRp6j5q6bLGVx1gaoi6VTxA6wl074rMqW37V bXqoYffGeA9pIGdXSqSnOeRkqONbgAoLzlNkLSgVEz96janqZYydkldS5YaOC8VM qI0Je6fWFQIbg9acf6Wdb8aoqaM7chgU7tkSQ51wnj4ItIwfWJADm4/ZYDrgeFC6 vj5I+aMyqneEbouzNFsYjEE5KSjqwe8Hdv9VLhfPI9uluzveMencYGPm4gufzO46 t6yYi+SGvejDLE9dxExbD7xwt79VRTC5oPes6tZRv+C+ccKAXT/igquQsvBHehoo Py1bi0Gi/PwkzvpXgdAfsWJDM8tFPsveicdNdYG4iqxDOrNWlbvbpdqNzjLOT9jt 8gr8MY9fGMVeBi29I46AsAmE7K78yg88ZoNBhy6C0oIhGKCDK1s= =qwqP -----END PGP SIGNATURE----- Merge tag 'io-tls-hs-crash-pull-request' of https://gitlab.com/berrange/qemu into staging Fix crash during early close of TLS channel # -----BEGIN PGP SIGNATURE----- # # iQIzBAABCAAdFiEE2vOm/bJrYpEtDo4/vobrtBUQT98FAmTJRN4ACgkQvobrtBUQ # T9+jYBAAinW63Oj4PVXMD1hQr3r6aShr3O5YkUqZjWeOh0+VdJpfRwk39Cgagjp5 # WURcPIlE7NR78ZeHQmd4w+D36EyzqMajm+MuGnOUUdCUR/zCHmAzeClyDlEZoril # Fn6urO/qg+38vdyvnZUJ35KC5vtTn+uX0djEVJRwrOb0mXaeU6z3RY/XzIJcY9HZ # sL1yhyyAaQ2T5lX8kD3cJhyqjjpZHUXWFE0HoxxzcfR4dLOF45RevT8fPzrLl+wi # UrTMc8agylo2J/h6FD9niUNlgUjmeRp6j5q6bLGVx1gaoi6VTxA6wl074rMqW37V # bXqoYffGeA9pIGdXSqSnOeRkqONbgAoLzlNkLSgVEz96janqZYydkldS5YaOC8VM # qI0Je6fWFQIbg9acf6Wdb8aoqaM7chgU7tkSQ51wnj4ItIwfWJADm4/ZYDrgeFC6 # vj5I+aMyqneEbouzNFsYjEE5KSjqwe8Hdv9VLhfPI9uluzveMencYGPm4gufzO46 # t6yYi+SGvejDLE9dxExbD7xwt79VRTC5oPes6tZRv+C+ccKAXT/igquQsvBHehoo # Py1bi0Gi/PwkzvpXgdAfsWJDM8tFPsveicdNdYG4iqxDOrNWlbvbpdqNzjLOT9jt # 8gr8MY9fGMVeBi29I46AsAmE7K78yg88ZoNBhy6C0oIhGKCDK1s= # =qwqP # -----END PGP SIGNATURE----- # gpg: Signature made Tue 01 Aug 2023 10:46:06 AM PDT # gpg: using RSA key DAF3A6FDB26B62912D0E8E3FBE86EBB415104FDF # gpg: Good signature from "Daniel P. Berrange <dan@berrange.com>" [full] # gpg: aka "Daniel P. Berrange <berrange@redhat.com>" [full] * tag 'io-tls-hs-crash-pull-request' of https://gitlab.com/berrange/qemu: io: remove io watch if TLS channel is closed during handshake Signed-off-by: Richard Henderson <richard.henderson@linaro.org>
This commit is contained in:
commit
a51c070538
@ -48,6 +48,7 @@ struct QIOChannelTLS {
|
|||||||
QIOChannel *master;
|
QIOChannel *master;
|
||||||
QCryptoTLSSession *session;
|
QCryptoTLSSession *session;
|
||||||
QIOChannelShutdown shutdown;
|
QIOChannelShutdown shutdown;
|
||||||
|
guint hs_ioc_tag;
|
||||||
};
|
};
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -198,6 +198,7 @@ static void qio_channel_tls_handshake_task(QIOChannelTLS *ioc,
|
|||||||
}
|
}
|
||||||
|
|
||||||
trace_qio_channel_tls_handshake_pending(ioc, status);
|
trace_qio_channel_tls_handshake_pending(ioc, status);
|
||||||
|
ioc->hs_ioc_tag =
|
||||||
qio_channel_add_watch_full(ioc->master,
|
qio_channel_add_watch_full(ioc->master,
|
||||||
condition,
|
condition,
|
||||||
qio_channel_tls_handshake_io,
|
qio_channel_tls_handshake_io,
|
||||||
@ -218,6 +219,7 @@ static gboolean qio_channel_tls_handshake_io(QIOChannel *ioc,
|
|||||||
QIOChannelTLS *tioc = QIO_CHANNEL_TLS(
|
QIOChannelTLS *tioc = QIO_CHANNEL_TLS(
|
||||||
qio_task_get_source(task));
|
qio_task_get_source(task));
|
||||||
|
|
||||||
|
tioc->hs_ioc_tag = 0;
|
||||||
g_free(data);
|
g_free(data);
|
||||||
qio_channel_tls_handshake_task(tioc, task, context);
|
qio_channel_tls_handshake_task(tioc, task, context);
|
||||||
|
|
||||||
@ -378,6 +380,10 @@ static int qio_channel_tls_close(QIOChannel *ioc,
|
|||||||
{
|
{
|
||||||
QIOChannelTLS *tioc = QIO_CHANNEL_TLS(ioc);
|
QIOChannelTLS *tioc = QIO_CHANNEL_TLS(ioc);
|
||||||
|
|
||||||
|
if (tioc->hs_ioc_tag) {
|
||||||
|
g_clear_handle_id(&tioc->hs_ioc_tag, g_source_remove);
|
||||||
|
}
|
||||||
|
|
||||||
return qio_channel_close(tioc->master, errp);
|
return qio_channel_close(tioc->master, errp);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user