[geary: 1/2] Make g_mime_filter_filter implementations more robust (closes #725)
- From: Michael Gratton <mjog src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [geary: 1/2] Make g_mime_filter_filter implementations more robust (closes #725)
- Date: Tue, 17 Mar 2020 04:45:03 +0000 (UTC)
commit dd053ebfbe93bd874332f88fed350bc5058b9a57
Author: Daniel Kahn Gillmor <dkg fifthhorseman net>
Date: Mon Mar 16 08:00:50 2020 -0400
Make g_mime_filter_filter implementations more robust (closes #725)
By default, vala appears to translate an "out uint8[]" argument's size
as a gint*. but the g_mime_filter_filter implementation expects a
gsize*. This Just Works accidentally on most architectures, but fails
on big-endian 64-bit architectures where sizeof(int) == 4, like s390x.
See #725
Signed-off-by: Daniel Kahn Gillmor <dkg fifthhorseman net>
src/engine/rfc822/rfc822-gmime-filter-blockquotes.vala | 6 +++---
src/engine/rfc822/rfc822-gmime-filter-flowed.vala | 4 ++--
src/engine/rfc822/rfc822-gmime-filter-plain.vala | 4 ++--
3 files changed, 7 insertions(+), 7 deletions(-)
---
diff --git a/src/engine/rfc822/rfc822-gmime-filter-blockquotes.vala
b/src/engine/rfc822/rfc822-gmime-filter-blockquotes.vala
index 6f8c118f..8cf7563d 100644
--- a/src/engine/rfc822/rfc822-gmime-filter-blockquotes.vala
+++ b/src/engine/rfc822/rfc822-gmime-filter-blockquotes.vala
@@ -49,7 +49,7 @@ private class Geary.RFC822.FilterBlockquotes : GMime.Filter {
return new_filter;
}
- private void do_filter(uint8[] inbuf, size_t prespace, out unowned uint8[] processed_buffer,
+ private void do_filter([CCode (array_length_type = "gsize")] uint8[] inbuf, size_t prespace, [CCode
(array_length_type = "gsize")] out unowned uint8[] processed_buffer,
out size_t outprespace, bool flush) {
// This may not be strictly necessary.
@@ -122,12 +122,12 @@ private class Geary.RFC822.FilterBlockquotes : GMime.Filter {
outprespace = this.outpre;
}
- public override void filter(uint8[] inbuf, size_t prespace, out unowned uint8[] processed_buffer,
+ public override void filter([CCode (array_length_type = "gsize")] uint8[] inbuf, size_t prespace, [CCode
(array_length_type = "gsize")] out unowned uint8[] processed_buffer,
out size_t outprespace) {
do_filter(inbuf, prespace, out processed_buffer, out outprespace, false);
}
- public override void complete(uint8[] inbuf, size_t prespace, out unowned uint8[] processed_buffer,
+ public override void complete([CCode (array_length_type = "gsize")] uint8[] inbuf, size_t prespace,
[CCode (array_length_type = "gsize")] out unowned uint8[] processed_buffer,
out size_t outprespace) {
do_filter(inbuf, prespace, out processed_buffer, out outprespace, true);
}
diff --git a/src/engine/rfc822/rfc822-gmime-filter-flowed.vala
b/src/engine/rfc822/rfc822-gmime-filter-flowed.vala
index d018c537..ffa19009 100644
--- a/src/engine/rfc822/rfc822-gmime-filter-flowed.vala
+++ b/src/engine/rfc822/rfc822-gmime-filter-flowed.vala
@@ -57,7 +57,7 @@ private class Geary.RFC822.FilterFlowed : GMime.Filter {
return new_filter;
}
- public override void filter(uint8[] inbuf, size_t prespace, out unowned uint8[] processed_buffer,
+ public override void filter([CCode (array_length_type = "gsize")] uint8[] inbuf, size_t prespace, [CCode
(array_length_type = "gsize")] out unowned uint8[] processed_buffer,
out size_t outprespace) {
// Worst-case scenario: We are about to leave the prefix,
@@ -147,7 +147,7 @@ private class Geary.RFC822.FilterFlowed : GMime.Filter {
outprespace = this.outpre;
}
- public override void complete(uint8[] inbuf, size_t prespace, out unowned uint8[] processed_buffer,
+ public override void complete([CCode (array_length_type = "gsize")] uint8[] inbuf, size_t prespace,
[CCode (array_length_type = "gsize")] out unowned uint8[] processed_buffer,
out size_t outprespace) {
filter(inbuf, prespace, out processed_buffer, out outprespace);
}
diff --git a/src/engine/rfc822/rfc822-gmime-filter-plain.vala
b/src/engine/rfc822/rfc822-gmime-filter-plain.vala
index b38baac0..36c970df 100644
--- a/src/engine/rfc822/rfc822-gmime-filter-plain.vala
+++ b/src/engine/rfc822/rfc822-gmime-filter-plain.vala
@@ -26,7 +26,7 @@ private class Geary.RFC822.FilterPlain : GMime.Filter {
return new_filter;
}
- public override void filter(uint8[] inbuf, size_t prespace, out unowned uint8[] processed_buffer,
+ public override void filter([CCode (array_length_type = "gsize")] uint8[] inbuf, size_t prespace, [CCode
(array_length_type = "gsize")] out unowned uint8[] processed_buffer,
out size_t outprespace) {
// This may not be strictly necessary.
@@ -56,7 +56,7 @@ private class Geary.RFC822.FilterPlain : GMime.Filter {
outprespace = this.outpre;
}
- public override void complete(uint8[] inbuf, size_t prespace, out unowned uint8[] processed_buffer,
+ public override void complete([CCode (array_length_type = "gsize")] uint8[] inbuf, size_t prespace,
[CCode (array_length_type = "gsize")] out unowned uint8[] processed_buffer,
out size_t outprespace) {
filter(inbuf, prespace, out processed_buffer, out outprespace);
}
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]