[glib: 1/2] Another fix on g_socket_send_message()
- From: Sebastian Dröge <sdroege src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [glib: 1/2] Another fix on g_socket_send_message()
- Date: Wed, 13 Jan 2021 14:35:31 +0000 (UTC)
commit b6f7e4678bfa8e1db6da61c9661cf0c9b2b615d6
Author: Emmanuel Fleury <emmanuel fleury gmail com>
Date: Wed Jan 13 13:23:40 2021 +0100
Another fix on g_socket_send_message()
We forgot to take into account the case where num_vectors is '-1'.
gio/gsocket.c | 35 +++++++++++++++++++++++++++--------
1 file changed, 27 insertions(+), 8 deletions(-)
---
diff --git a/gio/gsocket.c b/gio/gsocket.c
index dfb6f8d8f..3a02dccde 100644
--- a/gio/gsocket.c
+++ b/gio/gsocket.c
@@ -4784,18 +4784,37 @@ g_socket_send_message (GSocket *socket,
gsize bytes_written = 0;
gsize vectors_size = 0;
- for (gsize i = 0; i < num_vectors; i++)
+ if (num_vectors != -1)
{
- /* No wrap-around for vectors_size */
- if (vectors_size > vectors_size + vectors[i].size)
+ for (gint i = 0; i < num_vectors; i++)
{
- g_set_error (error, G_IO_ERROR, G_IO_ERROR_INVALID_ARGUMENT,
- _("Unable to send message: %s"),
- _("Message vectors too large"));
- return -1;
+ /* No wrap-around for vectors_size */
+ if (vectors_size > vectors_size + vectors[i].size)
+ {
+ g_set_error (error, G_IO_ERROR, G_IO_ERROR_INVALID_ARGUMENT,
+ _("Unable to send message: %s"),
+ _("Message vectors too large"));
+ return -1;
+ }
+
+ vectors_size += vectors[i].size;
}
+ }
+ else
+ {
+ for (gsize i = 0; vectors[i].buffer != NULL; i++)
+ {
+ /* No wrap-around for vectors_size */
+ if (vectors_size > vectors_size + vectors[i].size)
+ {
+ g_set_error (error, G_IO_ERROR, G_IO_ERROR_INVALID_ARGUMENT,
+ _("Unable to send message: %s"),
+ _("Message vectors too large"));
+ return -1;
+ }
- vectors_size += vectors[i].size;
+ vectors_size += vectors[i].size;
+ }
}
/* Check if vector's buffers are too big for gssize */
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]