summaryrefslogtreecommitdiff
path: root/evince-40.1-covscan.patch
diff options
context:
space:
mode:
Diffstat (limited to 'evince-40.1-covscan.patch')
-rw-r--r--evince-40.1-covscan.patch485
1 files changed, 485 insertions, 0 deletions
diff --git a/evince-40.1-covscan.patch b/evince-40.1-covscan.patch
new file mode 100644
index 0000000..1373785
--- /dev/null
+++ b/evince-40.1-covscan.patch
@@ -0,0 +1,485 @@
+--- evince-40.1/backend/dvi/mdvi-lib/pagesel.c
++++ evince-40.1/backend/dvi/mdvi-lib/pagesel.c
+@@ -209,6 +209,7 @@ DviPageSpec *mdvi_parse_page_spec(const
+ range = mdvi_parse_range(format, NULL, &count, &ptr);
+ if(ptr == format) {
+ if(range) mdvi_free(range);
++ mdvi_free(spec);
+ mdvi_error(_("invalid page specification `%s'\n"), format);
+ return NULL;
+ }
+--- evince-40.1/backend/dvi/mdvi-lib/tfmfile.c
++++ evince-40.1/backend/dvi/mdvi-lib/tfmfile.c
+@@ -393,6 +393,7 @@ static int ofm1_load_file(FILE *in, TFMI
+ /* read them in one sweep */
+ if(fread(tfm, 4, size, in) != size) {
+ mdvi_free(tfm);
++ tfm = NULL;
+ goto bad_tfm;
+ }
+
+--- evince-40.1/backend/dvi/mdvi-lib/vf.c
++++ evince-40.1/backend/dvi/mdvi-lib/vf.c
+@@ -129,6 +129,7 @@ static int vf_load_font(DviParams *param
+ if(ref == NULL) {
+ mdvi_error(_("(vf) %s: could not load font `%s'\n"),
+ font->fontname, name);
++ mdvi_free(name);
+ goto error;
+ }
+ mdvi_free(name);
+--- evince-40.1/backend/comics/comics-document.c
++++ evince-40.1/backend/comics/comics-document.c
+@@ -453,23 +453,27 @@ comics_document_render_pixbuf (EvDocumen
+
+ name = ev_archive_get_entry_pathname (comics_document->archive);
+ if (g_strcmp0 (name, page_path) == 0) {
+- size_t size = ev_archive_get_entry_size (comics_document->archive);
++ gint64 size = ev_archive_get_entry_size (comics_document->archive);
+ char *buf;
+ ssize_t read;
+
+- buf = g_malloc (size);
+- read = ev_archive_read_data (comics_document->archive, buf, size, &error);
+- if (read <= 0) {
+- if (read < 0) {
+- g_warning ("Fatal error reading '%s' in archive: %s", name, error->message);
+- g_error_free (error);
++ if (size < 0) {
++ g_warning ("Wrong size of entry '%s'.", name);
++ } else {
++ buf = g_malloc (size);
++ read = ev_archive_read_data (comics_document->archive, buf, size, &error);
++ if (read <= 0) {
++ if (read < 0) {
++ g_warning ("Fatal error reading '%s' in archive: %s", name, error->message);
++ g_error_free (error);
++ } else {
++ g_warning ("Read an empty file from the archive");
++ }
+ } else {
+- g_warning ("Read an empty file from the archive");
++ gdk_pixbuf_loader_write (loader, (guchar *) buf, size, NULL);
+ }
+- } else {
+- gdk_pixbuf_loader_write (loader, (guchar *) buf, size, NULL);
++ g_free (buf);
+ }
+- g_free (buf);
+ gdk_pixbuf_loader_close (loader, NULL);
+ break;
+ }
+--- evince-40.1/backend/pdf/ev-poppler.cc
++++ evince-40.1/backend/pdf/ev-poppler.cc
+@@ -591,7 +591,7 @@ pdf_document_get_xmptag_from_path (xmlXP
+ const char* xpath)
+ {
+ xmlXPathObjectPtr xpathObj;
+- char *xmpmetapath = g_strdup_printf ("%s%s", "/x:xmpmeta", xpath);
++ char *xmpmetapath;
+ xmlChar *result = NULL;
+
+ /* add pdf/a and pdf/x namespaces */
+@@ -620,13 +620,17 @@ pdf_document_get_xmptag_from_path (xmlXP
+ if (result != NULL)
+ return result;
+
++ xmpmetapath = g_strdup_printf ("%s%s", "/x:xmpmeta", xpath);
++
+ /*
+ Try in /x:xmpmeta/ (xmpmeta is optional)
+ https://wwwimages2.adobe.com/content/dam/acom/en/devnet/xmp/pdfs/XMP SDK Release cc-2016-08/XMPSpecificationPart1.pdf (Section 7.3.3)
+ */
+ xpathObj = xmlXPathEvalExpression (BAD_CAST xmpmetapath, xpathCtx);
+- if (xpathObj == NULL)
++ if (xpathObj == NULL) {
++ g_free (xmpmetapath);
+ return NULL;
++ }
+
+ if (xpathObj->nodesetval != NULL && xpathObj->nodesetval->nodeNr != 0)
+ result = xmlNodeGetContent (xpathObj->nodesetval->nodeTab[0]);
+@@ -743,12 +747,14 @@ static char *
+ pdf_document_get_author_from_metadata (xmlXPathContextPtr xpathCtx)
+ {
+ char* result = NULL;
+- char* xmpmetapath = g_strdup_printf ("%s%s", "/x:xmpmeta", AUTHORS);
++ char* xmpmetapath;
+ /* Try in /rdf:RDF/ */
+ result = pdf_document_get_lists_from_dc_tags (xpathCtx, AUTHORS);
+ if (result != NULL)
+ return result;
+
++ xmpmetapath = g_strdup_printf ("%s%s", "/x:xmpmeta", AUTHORS);
++
+ /* Try in /x:xmpmeta/ */
+ result = pdf_document_get_lists_from_dc_tags (xpathCtx, xmpmetapath);
+ g_free (xmpmetapath);
+@@ -760,12 +766,14 @@ static char *
+ pdf_document_get_keywords_from_metadata (xmlXPathContextPtr xpathCtx)
+ {
+ char* result = NULL;
+- char* xmpmetapath = g_strdup_printf ("%s%s", "/x:xmpmeta", KEYWORDS);
++ char* xmpmetapath;
+ /* Try in /rdf:RDF/ */
+ result = pdf_document_get_lists_from_dc_tags (xpathCtx, KEYWORDS);
+ if (result != NULL)
+ return result;
+
++ xmpmetapath = g_strdup_printf ("%s%s", "/x:xmpmeta", KEYWORDS);
++
+ /* Try in /x:xmpmeta/ */
+ result = pdf_document_get_lists_from_dc_tags (xpathCtx, xmpmetapath);
+ g_free (xmpmetapath);
+@@ -859,6 +859,7 @@ pdf_document_get_info (EvDocument *docum
+ break;
+ case POPPLER_PAGE_LAYOUT_TWO_COLUMN_RIGHT:
+ info->layout = EV_DOCUMENT_LAYOUT_TWO_COLUMN_RIGHT;
++ break;
+ case POPPLER_PAGE_LAYOUT_TWO_PAGE_LEFT:
+ info->layout = EV_DOCUMENT_LAYOUT_TWO_PAGE_LEFT;
+ break;
+--- evince-40.1/properties/ev-properties-view.c
++++ evince-40.1/properties/ev-properties-view.c
+@@ -339,6 +339,7 @@ ev_regular_paper_size (const EvDocumentI
+ ABS (info->paper_width - paper_width) <= width_tolerance) {
+ /* Note to translators: first placeholder is the paper name (eg.
+ * A4), second placeholder is the paper size (eg. 297x210 mm) */
++ g_free (str);
+ str = g_strdup_printf (_("%s, Portrait (%s)"),
+ gtk_paper_size_get_display_name (size),
+ exact_size);
+@@ -346,6 +347,7 @@ ev_regular_paper_size (const EvDocumentI
+ ABS (info->paper_height - paper_width) <= width_tolerance) {
+ /* Note to translators: first placeholder is the paper name (eg.
+ * A4), second placeholder is the paper size (eg. 297x210 mm) */
++ g_free (str);
+ str = g_strdup_printf ( _("%s, Landscape (%s)"),
+ gtk_paper_size_get_display_name (size),
+ exact_size);
+--- evince-40.1/cut-n-paste/libgd/gd-two-lines-renderer.c
++++ evince-40.1/cut-n-paste/libgd/gd-two-lines-renderer.c
+@@ -281,7 +281,7 @@ gd_two_lines_renderer_render (GtkCellRen
+ GtkStyleContext *context;
+ gint line_one_height;
+ GtkStateFlags state;
+- GdkRectangle area, render_area = *cell_area;
++ GdkRectangle area, render_area;
+ gint xpad, ypad, x_offset_1, x_offset_2, y_offset;
+ PangoLayout *layout_one, *layout_two;
+ PangoRectangle layout_rect;
+--- evince-40.1/cut-n-paste/unarr/rar/filter-rar.c
++++ evince-40.1/cut-n-paste/unarr/rar/filter-rar.c
+@@ -273,8 +273,10 @@ static struct RARFilter *rar_create_filt
+ filter->prog = prog;
+ filter->globaldatalen = globaldatalen > RARProgramSystemGlobalSize ? globaldatalen : RARProgramSystemGlobalSize;
+ filter->globaldata = calloc(1, filter->globaldatalen);
+- if (!filter->globaldata)
++ if (!filter->globaldata) {
++ free (filter);
+ return NULL;
++ }
+ if (globaldata)
+ memcpy(filter->globaldata, globaldata, globaldatalen);
+ if (registers)
+--- evince-40.1/libdocument/ev-document.c
++++ evince-40.1/libdocument/ev-document.c
+@@ -496,6 +496,9 @@ ev_document_load_stream (EvDocument
+ g_return_val_if_fail (error == NULL || *error == NULL, FALSE);
+
+ klass = EV_DOCUMENT_GET_CLASS (document);
++
++ g_return_val_if_fail (klass != NULL, FALSE);
++
+ if (!klass->load_stream) {
+ g_set_error_literal (error, G_IO_ERROR, G_IO_ERROR_NOT_SUPPORTED,
+ "Backend does not support loading from stream");
+@@ -544,6 +547,9 @@ ev_document_load_gfile (EvDocument
+ g_return_val_if_fail (error == NULL || *error == NULL, FALSE);
+
+ klass = EV_DOCUMENT_GET_CLASS (document);
++
++ g_return_val_if_fail (klass != NULL, FALSE);
++
+ if (!klass->load_gfile) {
+ g_set_error_literal (error, G_IO_ERROR, G_IO_ERROR_NOT_SUPPORTED,
+ "Backend does not support loading from GFile");
+@@ -867,6 +873,9 @@ ev_document_get_backend_info (EvDocument
+ g_return_val_if_fail (EV_IS_DOCUMENT (document), FALSE);
+
+ klass = EV_DOCUMENT_GET_CLASS (document);
++
++ g_return_val_if_fail (klass != NULL, FALSE);
++
+ if (klass->get_backend_info == NULL)
+ return FALSE;
+
+--- evince-40.1/libview/ev-pixbuf-cache.c
++++ evince-40.1/libview/ev-pixbuf-cache.c
+@@ -337,6 +337,11 @@ job_finished_cb (EvJob *job,
+
+ job_info = find_job_cache (pixbuf_cache, job_render->page);
+
++ if (job_info == NULL) {
++ g_warning ("Job info not found.");
++ return;
++ }
++
+ if (ev_job_is_failed (job)) {
+ job_info->job = NULL;
+ g_object_unref (job);
+@@ -721,6 +726,11 @@ add_job_if_needed (EvPixbufCache *pixbuf
+ gint device_scale = get_device_scale (pixbuf_cache);
+ gint width, height;
+
++ if (job_info == NULL) {
++ g_warning ("Adding job with NULL info.");
++ return;
++ }
++
+ if (job_info->job)
+ return;
+
+--- evince-40.1/libview/ev-print-operation.c
++++ evince-40.1/libview/ev-print-operation.c
+@@ -181,6 +181,7 @@ ev_print_operation_set_current_page (EvP
+ EvPrintOperationClass *class = EV_PRINT_OPERATION_GET_CLASS (op);
+
+ g_return_if_fail (EV_IS_PRINT_OPERATION (op));
++ g_return_if_fail (class != NULL);
+ g_return_if_fail (current_page >= 0);
+
+ class->set_current_page (op, current_page);
+@@ -193,6 +194,7 @@ ev_print_operation_set_print_settings (E
+ EvPrintOperationClass *class = EV_PRINT_OPERATION_GET_CLASS (op);
+
+ g_return_if_fail (EV_IS_PRINT_OPERATION (op));
++ g_return_if_fail (class != NULL);
+ g_return_if_fail (GTK_IS_PRINT_SETTINGS (print_settings));
+
+ class->set_print_settings (op, print_settings);
+@@ -210,6 +212,7 @@ ev_print_operation_get_print_settings (E
+ EvPrintOperationClass *class = EV_PRINT_OPERATION_GET_CLASS (op);
+
+ g_return_val_if_fail (EV_IS_PRINT_OPERATION (op), NULL);
++ g_return_val_if_fail (class != NULL, NULL);
+
+ return class->get_print_settings (op);
+ }
+@@ -221,6 +224,7 @@ ev_print_operation_set_default_page_setu
+ EvPrintOperationClass *class = EV_PRINT_OPERATION_GET_CLASS (op);
+
+ g_return_if_fail (EV_IS_PRINT_OPERATION (op));
++ g_return_if_fail (class != NULL);
+ g_return_if_fail (GTK_IS_PAGE_SETUP (page_setup));
+
+ class->set_default_page_setup (op, page_setup);
+@@ -238,6 +242,7 @@ ev_print_operation_get_default_page_setu
+ EvPrintOperationClass *class = EV_PRINT_OPERATION_GET_CLASS (op);
+
+ g_return_val_if_fail (EV_IS_PRINT_OPERATION (op), NULL);
++ g_return_val_if_fail (class != NULL, NULL);
+
+ return class->get_default_page_setup (op);
+ }
+@@ -249,6 +254,7 @@ ev_print_operation_set_job_name (EvPrint
+ EvPrintOperationClass *class = EV_PRINT_OPERATION_GET_CLASS (op);
+
+ g_return_if_fail (EV_IS_PRINT_OPERATION (op));
++ g_return_if_fail (class != NULL);
+ g_return_if_fail (job_name != NULL);
+
+ class->set_job_name (op, job_name);
+@@ -260,6 +266,7 @@ ev_print_operation_get_job_name (EvPrint
+ EvPrintOperationClass *class = EV_PRINT_OPERATION_GET_CLASS (op);
+
+ g_return_val_if_fail (EV_IS_PRINT_OPERATION (op), NULL);
++ g_return_val_if_fail (class != NULL, NULL);
+
+ return class->get_job_name (op);
+ }
+@@ -271,6 +278,7 @@ ev_print_operation_run (EvPrintOperation
+ EvPrintOperationClass *class = EV_PRINT_OPERATION_GET_CLASS (op);
+
+ g_return_if_fail (EV_IS_PRINT_OPERATION (op));
++ g_return_if_fail (class != NULL);
+
+ class->run (op, parent);
+ }
+@@ -281,6 +289,7 @@ ev_print_operation_cancel (EvPrintOperat
+ EvPrintOperationClass *class = EV_PRINT_OPERATION_GET_CLASS (op);
+
+ g_return_if_fail (EV_IS_PRINT_OPERATION (op));
++ g_return_if_fail (class != NULL);
+
+ class->cancel (op);
+ }
+@@ -292,6 +301,7 @@ ev_print_operation_get_error (EvPrintOpe
+ EvPrintOperationClass *class = EV_PRINT_OPERATION_GET_CLASS (op);
+
+ g_return_if_fail (EV_IS_PRINT_OPERATION (op));
++ g_return_if_fail (class != NULL);
+
+ class->get_error (op, error);
+ }
+@@ -303,6 +313,7 @@ ev_print_operation_set_embed_page_setup
+ EvPrintOperationClass *class = EV_PRINT_OPERATION_GET_CLASS (op);
+
+ g_return_if_fail (EV_IS_PRINT_OPERATION (op));
++ g_return_if_fail (class != NULL);
+
+ class->set_embed_page_setup (op, embed);
+ }
+@@ -313,6 +324,7 @@ ev_print_operation_get_embed_page_setup
+ EvPrintOperationClass *class = EV_PRINT_OPERATION_GET_CLASS (op);
+
+ g_return_val_if_fail (EV_IS_PRINT_OPERATION (op), FALSE);
++ g_return_val_if_fail (class != NULL, FALSE);
+
+ return class->get_embed_page_setup (op);
+ }
+--- evince-40.1/libview/ev-timeline.c
++++ evince-40.1/libview/ev-timeline.c
+@@ -289,9 +289,15 @@ ev_timeline_new (guint duration)
+ void
+ ev_timeline_start (EvTimeline *timeline)
+ {
++ EvTimelineClass *klass;
++
+ g_return_if_fail (EV_IS_TIMELINE (timeline));
+
+- EV_TIMELINE_GET_CLASS (timeline)->start (timeline);
++ klass = EV_TIMELINE_GET_CLASS (timeline);
++
++ g_return_if_fail (klass != NULL);
++
++ klass->start (timeline);
+ }
+
+ void
+--- evince-40.1/libview/ev-view.c
++++ evince-40.1/libview/ev-view.c
+@@ -1147,7 +1147,7 @@ ensure_rectangle_is_visible (EvView *vie
+ if (rect->x < adj_value) {
+ value = MAX (gtk_adjustment_get_lower (adjustment), rect->x - MARGIN);
+ gtk_adjustment_set_value (view->hadjustment, value);
+- } else if (rect->x + rect->height > adj_value + allocation.width) {
++ } else if (rect->x + rect->width > adj_value + allocation.width) {
+ value = MIN (gtk_adjustment_get_upper (adjustment), rect->x + rect->width -
+ allocation.width + MARGIN);
+ gtk_adjustment_set_value (view->hadjustment, value);
+@@ -1777,6 +1777,11 @@ goto_fitv_dest (EvView *view, EvLinkDest
+
+ page = ev_link_dest_get_page (dest);
+
++ if (page < 0) {
++ g_warning ("Link does not contain a page.");
++ return;
++ }
++
+ left = ev_link_dest_get_left (dest, &change_left);
+ doc_point.x = change_left ? left : 0;
+ doc_point.y = 0;
+@@ -1813,6 +1818,11 @@ goto_fith_dest (EvView *view, EvLinkDest
+
+ page = ev_link_dest_get_page (dest);
+
++ if (page < 0) {
++ g_warning ("Link does not contain a page.");
++ return;
++ }
++
+ top = ev_link_dest_get_top (dest, &change_top);
+ doc_point.x = 0;
+ doc_point.y = change_top ? top : 0;
+@@ -1846,6 +1856,11 @@ goto_fit_dest (EvView *view, EvLinkDest
+
+ page = ev_link_dest_get_page (dest);
+
++ if (page < 0) {
++ g_warning ("Link does not contain a page.");
++ return;
++ }
++
+ if (view->allow_links_change_zoom) {
+ double zoom;
+ gdouble doc_width, doc_height;
+--- evince-40.1/libview/ev-view-presentation.c
++++ evince-40.1/libview/ev-view-presentation.c
+@@ -448,7 +448,7 @@ ev_view_presentation_update_current_page
+ {
+ gint jump;
+
+- if (page < 0 || page >= ev_document_get_n_pages (pview->document))
++ if (page >= ev_document_get_n_pages (pview->document))
+ return;
+
+ ev_view_presentation_animation_cancel (pview);
+--- evince-40.1/shell/ev-find-sidebar.c
++++ evince-40.1/shell/ev-find-sidebar.c
+@@ -476,8 +476,10 @@ process_matches_idle (EvFindSidebar *sid
+ page_label = ev_document_get_page_label (document, current_page);
+ page_text = get_page_text (document, page, &areas, &n_areas);
+ g_object_unref (page);
+- if (!page_text)
++ if (!page_text) {
++ g_free (page_label);
+ continue;
++ }
+
+ text_log_attrs_length = g_utf8_strlen (page_text, -1);
+ text_log_attrs = g_new0 (PangoLogAttr, text_log_attrs_length + 1);
+--- evince-40.1/shell/ev-sidebar-thumbnails.c
++++ evince-40.1/shell/ev-sidebar-thumbnails.c
+@@ -658,11 +658,11 @@ ev_sidebar_thumbnails_fill_model (EvSide
+ int i;
+ gint prev_width = -1;
+ gint prev_height = -1;
++ cairo_surface_t *loading_icon = NULL;
+
+ for (i = 0; i < sidebar_thumbnails->priv->n_pages; i++) {
+ gchar *page_label;
+ gchar *page_string;
+- cairo_surface_t *loading_icon = NULL;
+ gint width, height;
+
+ page_label = ev_document_get_page_label (priv->document, i);
+--- evince-40.1/shell/ev-window.c
++++ evince-40.1/shell/ev-window.c
+@@ -3121,10 +3121,10 @@ ev_window_load_print_settings_from_metad
+ for (i = 0; i < G_N_ELEMENTS (document_print_settings); i++) {
+ gchar *value = NULL;
+
+- ev_metadata_get_string (priv->metadata,
+- document_print_settings[i], &value);
+- gtk_print_settings_set (print_settings,
+- document_print_settings[i], value);
++ if (ev_metadata_get_string (priv->metadata,
++ document_print_settings[i], &value))
++ gtk_print_settings_set (print_settings,
++ document_print_settings[i], value);
+ }
+ }
+
+@@ -4705,12 +4705,16 @@ ev_window_cmd_bookmarks_add (GSimpleActi
+ gchar *page_label;
+
+ bm.page = ev_document_model_get_page (priv->model);
+- page_label = ev_document_get_page_label (priv->document, bm.page);
+- bm.title = g_strdup_printf (_("Page %s"), page_label);
+- g_free (page_label);
++ if (bm.page >= 0) {
++ page_label = ev_document_get_page_label (priv->document, bm.page);
++ bm.title = g_strdup_printf (_("Page %s"), page_label);
++ g_free (page_label);
+
+- /* EvBookmarks takes ownership of bookmark */
+- ev_bookmarks_add (priv->bookmarks, &bm);
++ /* EvBookmarks takes ownership of bookmark */
++ ev_bookmarks_add (priv->bookmarks, &bm);
++ } else {
++ g_warning ("Bookmarking of a page failed.");
++ }
+ }
+
+ static void