Update to 0.3.1

This commit is contained in:
Kalev Lember 2019-01-05 17:48:12 +01:00
parent 37655d1654
commit 89e216ee3b
6 changed files with 7 additions and 157 deletions

1
.gitignore vendored
View File

@ -7,3 +7,4 @@
/libgxps-0.2.4.tar.xz
/libgxps-0.2.5.tar.xz
/libgxps-0.3.0.tar.xz
/libgxps-0.3.1.tar.xz

View File

@ -1,19 +0,0 @@
commit 123dd99c6a1ae2ef6fcb5547e51fa58e8c954b51
Author: Carlos Garcia Campos <carlosgc@gnome.org>
Date: Fri Dec 8 11:11:38 2017 +0100
gxps-images: fix integer overflow in png decoder
diff --git a/libgxps/gxps-images.c b/libgxps/gxps-images.c
index 98c7052..19cb1c0 100644
--- a/libgxps/gxps-images.c
+++ b/libgxps/gxps-images.c
@@ -286,7 +286,7 @@ gxps_images_create_from_png (GXPSArchive *zip,
}
stride = cairo_format_stride_for_width (format, png_width);
- if (stride < 0) {
+ if (stride < 0 || png_height >= INT_MAX / stride) {
fill_png_error (error, image_uri, NULL);
g_object_unref (stream);
png_destroy_read_struct (&png, &info, NULL);

View File

@ -1,106 +0,0 @@
commit b458226e162fe1ffe7acb4230c114a52ada5131b
Author: Carlos Garcia Campos <carlosgc@gnome.org>
Date: Sat May 5 12:01:24 2018 +0200
gxps-archive: Ensure gxps_archive_read_entry() fills the GError in case of failure
And fix the callers to not overwrite the GError.
diff --git a/libgxps/gxps-archive.c b/libgxps/gxps-archive.c
index e763773..346ba73 100644
--- a/libgxps/gxps-archive.c
+++ b/libgxps/gxps-archive.c
@@ -406,9 +406,13 @@ gxps_archive_read_entry (GXPSArchive *archive,
gboolean retval;
stream = gxps_archive_open (archive, path);
- if (!stream)
- /* TODO: Error */
+ if (!stream) {
+ g_set_error (error,
+ G_IO_ERROR,
+ G_IO_ERROR_NOT_FOUND,
+ "The entry '%s' was not found in archive", path);
return FALSE;
+ }
entry_size = archive_entry_size (GXPS_ARCHIVE_INPUT_STREAM (stream)->entry);
if (entry_size <= 0) {
@@ -423,7 +427,7 @@ gxps_archive_read_entry (GXPSArchive *archive,
*buffer = g_malloc (buffer_size);
do {
bytes = g_input_stream_read (stream, &buf, BUFFER_SIZE, NULL, error);
- if (*error != NULL) {
+ if (bytes < 0) {
g_free (*buffer);
g_object_unref (stream);
@@ -441,7 +445,10 @@ gxps_archive_read_entry (GXPSArchive *archive,
g_object_unref (stream);
if (*bytes_read == 0) {
- /* TODO: Error */
+ g_set_error (error,
+ G_IO_ERROR,
+ G_IO_ERROR_INVALID_DATA,
+ "The entry '%s' is empty in archive", path);
g_free (*buffer);
return FALSE;
}
diff --git a/libgxps/gxps-fonts.c b/libgxps/gxps-fonts.c
index 882157d..8d02ffc 100644
--- a/libgxps/gxps-fonts.c
+++ b/libgxps/gxps-fonts.c
@@ -220,19 +220,12 @@ gxps_fonts_new_font_face (GXPSArchive *zip,
cairo_font_face_t *font_face;
guchar *font_data;
gsize font_data_len;
- gboolean res;
- res = gxps_archive_read_entry (zip, font_uri,
- &font_data, &font_data_len,
- error);
- if (!res) {
- g_set_error (error,
- GXPS_ERROR,
- GXPS_ERROR_SOURCE_NOT_FOUND,
- "Font source %s not found in archive",
- font_uri);
- return NULL;
- }
+ if (!gxps_archive_read_entry (zip, font_uri,
+ &font_data, &font_data_len,
+ error)) {
+ return NULL;
+ }
ft_face.font_data = font_data;
ft_face.font_data_len = (gssize)font_data_len;
diff --git a/libgxps/gxps-images.c b/libgxps/gxps-images.c
index 4dcf9e2..50f899f 100644
--- a/libgxps/gxps-images.c
+++ b/libgxps/gxps-images.c
@@ -742,17 +742,12 @@ gxps_images_create_from_tiff (GXPSArchive *zip,
guchar *data;
guchar *p;
- if (!gxps_archive_read_entry (zip, image_uri,
- &buffer.buffer,
- &buffer.buffer_len,
- error)) {
- g_set_error (error,
- GXPS_ERROR,
- GXPS_ERROR_SOURCE_NOT_FOUND,
- "Image source %s not found in archive",
- image_uri);
- return NULL;
- }
+ if (!gxps_archive_read_entry (zip, image_uri,
+ &buffer.buffer,
+ &buffer.buffer_len,
+ error)) {
+ return NULL;
+ }
buffer.pos = 0;

View File

@ -1,24 +0,0 @@
commit 133fe2a96e020d4ca65c6f64fb28a404050ebbfd
Author: Carlos Garcia Campos <carlosgc@gnome.org>
Date: Sat May 5 12:02:36 2018 +0200
gxps-archive: Handle errors returned by archive_read_data
diff --git a/libgxps/gxps-archive.c b/libgxps/gxps-archive.c
index 346ba73..1bae729 100644
--- a/libgxps/gxps-archive.c
+++ b/libgxps/gxps-archive.c
@@ -520,6 +520,13 @@ gxps_archive_input_stream_read (GInputStream *stream,
return -1;
bytes_read = archive_read_data (istream->zip->archive, buffer, count);
+ if (bytes_read < 0) {
+ g_set_error_literal (error,
+ G_IO_ERROR,
+ g_io_error_from_errno (archive_errno (istream->zip->archive)),
+ archive_error_string (istream->zip->archive));
+ return -1;
+ }
if (bytes_read == 0 && istream->is_interleaved && !gxps_archive_input_stream_is_last_piece (istream)) {
/* Read next piece */
gxps_archive_input_stream_next_piece (istream);

View File

@ -1,16 +1,11 @@
Name: libgxps
Version: 0.3.0
Release: 6%{?dist}
Version: 0.3.1
Release: 1%{?dist}
Summary: GObject based library for handling and rendering XPS documents
License: LGPLv2+
URL: https://wiki.gnome.org/Projects/libgxps
Source0: https://ftp.gnome.org/pub/gnome/sources/%{name}/0.3/%{name}-%{version}.tar.xz
# https://bugzilla.redhat.com/show_bug.cgi?id=1591132
Patch0: libgxps-overflow.patch
# https://bugzilla.redhat.com/show_bug.cgi?id=1574844
Patch1: libgxps-readerror1.patch
Patch2: libgxps-readerror2.patch
BuildRequires: meson
BuildRequires: gcc
@ -80,6 +75,9 @@ documents using the %{name} library.
%changelog
* Sat Jan 05 2019 Kalev Lember <klember@redhat.com> - 0.3.1-1
- Update to 0.3.1
* Fri Jul 13 2018 Fedora Release Engineering <releng@fedoraproject.org> - 0.3.0-6
- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild

View File

@ -1 +1 @@
SHA512 (libgxps-0.3.0.tar.xz) = 283ce3041f0238ef1dcae30ce2adbc3f843677e00ae22f20ed3459828f3edaab6d05d87c20dddb613925ab248ed0b29855a94198b982606c3dcb2e59f800b013
SHA512 (libgxps-0.3.1.tar.xz) = 80401bd3c9753c74e425c5c08510cac314ad255ebeda9676bd5396a217770c7f5d8733c64b649cc6fdaa43423bb1a4ad21e1e0e3f7903f486e75a1d678850239