Compare commits

...

No commits in common. "c8s" and "c9" have entirely different histories.
c8s ... c9

22 changed files with 89 additions and 1322 deletions

2
.gitignore vendored
View File

@ -1 +1 @@
SOURCES/yelp-3.28.1.tar.xz
SOURCES/yelp-40.3.tar.xz

View File

@ -1 +1 @@
2781090d6dc3227212de46b04de88c92053b8340 SOURCES/yelp-3.28.1.tar.xz
c8eac14b739808eeb24727df03f19d5a998732aa SOURCES/yelp-40.3.tar.xz

View File

@ -1,30 +0,0 @@
From 18a82693d550f4d19c4310741dc60cfef605079a Mon Sep 17 00:00:00 2001
From: Tomas Popela <tpopela@redhat.com>
Date: Mon, 23 Jul 2018 09:01:18 +0200
Subject: [PATCH 01/17] Add gnu_printf format attribute to yelp_debug
yelp-3.28.1/libyelp/yelp-debug.c:150:3: warning: function 'yelp_debug' might be
a candidate for 'gnu_printf' format attribute [-Wsuggest-attribute=format]
---
libyelp/yelp-debug.h | 5 +++--
1 file changed, 3 insertions(+), 2 deletions(-)
diff --git a/libyelp/yelp-debug.h b/libyelp/yelp-debug.h
index 620a4bf1..18c5582e 100644
--- a/libyelp/yelp-debug.h
+++ b/libyelp/yelp-debug.h
@@ -67,8 +67,9 @@ typedef enum {
#endif
G_GNUC_INTERNAL
-void yelp_debug (const gchar *file, guint line,
- const gchar *function, guint flags, const gchar *format, ...);
+void yelp_debug (const gchar *file, guint line,
+ const gchar *function, guint flags,
+ const gchar *format, ...) __attribute__ ((format (gnu_printf, 5, 6)));
G_END_DECLS
--
2.19.1

View File

@ -1,185 +0,0 @@
From b8fdfcae060bdffb15d81e68cdff011105013eb0 Mon Sep 17 00:00:00 2001
From: Michael Catanzaro <mcatanzaro@igalia.com>
Date: Fri, 18 May 2018 09:56:16 -0500
Subject: [PATCH] Fix build with GCC 8
Yelp enables -Werror by default, so it's responsible for predicting and
fixing future compiler warnings that only an oracle could know about. In
this case, that turned out to be -Werror=cast-function-type.
---
libyelp/yelp-docbook-document.c | 6 +++---
libyelp/yelp-document.c | 4 ++--
libyelp/yelp-help-list.c | 2 +-
libyelp/yelp-info-document.c | 2 +-
libyelp/yelp-mallard-document.c | 6 +++---
libyelp/yelp-man-document.c | 2 +-
libyelp/yelp-simple-document.c | 2 +-
libyelp/yelp-transform.c | 2 +-
libyelp/yelp-uri.c | 2 +-
9 files changed, 14 insertions(+), 14 deletions(-)
diff --git a/libyelp/yelp-docbook-document.c b/libyelp/yelp-docbook-document.c
index 9b430b09..6ecaf316 100644
--- a/libyelp/yelp-docbook-document.c
+++ b/libyelp/yelp-docbook-document.c
@@ -273,7 +273,7 @@ docbook_request_page (YelpDocument *document,
priv->process_running = TRUE;
g_object_ref (document);
priv->thread = g_thread_new ("docbook-page",
- (GThreadFunc) docbook_process,
+ (GThreadFunc)(GCallback) docbook_process,
document);
break;
case DOCBOOK_STATE_PARSING:
@@ -495,7 +495,7 @@ docbook_reload (YelpDocbookDocument *docbook)
priv->process_running = TRUE;
g_object_ref (docbook);
priv->thread = g_thread_new ("docbook-reload",
- (GThreadFunc) docbook_process,
+ (GThreadFunc)(GCallback) docbook_process,
docbook);
g_mutex_unlock (&priv->mutex);
@@ -1077,7 +1077,7 @@ docbook_index (YelpDocument *document)
priv = GET_PRIV (document);
g_object_ref (document);
priv->index = g_thread_new ("docbook-index",
- (GThreadFunc) docbook_index_threaded,
+ (GThreadFunc)(GCallback) docbook_index_threaded,
document);
priv->index_running = TRUE;
}
diff --git a/libyelp/yelp-document.c b/libyelp/yelp-document.c
index 6adbbb1d..c1eec9cc 100644
--- a/libyelp/yelp-document.c
+++ b/libyelp/yelp-document.c
@@ -330,7 +330,7 @@ yelp_document_dispose (GObject *object)
if (document->priv->reqs_all) {
g_slist_foreach (document->priv->reqs_all,
- (GFunc) request_try_free,
+ (GFunc)(GCallback) request_try_free,
NULL);
g_slist_free (document->priv->reqs_all);
document->priv->reqs_all = NULL;
@@ -338,7 +338,7 @@ yelp_document_dispose (GObject *object)
if (document->priv->reqs_search) {
g_slist_foreach (document->priv->reqs_search,
- (GFunc) request_try_free,
+ (GFunc)(GCallback) request_try_free,
NULL);
g_slist_free (document->priv->reqs_search);
document->priv->reqs_search = NULL;
diff --git a/libyelp/yelp-help-list.c b/libyelp/yelp-help-list.c
index 9005e48f..cbac98bf 100644
--- a/libyelp/yelp-help-list.c
+++ b/libyelp/yelp-help-list.c
@@ -210,7 +210,7 @@ help_list_request_page (YelpDocument *document,
priv->process_running = TRUE;
g_object_ref (document);
priv->thread = g_thread_new ("helplist-page",
- (GThreadFunc) help_list_think,
+ (GThreadFunc)(GCallback) help_list_think,
document);
}
priv->pending = g_slist_prepend (priv->pending, g_strdup (page_id));
diff --git a/libyelp/yelp-info-document.c b/libyelp/yelp-info-document.c
index 7b532744..d55be325 100644
--- a/libyelp/yelp-info-document.c
+++ b/libyelp/yelp-info-document.c
@@ -209,7 +209,7 @@ info_request_page (YelpDocument *document,
priv->process_running = TRUE;
g_object_ref (document);
priv->thread = g_thread_new ("info-page",
- (GThreadFunc) info_document_process,
+ (GThreadFunc)(GCallback) info_document_process,
document);
break;
case INFO_STATE_PARSING:
diff --git a/libyelp/yelp-mallard-document.c b/libyelp/yelp-mallard-document.c
index fc7c4d7c..74fc80ee 100644
--- a/libyelp/yelp-mallard-document.c
+++ b/libyelp/yelp-mallard-document.c
@@ -287,7 +287,7 @@ mallard_request_page (YelpDocument *document,
priv->thread_running = TRUE;
g_object_ref (document);
priv->thread = g_thread_new ("mallard-page",
- (GThreadFunc) mallard_think,
+ (GThreadFunc)(GCallback) mallard_think,
document);
}
@@ -1100,7 +1100,7 @@ mallard_index (YelpDocument *document)
priv = GET_PRIV (document);
g_object_ref (document);
priv->index = g_thread_new ("mallard-index",
- (GThreadFunc) mallard_index_threaded,
+ (GThreadFunc)(GCallback) mallard_index_threaded,
document);
priv->index_running = TRUE;
}
@@ -1148,7 +1148,7 @@ mallard_monitor_changed (GFileMonitor *monitor,
priv->thread_running = TRUE;
g_object_ref (mallard);
priv->thread = g_thread_new ("mallard-reload",
- (GThreadFunc) mallard_think,
+ (GThreadFunc)(GCallback) mallard_think,
mallard);
g_mutex_unlock (&priv->mutex);
diff --git a/libyelp/yelp-man-document.c b/libyelp/yelp-man-document.c
index 4e165d57..ad7fab4f 100644
--- a/libyelp/yelp-man-document.c
+++ b/libyelp/yelp-man-document.c
@@ -243,7 +243,7 @@ man_request_page (YelpDocument *document,
yelp_document_set_page_id (document, priv->page_id, priv->page_id);
yelp_document_set_root_id (document, priv->page_id, priv->page_id);
priv->thread = g_thread_new ("man-page",
- (GThreadFunc) man_document_process,
+ (GThreadFunc)(GCallback) man_document_process,
document);
break;
case MAN_STATE_PARSING:
diff --git a/libyelp/yelp-simple-document.c b/libyelp/yelp-simple-document.c
index 501d7881..595efa83 100644
--- a/libyelp/yelp-simple-document.c
+++ b/libyelp/yelp-simple-document.c
@@ -131,7 +131,7 @@ yelp_simple_document_dispose (GObject *object)
YelpSimpleDocument *document = YELP_SIMPLE_DOCUMENT (object);
if (document->priv->reqs) {
- g_slist_foreach (document->priv->reqs, (GFunc) request_try_free, NULL);
+ g_slist_foreach (document->priv->reqs, (GFunc)(GCallback) request_try_free, NULL);
g_slist_free (document->priv->reqs);
document->priv->reqs = NULL;
}
diff --git a/libyelp/yelp-transform.c b/libyelp/yelp-transform.c
index 334438af..7a5dc86e 100644
--- a/libyelp/yelp-transform.c
+++ b/libyelp/yelp-transform.c
@@ -298,7 +298,7 @@ yelp_transform_start (YelpTransform *transform,
priv->running = TRUE;
g_object_ref (transform);
priv->thread = g_thread_new ("transform-run",
- (GThreadFunc) transform_run,
+ (GThreadFunc)(GCallback) transform_run,
transform);
g_mutex_unlock (&priv->mutex);
diff --git a/libyelp/yelp-uri.c b/libyelp/yelp-uri.c
index 317beead..f20b167e 100644
--- a/libyelp/yelp-uri.c
+++ b/libyelp/yelp-uri.c
@@ -298,7 +298,7 @@ resolve_start (YelpUri *uri)
if (priv->resolver == NULL) {
g_object_ref (uri);
priv->resolver = g_thread_new ("uri-resolve",
- (GThreadFunc) resolve_async,
+ (GThreadFunc)(GCallback) resolve_async,
uri);
}
}
--
2.17.1

View File

@ -1,63 +0,0 @@
From 3b4245db2e954675d15f50a0e9d004e62a43a48c Mon Sep 17 00:00:00 2001
From: Tomas Popela <tpopela@redhat.com>
Date: Mon, 23 Jul 2018 09:50:53 +0200
Subject: [PATCH 02/17] Check whether document has a root element before
accessing it.
yelp-3.28.1/libyelp/yelp-docbook-document.c:562:13: note: Access to field 'ns' results in a dereference of a null pointer (loaded from field 'xmlcur')
if (priv->xmlcur->ns) {
^ ~~~~~~
560| * unique value, and insert it into the in-memory tree */
561| g_snprintf (autoidstr, 20, "//autoid-%d", ++autoid);
562|-> if (priv->xmlcur->ns) {
563| xmlNewNsProp (priv->xmlcur,
564| xmlNewNs (priv->xmlcur, XML_XML_NAMESPACE, BAD_CAST "xml"),
yelp-3.28.1/libyelp/yelp-docbook-document.c:608:16: note: Access to field 'children' results in a dereference of a null pointer (loaded from field 'xmlcur')
for (cur = priv->xmlcur->children; cur; cur = cur->next) {
^ ~~~~~~
606| NULL);
607|
608|-> for (cur = priv->xmlcur->children; cur; cur = cur->next) {
609| if (cur->type == XML_ELEMENT_NODE) {
610| priv->xmlcur = cur;
---
libyelp/yelp-docbook-document.c | 8 ++++++--
1 file changed, 6 insertions(+), 2 deletions(-)
diff --git a/libyelp/yelp-docbook-document.c b/libyelp/yelp-docbook-document.c
index 6ecaf316..24746248 100644
--- a/libyelp/yelp-docbook-document.c
+++ b/libyelp/yelp-docbook-document.c
@@ -309,6 +309,7 @@ docbook_process (YelpDocbookDocument *docbook)
GFile *file = NULL;
gchar *filepath = NULL;
xmlDocPtr xmldoc = NULL;
+ xmlNodePtr xmlcur = NULL;
xmlChar *id = NULL;
xmlParserCtxtPtr parserCtxt = NULL;
GError *error;
@@ -343,7 +344,10 @@ docbook_process (YelpDocbookDocument *docbook)
XML_PARSE_DTDLOAD | XML_PARSE_NOCDATA |
XML_PARSE_NOENT | XML_PARSE_NONET );
- if (xmldoc == NULL) {
+ if (xmldoc)
+ xmlcur = xmlDocGetRootElement (xmldoc);
+
+ if (xmldoc == NULL || xmlcur == NULL) {
error = g_error_new (YELP_ERROR, YELP_ERROR_PROCESSING,
_("The file %s could not be parsed because it is"
" not a well-formed XML document."),
@@ -374,7 +378,7 @@ docbook_process (YelpDocbookDocument *docbook)
priv->max_depth = 1;
priv->xmldoc = xmldoc;
- priv->xmlcur = xmlDocGetRootElement (xmldoc);
+ priv->xmlcur = xmlcur;
id = xmlGetProp (priv->xmlcur, BAD_CAST "id");
if (!id)
--
2.19.1

View File

@ -1,44 +0,0 @@
From 05fd1b7d267d83ad73f67bb99aac5c9ba069d4e5 Mon Sep 17 00:00:00 2001
From: Tomas Popela <tpopela@redhat.com>
Date: Mon, 23 Jul 2018 10:09:43 +0200
Subject: [PATCH 03/17] Check whether the index variable is valid before
dereferencing it
yelp-3.28.1/libyelp/yelp-docbook-document.c:1058: check_after_deref: Null-checking "index" suggests that it may be null, but it has already been dereferenced on all paths leading to the check.
yelp-3.28.1/libyelp/yelp-docbook-document.c:1026: deref_ptr: Directly dereferencing pointer "index".
yelp-3.28.1/libyelp/yelp-docbook-document.c:1054: deref_ptr: Directly dereferencing pointer "index".
1052| if (filename != NULL)
1053| g_free (filename);
1054|-> if (index->doc != NULL)
1055| xmlFreeDoc (index->doc);
1056| if (index->doc_uri != NULL)
---
libyelp/yelp-docbook-document.c | 11 ++++++-----
1 file changed, 6 insertions(+), 5 deletions(-)
diff --git a/libyelp/yelp-docbook-document.c b/libyelp/yelp-docbook-document.c
index 24746248..afb49fb0 100644
--- a/libyelp/yelp-docbook-document.c
+++ b/libyelp/yelp-docbook-document.c
@@ -1055,12 +1055,13 @@ docbook_index_threaded (YelpDocbookDocument *docbook)
g_object_unref (file);
if (filename != NULL)
g_free (filename);
- if (index->doc != NULL)
- xmlFreeDoc (index->doc);
- if (index->doc_uri != NULL)
- g_free (index->doc_uri);
- if (index != NULL)
+ if (index != NULL) {
+ if (index->doc != NULL)
+ xmlFreeDoc (index->doc);
+ if (index->doc_uri != NULL)
+ g_free (index->doc_uri);
g_free (index);
+ }
if (parserCtxt != NULL)
xmlFreeParserCtxt (parserCtxt);
--
2.19.1

View File

@ -1,134 +0,0 @@
From 3ce3334e9f64eb9eb9f6f52608ca00c2fb74b516 Mon Sep 17 00:00:00 2001
From: Tomas Popela <tpopela@redhat.com>
Date: Mon, 23 Jul 2018 10:30:35 +0200
Subject: [PATCH 04/17] Correctly check whether virtual method is implemented
before calling it
yelp-3.28.1/libyelp/yelp-document.c:819:27: warning: Access to field 'request_page' results in a dereference of a null pointer (loaded from field 'g_class')
g_return_val_if_fail (YELP_DOCUMENT_GET_CLASS (document)->request_page != NULL, FALSE);
yelp-3.28.1/libyelp/yelp-document.c:943:27: warning: Access to field 'read_contents' results in a dereference of a null pointer (loaded from field 'g_class')
g_return_val_if_fail (YELP_DOCUMENT_GET_CLASS (document)->read_contents != NULL, NULL);
yelp-3.28.1/libyelp/yelp-document.c:1100:23: warning: Access to field 'finish_read' results in a dereference of a null pointer (loaded from field 'g_class')
g_return_if_fail (YELP_DOCUMENT_GET_CLASS (document)->finish_read != NULL);
yelp-3.28.1/libyelp/yelp-document.c:1141:27: warning: Access to field 'get_mime_type' results in a dereference of a null pointer (loaded from field 'g_class')
g_return_val_if_fail (YELP_DOCUMENT_GET_CLASS (document)->get_mime_type != NULL, NULL);
yelp-3.28.1/libyelp/yelp-document.c:1173:23: warning: Access to field 'index' results in a dereference of a null pointer (loaded from field 'g_class')
g_return_if_fail (YELP_DOCUMENT_GET_CLASS (document)->index != NULL);
---
libyelp/yelp-document.c | 56 ++++++++++++++++++++++++++++++-----------
1 file changed, 41 insertions(+), 15 deletions(-)
diff --git a/libyelp/yelp-document.c b/libyelp/yelp-document.c
index c1eec9cc..d832d1ed 100644
--- a/libyelp/yelp-document.c
+++ b/libyelp/yelp-document.c
@@ -815,17 +815,19 @@ yelp_document_request_page (YelpDocument *document,
gpointer user_data,
GDestroyNotify notify)
{
+ YelpDocumentClass *klass;
+
+ g_return_val_if_fail (document != NULL, FALSE);
g_return_val_if_fail (YELP_IS_DOCUMENT (document), FALSE);
- g_return_val_if_fail (YELP_DOCUMENT_GET_CLASS (document)->request_page != NULL, FALSE);
+
+ klass = YELP_DOCUMENT_GET_CLASS (document);
+ g_return_val_if_fail (klass != NULL, FALSE);
+ g_return_val_if_fail (klass->request_page != NULL, FALSE);
debug_print (DB_FUNCTION, "entering\n");
- return YELP_DOCUMENT_GET_CLASS (document)->request_page (document,
- page_id,
- cancellable,
- callback,
- user_data,
- notify);
+ return klass->request_page (document, page_id, cancellable, callback,
+ user_data, notify);
}
static gboolean
@@ -939,10 +941,16 @@ const gchar *
yelp_document_read_contents (YelpDocument *document,
const gchar *page_id)
{
+ YelpDocumentClass *klass;
+
+ g_return_val_if_fail (document != NULL, NULL);
g_return_val_if_fail (YELP_IS_DOCUMENT (document), NULL);
- g_return_val_if_fail (YELP_DOCUMENT_GET_CLASS (document)->read_contents != NULL, NULL);
- return YELP_DOCUMENT_GET_CLASS (document)->read_contents (document, page_id);
+ klass = YELP_DOCUMENT_GET_CLASS (document);
+ g_return_val_if_fail (klass != NULL, FALSE);
+ g_return_val_if_fail (klass->read_contents != NULL, FALSE);
+
+ return klass->read_contents (document, page_id);
}
static const gchar *
@@ -1096,10 +1104,16 @@ void
yelp_document_finish_read (YelpDocument *document,
const gchar *contents)
{
+ YelpDocumentClass *klass;
+
+ g_return_if_fail (document != NULL);
g_return_if_fail (YELP_IS_DOCUMENT (document));
- g_return_if_fail (YELP_DOCUMENT_GET_CLASS (document)->finish_read != NULL);
- YELP_DOCUMENT_GET_CLASS (document)->finish_read (document, contents);
+ klass = YELP_DOCUMENT_GET_CLASS (document);
+ g_return_if_fail (klass != NULL);
+ g_return_if_fail (klass->finish_read != NULL);
+
+ klass->finish_read (document, contents);
}
static void
@@ -1137,10 +1151,16 @@ gchar *
yelp_document_get_mime_type (YelpDocument *document,
const gchar *page_id)
{
+ YelpDocumentClass *klass;
+
+ g_return_val_if_fail (document != NULL, NULL);
g_return_val_if_fail (YELP_IS_DOCUMENT (document), NULL);
- g_return_val_if_fail (YELP_DOCUMENT_GET_CLASS (document)->get_mime_type != NULL, NULL);
- return YELP_DOCUMENT_GET_CLASS (document)->get_mime_type (document, page_id);
+ klass = YELP_DOCUMENT_GET_CLASS (document);
+ g_return_val_if_fail (klass != NULL, NULL);
+ g_return_val_if_fail (klass->get_mime_type != NULL, FALSE);
+
+ return klass->get_mime_type (document, page_id);
}
static gchar *
@@ -1169,10 +1189,16 @@ document_get_mime_type (YelpDocument *document,
void
yelp_document_index (YelpDocument *document)
{
+ YelpDocumentClass *klass;
+
+ g_return_if_fail (document != NULL);
g_return_if_fail (YELP_IS_DOCUMENT (document));
- g_return_if_fail (YELP_DOCUMENT_GET_CLASS (document)->index != NULL);
- YELP_DOCUMENT_GET_CLASS (document)->index (document);
+ klass = YELP_DOCUMENT_GET_CLASS (document);
+ g_return_if_fail (klass != NULL);
+ g_return_if_fail (klass->index != NULL);
+
+ klass->index (document);
}
static void
--
2.19.1

View File

@ -1,36 +0,0 @@
From 92974634d285448bbf2007a9bcfedf247a26a39b Mon Sep 17 00:00:00 2001
From: Tomas Popela <tpopela@redhat.com>
Date: Mon, 23 Jul 2018 10:55:52 +0200
Subject: [PATCH 05/17] Check whether variable node is set before dereferencing
it
yelp-3.28.1/libyelp/yelp-info-parser.c:766: dereference: Dereferencing a pointer that might be null "node" when calling "strncmp".
---
libyelp/yelp-info-parser.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/libyelp/yelp-info-parser.c b/libyelp/yelp-info-parser.c
index d0e767bc..0c383bfe 100644
--- a/libyelp/yelp-info-parser.c
+++ b/libyelp/yelp-info-parser.c
@@ -734,7 +734,7 @@ process_page (GtkTreeStore *tree,
g_free (next);
next = NULL;
}
- if (g_str_equal (node, "Top") && prev != NULL) {
+ if (node && g_str_equal (node, "Top") && prev != NULL) {
g_free (prev);
prev = NULL;
}
@@ -763,7 +763,7 @@ process_page (GtkTreeStore *tree,
}
if (prev && g_ascii_strncasecmp (prev, "(dir)", 5))
{
- if (strncmp (node, "Top", 3)) {
+ if (node && strncmp (node, "Top", 3)) {
/* Special case the Top node to always appear first */
} else {
page = node2page (nodes2pages, prev);
--
2.19.1

View File

@ -1,32 +0,0 @@
From d7d1c089196e4e1bef314d6d6a01caffd6bba1da Mon Sep 17 00:00:00 2001
From: Tomas Popela <tpopela@redhat.com>
Date: Mon, 23 Jul 2018 10:57:33 +0200
Subject: [PATCH 06/17] Fix a use of an uninitialized variable
yelp-3.28.1/libyelp/yelp-info-parser.c:1174: var_decl: Declaring variable "menu_node" without initializer.
yelp-3.28.1/libyelp/yelp-info-parser.c:1310: uninit_use: Using uninitialized value "menu_node".
1308| else if (*(menuitems[i]) != '\0') {
1309| tmp = g_strconcat ("\n", first_non_space (menuitems[i]), NULL);
1310|-> xmlNewTextChild (mholder ? mholder : menu_node,
1311| NULL, BAD_CAST "para1",
1312| BAD_CAST tmp);
---
libyelp/yelp-info-parser.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/libyelp/yelp-info-parser.c b/libyelp/yelp-info-parser.c
index 0c383bfe..ed16e373 100644
--- a/libyelp/yelp-info-parser.c
+++ b/libyelp/yelp-info-parser.c
@@ -1171,7 +1171,7 @@ yelp_info_parse_menu (GtkTreeStore *tree, xmlNodePtr *node,
gchar **split;
gchar **menuitems;
gchar *tmp = NULL;
- xmlNodePtr newnode, menu_node, mholder = NULL;
+ xmlNodePtr newnode, menu_node = NULL, mholder = NULL;
int i=0;
split = g_strsplit (page_content, "* Menu:", 2);
--
2.19.1

View File

@ -1,29 +0,0 @@
From 79e59e9d374e635ca65b4d24c59fffacc5425b1a Mon Sep 17 00:00:00 2001
From: Tomas Popela <tpopela@redhat.com>
Date: Mon, 23 Jul 2018 11:04:35 +0200
Subject: [PATCH 07/17] Check whether the index variable is valid before
dereferencing it
yelp-3.28.1/libyelp/yelp-mallard-document.c:1002: deref_ptr: Directly dereferencing pointer "index".
yelp-3.28.1/libyelp/yelp-mallard-document.c:1073: check_after_deref: Null-checking "index" suggests that it may be null, but it has already been dereferenced on all paths leading to the check.
---
libyelp/yelp-mallard-document.c | 3 +--
1 file changed, 1 insertion(+), 2 deletions(-)
diff --git a/libyelp/yelp-mallard-document.c b/libyelp/yelp-mallard-document.c
index 74fc80ee..9c006efc 100644
--- a/libyelp/yelp-mallard-document.c
+++ b/libyelp/yelp-mallard-document.c
@@ -1070,8 +1070,7 @@ mallard_index_threaded (YelpMallardDocument *mallard)
xmlXPathFreeContext (xpath);
if (index->doc != NULL)
xmlFreeDoc (index->doc);
- if (index != NULL)
- g_free (index);
+ g_free (index);
if (parserCtxt != NULL)
xmlFreeParserCtxt (parserCtxt);
g_object_unref (pagefile);
--
2.19.1

View File

@ -1,35 +0,0 @@
From 33bf987013a6f7c875dc643a74e11beba4a12f03 Mon Sep 17 00:00:00 2001
From: Tomas Popela <tpopela@redhat.com>
Date: Mon, 23 Jul 2018 11:15:10 +0200
Subject: [PATCH 08/17] Check whether parser is null before dereferencing it
yelp-3.28.1/libyelp/yelp-man-parser.c:445: var_compare_op: Comparing "parser" to null implies that "parser" might be null.
yelp-3.28.1/libyelp/yelp-man-parser.c:449: var_deref_op: Dereferencing null pointer "parser".
---
libyelp/yelp-man-parser.c | 10 ++++++----
1 file changed, 6 insertions(+), 4 deletions(-)
diff --git a/libyelp/yelp-man-parser.c b/libyelp/yelp-man-parser.c
index 46073a2e..8d097820 100644
--- a/libyelp/yelp-man-parser.c
+++ b/libyelp/yelp-man-parser.c
@@ -442,10 +442,12 @@ void
yelp_man_parser_free (YelpManParser *parser)
{
guint k;
- if (parser) {
- for (k=0; k<MAN_FONTS; k++)
- g_free (parser->font_registers[k]);
- }
+
+ if (parser == NULL)
+ return;
+
+ for (k=0; k<MAN_FONTS; k++)
+ g_free (parser->font_registers[k]);
g_string_free (parser->accumulator, TRUE);
g_free (parser->title_str);
g_free (parser->section);
--
2.19.1

View File

@ -1,40 +0,0 @@
From b1d8fce69f59581769e5db87e7e20cdc3c27d685 Mon Sep 17 00:00:00 2001
From: Tomas Popela <tpopela@redhat.com>
Date: Mon, 23 Jul 2018 11:30:54 +0200
Subject: [PATCH 09/17] Avoid possible overrun while comparing to MAN_FONTS
yelp-3.28.1/libyelp/yelp-man-parser.c:464: cond_at_most: Checking "k > 8U" implies that "k" may be up to 8 on the false branch.
yelp-3.28.1/libyelp/yelp-man-parser.c:469: overrun-local: Overrunning array "parser->font_registers" of 8 8-byte elements at element index 8 (byte offset 64) using index "k" (which evaluates to 8).
yelp-3.28.1/libyelp/yelp-man-parser.c:476: assignment: Assigning: "k" = "parser->current_font".
yelp-3.28.1/libyelp/yelp-man-parser.c:477: cond_at_most: Checking "k > 8U" implies that "k" and "parser->current_font" may be up to 8 on the false branch.
yelp-3.28.1/libyelp/yelp-man-parser.c:477: overrun-local: Overrunning array "parser->font_registers" of 8 8-byte elements at element index 8 (byte offset 64) using index "k" (which evaluates to 8).
---
libyelp/yelp-man-parser.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/libyelp/yelp-man-parser.c b/libyelp/yelp-man-parser.c
index 8d097820..00e66e00 100644
--- a/libyelp/yelp-man-parser.c
+++ b/libyelp/yelp-man-parser.c
@@ -463,7 +463,7 @@ yelp_man_parser_free (YelpManParser *parser)
static void
set_font_register (YelpManParser *parser, guint k, const gchar* name)
{
- if (k > MAN_FONTS) {
+ if (k >= MAN_FONTS) {
g_warning ("Tried to set nonexistant font register %u to %s",
k, name);
return;
@@ -476,7 +476,7 @@ static const gchar*
get_font (const YelpManParser *parser)
{
guint k = parser->current_font;
- if (k > MAN_FONTS ||
+ if (k >= MAN_FONTS ||
parser->font_registers[k] == NULL) {
g_warning ("Tried to get nonexistant font register %u", k);
--
2.19.1

View File

@ -1,37 +0,0 @@
From 526febe57f9c05e3ca8a08e4016c5b36b8195406 Mon Sep 17 00:00:00 2001
From: Tomas Popela <tpopela@redhat.com>
Date: Mon, 23 Jul 2018 11:43:51 +0200
Subject: [PATCH 10/17] Increase the size of string variables passed to sscanf
yelp-3.28.1/libyelp/yelp-man-parser.c:549: error[invalidScanfFormatWidth]: Width 10 given in format string (no. 2) is larger than destination buffer 'name[10]', use %9s to prevent overflowing it.
yelp-3.28.1/libyelp/yelp-man-parser.c:926: error[invalidScanfFormatWidth]: Width 16 given in format string (no. 1) is larger than destination buffer 'name[16]', use %15s to prevent overflowing it.
---
libyelp/yelp-man-parser.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/libyelp/yelp-man-parser.c b/libyelp/yelp-man-parser.c
index 00e66e00..f8eb69f6 100644
--- a/libyelp/yelp-man-parser.c
+++ b/libyelp/yelp-man-parser.c
@@ -545,7 +545,7 @@ parse_prologue_line (YelpManParser *parser, GError **error)
static gboolean
parse_xf (YelpManParser *parser, GError **error)
{
- gchar name[10];
+ gchar name[11];
guint k;
if (SSCANF ("x f%*s %u %10s", 2, &k, name)) {
@@ -920,7 +920,7 @@ append_nbsps (YelpManParser *parser, guint k)
static gboolean
parse_C (YelpManParser *parser, GError **error)
{
- gchar name[16];
+ gchar name[17];
gunichar code = 0;
guint k;
gint len;
--
2.19.1

View File

@ -1,27 +0,0 @@
From c5abcf98fdbb437574f916b6b2c1fa2f3a89219f Mon Sep 17 00:00:00 2001
From: Tomas Popela <tpopela@redhat.com>
Date: Mon, 23 Jul 2018 11:45:36 +0200
Subject: [PATCH 11/17] Initialize ws_start variable before returning it
yelp-3.28.1/libyelp/yelp-man-parser.c:1194: var_decl: Declaring variable "ws_start" without initializer.
yelp-3.28.1/libyelp/yelp-man-parser.c:1202: uninit_use: Using uninitialized value "ws_start".
---
libyelp/yelp-man-parser.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/libyelp/yelp-man-parser.c b/libyelp/yelp-man-parser.c
index f8eb69f6..302ccb31 100644
--- a/libyelp/yelp-man-parser.c
+++ b/libyelp/yelp-man-parser.c
@@ -1193,7 +1193,7 @@ static gchar *
find_contiguous_whitespace (gchar *text, guint ws_len)
{
guint counter = 0;
- gchar *ws_start;
+ gchar *ws_start = NULL;
while (*text) {
if (g_unichar_isspace (g_utf8_get_char (text))) {
if (!counter) ws_start = text;
--
2.19.1

View File

@ -1,32 +0,0 @@
From 3fe0efe361ca9fb697f82d67e0bd9036970f9884 Mon Sep 17 00:00:00 2001
From: Tomas Popela <tpopela@redhat.com>
Date: Mon, 23 Jul 2018 11:53:13 +0200
Subject: [PATCH 12/17] Swap the if() checks to avoid possible null pointer
dereference
yelp-3.28.1/libyelp/yelp-transform.c:501: deref_ptr: Directly dereferencing pointer "ctxt".
yelp-3.28.1/libyelp/yelp-transform.c:504: check_after_deref: Null-checking "ctxt" suggests that it may be null, but it has already been dereferenced on all paths leading to the check.
---
libyelp/yelp-transform.c | 4 ++--
1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/libyelp/yelp-transform.c b/libyelp/yelp-transform.c
index 7a5dc86e..0a1c8058 100644
--- a/libyelp/yelp-transform.c
+++ b/libyelp/yelp-transform.c
@@ -498,10 +498,10 @@ xslt_yelp_document (xsltTransformContextPtr ctxt,
debug_print (DB_FUNCTION, "entering\n");
- if (ctxt->state == XSLT_STATE_STOPPED)
+ if (!ctxt || !node || !inst || !comp)
return;
- if (!ctxt || !node || !inst || !comp)
+ if (ctxt->state == XSLT_STATE_STOPPED)
return;
transform = YELP_TRANSFORM (ctxt->_private);
--
2.19.1

View File

@ -1,33 +0,0 @@
From e3e9e7961b721d2bdbf50ca81fdc869170289e28 Mon Sep 17 00:00:00 2001
From: Tomas Popela <tpopela@redhat.com>
Date: Mon, 23 Jul 2018 11:56:21 +0200
Subject: [PATCH 13/17] Check the strstr() return value before using it
yelp-3.28.1/libyelp/yelp-uri-builder.c:81: returned_null: "strstr" returns null (checked 10 out of 12 times).
yelp-3.28.1/libyelp/yelp-uri-builder.c:81: var_assigned: Assigning: "resource" = null return value from "strstr".
yelp-3.28.1/libyelp/yelp-uri-builder.c:82: dereference: Incrementing a pointer which might be null: "resource".
---
libyelp/yelp-uri-builder.c | 7 ++++---
1 file changed, 4 insertions(+), 3 deletions(-)
diff --git a/libyelp/yelp-uri-builder.c b/libyelp/yelp-uri-builder.c
index bb34d202..58a53ac9 100644
--- a/libyelp/yelp-uri-builder.c
+++ b/libyelp/yelp-uri-builder.c
@@ -78,9 +78,10 @@ build_yelp_uri (const gchar *uri_str)
memmove (uri, uri + BOGUS_PREFIX_LEN, strlen (uri) - BOGUS_PREFIX_LEN + 1);
/* Remove the leading slash */
- resource = strstr (uri, ":");
- resource++;
- memmove (resource, resource + 1, strlen (resource));
+ if ((resource = strstr (uri, ":"))) {
+ resource++;
+ memmove (resource, resource + 1, strlen (resource));
+ }
/* Remove the trailing slash if any */
path_len = strlen (uri);
--
2.19.1

View File

@ -1,27 +0,0 @@
From 16bcefc7eeca2443e79b85e5257f66ef5b50eaf0 Mon Sep 17 00:00:00 2001
From: Tomas Popela <tpopela@redhat.com>
Date: Tue, 24 Jul 2018 12:45:42 +0200
Subject: [PATCH 14/17] Check variable before dereferencing it
yelp-3.28.1/libyelp/yelp-mallard-document.c:341: var_compare_op: Comparing "path" to null implies that "path" might be null.
yelp-3.28.1/libyelp/yelp-mallard-document.c:346: var_deref_op: Dereferencing null pointer "path".
---
libyelp/yelp-mallard-document.c | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/libyelp/yelp-mallard-document.c b/libyelp/yelp-mallard-document.c
index 9c006efc..b3319310 100644
--- a/libyelp/yelp-mallard-document.c
+++ b/libyelp/yelp-mallard-document.c
@@ -345,7 +345,7 @@ mallard_think (YelpMallardDocument *mallard)
*/
error = g_error_new (YELP_ERROR, YELP_ERROR_NOT_FOUND,
_("The directory %s does not exist."),
- path[0]);
+ path && path[0] ? path[0] : "NULL");
yelp_document_error_pending ((YelpDocument *) mallard, error);
g_error_free (error);
goto done;
--
2.19.1

View File

@ -1,32 +0,0 @@
From a49c3d4b94dbfabefe81d2c6d903c53c252bf78a Mon Sep 17 00:00:00 2001
From: Tomas Popela <tpopela@redhat.com>
Date: Fri, 12 Oct 2018 11:04:31 +0200
Subject: [PATCH 15/17] Remove unused variable
4. yelp-3.28.1/libyelp/yelp-info-parser.c:959:2: note: Value stored to 'pages' is never read
pages = 0;
^ ~
957| (GDestroyNotify) gtk_tree_iter_free);
958|
959|-> pages = 0;
960| for (ptr = page_list; *ptr != NULL; ptr++)
961| {
---
libyelp/yelp-info-parser.c | 1 -
1 file changed, 1 deletion(-)
diff --git a/libyelp/yelp-info-parser.c b/libyelp/yelp-info-parser.c
index ed16e373..7b718ea0 100644
--- a/libyelp/yelp-info-parser.c
+++ b/libyelp/yelp-info-parser.c
@@ -956,7 +956,6 @@ GtkTreeStore
nodes2iters = g_hash_table_new_full (g_str_hash, g_str_equal, g_free,
(GDestroyNotify) gtk_tree_iter_free);
- pages = 0;
for (ptr = page_list; *ptr != NULL; ptr++)
{
if (page_type (*ptr) != PAGE_NODE) continue;
--
2.19.1

View File

@ -1,225 +0,0 @@
From 7076be534597dadba5c3b3bcfdd10a93333fbc43 Mon Sep 17 00:00:00 2001
From: Tomas Popela <tpopela@redhat.com>
Date: Fri, 12 Oct 2018 12:11:32 +0200
Subject: [PATCH 16/17] Fix possible double free
Error: CLANG_WARNING:
yelp-3.28.1/libyelp/yelp-uri.c:931:5: warning: Attempt to free released memory
g_free (query);
^
yelp-3.28.1/libyelp/yelp-uri.c:259:9: note: Assuming the condition is false
if (priv->doctype != YELP_URI_DOCUMENT_TYPE_UNRESOLVED)
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
yelp-3.28.1/libyelp/yelp-uri.c:259:5: note: Taking false branch
if (priv->doctype != YELP_URI_DOCUMENT_TYPE_UNRESOLVED)
^
yelp-3.28.1/libyelp/yelp-uri.c:262:9: note: Assuming the condition is false
if (priv->res_base)
^~~~~~~~~~~~~~
yelp-3.28.1/libyelp/yelp-uri.c:262:5: note: Taking false branch
if (priv->res_base)
^
yelp-3.28.1/libyelp/yelp-uri.c:266:5: note: Calling 'resolve_sync'
resolve_sync (uri);
^~~~~~~~~~~~~~~~~~
yelp-3.28.1/libyelp/yelp-uri.c:311:9: note: Assuming the condition is false
if (g_str_has_prefix (priv->res_arg, "ghelp:")
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
yelp-3.28.1/libyelp/yelp-uri.c:311:9: note: Left side of '||' is false
yelp-3.28.1/libyelp/yelp-uri.c:312:12: note: Assuming the condition is false
|| g_str_has_prefix (priv->res_arg, "gnome-help:")) {
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
yelp-3.28.1/libyelp/yelp-uri.c:311:5: note: Taking false branch
if (g_str_has_prefix (priv->res_arg, "ghelp:")
^
yelp-3.28.1/libyelp/yelp-uri.c:315:14: note: Assuming the condition is true
else if (g_str_has_prefix (priv->res_arg, "help:")) {
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
yelp-3.28.1/libyelp/yelp-uri.c:315:10: note: Taking true branch
else if (g_str_has_prefix (priv->res_arg, "help:")) {
^
yelp-3.28.1/libyelp/yelp-uri.c:316:9: note: Calling 'resolve_help_uri'
resolve_help_uri (uri);
^~~~~~~~~~~~~~~~~~~~~~
yelp-3.28.1/libyelp/yelp-uri.c:856:9: note: Assuming 'colon' is non-null
if (!colon) {
^~~~~~
yelp-3.28.1/libyelp/yelp-uri.c:856:5: note: Taking false branch
if (!colon) {
^
yelp-3.28.1/libyelp/yelp-uri.c:862:21: note: Assuming the condition is true
for (c = colon; *c != '\0'; c++) {
^~~~~~~~~~
yelp-3.28.1/libyelp/yelp-uri.c:862:5: note: Loop condition is true. Entering loop body
for (c = colon; *c != '\0'; c++) {
^
yelp-3.28.1/libyelp/yelp-uri.c:863:13: note: Assuming the condition is false
if (*c == '#' && hash == NULL)
^~~~~~~~~
yelp-3.28.1/libyelp/yelp-uri.c:863:23: note: Left side of '&&' is false
if (*c == '#' && hash == NULL)
^
yelp-3.28.1/libyelp/yelp-uri.c:865:18: note: Assuming the condition is false
else if (*c == '?' && query == NULL && hash == NULL)
^~~~~~~~~
yelp-3.28.1/libyelp/yelp-uri.c:865:28: note: Left side of '&&' is false
else if (*c == '?' && query == NULL && hash == NULL)
^
yelp-3.28.1/libyelp/yelp-uri.c:867:18: note: Assuming the condition is false
else if (*c == '/' && slash == NULL && query == NULL && hash == NULL)
^~~~~~~~~
yelp-3.28.1/libyelp/yelp-uri.c:867:28: note: Left side of '&&' is false
else if (*c == '/' && slash == NULL && query == NULL && hash == NULL)
^
yelp-3.28.1/libyelp/yelp-uri.c:862:21: note: Assuming the condition is true
for (c = colon; *c != '\0'; c++) {
^~~~~~~~~~
yelp-3.28.1/libyelp/yelp-uri.c:862:5: note: Loop condition is true. Entering loop body
for (c = colon; *c != '\0'; c++) {
^
yelp-3.28.1/libyelp/yelp-uri.c:863:13: note: Assuming the condition is false
if (*c == '#' && hash == NULL)
^~~~~~~~~
yelp-3.28.1/libyelp/yelp-uri.c:863:23: note: Left side of '&&' is false
if (*c == '#' && hash == NULL)
^
yelp-3.28.1/libyelp/yelp-uri.c:865:18: note: Assuming the condition is true
else if (*c == '?' && query == NULL && hash == NULL)
^~~~~~~~~
yelp-3.28.1/libyelp/yelp-uri.c:865:18: note: Left side of '&&' is true
yelp-3.28.1/libyelp/yelp-uri.c:865:18: note: Left side of '&&' is true
yelp-3.28.1/libyelp/yelp-uri.c:865:14: note: Taking true branch
else if (*c == '?' && query == NULL && hash == NULL)
^
yelp-3.28.1/libyelp/yelp-uri.c:862:21: note: Assuming the condition is true
for (c = colon; *c != '\0'; c++) {
^~~~~~~~~~
yelp-3.28.1/libyelp/yelp-uri.c:862:5: note: Loop condition is true. Entering loop body
for (c = colon; *c != '\0'; c++) {
^
yelp-3.28.1/libyelp/yelp-uri.c:863:13: note: Assuming the condition is true
if (*c == '#' && hash == NULL)
^~~~~~~~~
yelp-3.28.1/libyelp/yelp-uri.c:863:13: note: Left side of '&&' is true
yelp-3.28.1/libyelp/yelp-uri.c:863:9: note: Taking true branch
if (*c == '#' && hash == NULL)
^
yelp-3.28.1/libyelp/yelp-uri.c:862:21: note: Assuming the condition is false
for (c = colon; *c != '\0'; c++) {
^~~~~~~~~~
yelp-3.28.1/libyelp/yelp-uri.c:862:5: note: Loop condition is false. Execution continues on line 871
for (c = colon; *c != '\0'; c++) {
^
yelp-3.28.1/libyelp/yelp-uri.c:871:9: note: Left side of '||' is false
if (slash || query || hash)
^
yelp-3.28.1/libyelp/yelp-uri.c:871:24: note: Left side of '||' is true
if (slash || query || hash)
^
yelp-3.28.1/libyelp/yelp-uri.c:873:32: note: '?' condition is false
(slash ? slash : (query ? query : hash)) - colon - 1);
^
yelp-3.28.1/libyelp/yelp-uri.c:873:49: note: '?' condition is true
(slash ? slash : (query ? query : hash)) - colon - 1);
^
yelp-3.28.1/libyelp/yelp-uri.c:877:15: note: Left side of '&&' is false
if (slash && (query || hash))
^
yelp-3.28.1/libyelp/yelp-uri.c:880:10: note: Taking false branch
else if (slash)
^
yelp-3.28.1/libyelp/yelp-uri.c:883:9: note: Assuming 'query' is null
if (query && hash)
^~~~~
yelp-3.28.1/libyelp/yelp-uri.c:883:15: note: Left side of '&&' is false
if (query && hash)
^
yelp-3.28.1/libyelp/yelp-uri.c:886:14: note: Assuming 'query' is null
else if (query)
^~~~~
yelp-3.28.1/libyelp/yelp-uri.c:886:10: note: Taking false branch
else if (query)
^
yelp-3.28.1/libyelp/yelp-uri.c:889:9: note: Assuming 'query' is null
if (query) {
^~~~~
yelp-3.28.1/libyelp/yelp-uri.c:889:5: note: Taking false branch
if (query) {
^
yelp-3.28.1/libyelp/yelp-uri.c:907:9: note: Assuming 'hash' is null
if (hash)
^~~~
yelp-3.28.1/libyelp/yelp-uri.c:907:5: note: Taking false branch
if (hash)
^
yelp-3.28.1/libyelp/yelp-uri.c:910:22: note: '?' condition is false
priv->page_id = (slash ? slash : g_strdup ("index"));
^
yelp-3.28.1/libyelp/yelp-uri.c:913:9: note: Assuming 'hash' is non-null
if (hash)
^~~~
yelp-3.28.1/libyelp/yelp-uri.c:913:5: note: Taking true branch
if (hash)
^
yelp-3.28.1/libyelp/yelp-uri.c:915:9: note: Assuming the condition is true
if (priv->frag_id && g_str_has_prefix (priv->frag_id, "search=")) {
^~~~~~~~~~~~~
yelp-3.28.1/libyelp/yelp-uri.c:915:9: note: Left side of '&&' is true
yelp-3.28.1/libyelp/yelp-uri.c:915:26: note: Assuming the condition is true
if (priv->frag_id && g_str_has_prefix (priv->frag_id, "search=")) {
^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
yelp-3.28.1/libyelp/yelp-uri.c:915:5: note: Taking true branch
if (priv->frag_id && g_str_has_prefix (priv->frag_id, "search=")) {
^
yelp-3.28.1/libyelp/yelp-uri.c:916:9: note: Memory is released
g_free (priv->frag_id);
^~~~~~~~~~~~~~~~~~~~~~
yelp-3.28.1/libyelp/yelp-uri.c:923:34: note: Assuming the condition is false
priv->page_id ? "/" : "",
^~~~~~~~~~~~~
yelp-3.28.1/libyelp/yelp-uri.c:923:34: note: '?' condition is false
yelp-3.28.1/libyelp/yelp-uri.c:924:34: note: '?' condition is false
priv->page_id ? priv->page_id : "",
^
yelp-3.28.1/libyelp/yelp-uri.c:925:34: note: Assuming 'query' is non-null
query ? "?" : "",
^~~~~
yelp-3.28.1/libyelp/yelp-uri.c:925:34: note: '?' condition is true
yelp-3.28.1/libyelp/yelp-uri.c:926:34: note: '?' condition is true
query ? query : "",
^
yelp-3.28.1/libyelp/yelp-uri.c:927:34: note: '?' condition is false
priv->frag_id ? "#" : "",
^
yelp-3.28.1/libyelp/yelp-uri.c:928:34: note: '?' condition is false
priv->frag_id ? priv->frag_id : "",
^
yelp-3.28.1/libyelp/yelp-uri.c:931:5: note: Attempt to free released memory
g_free (query);
^~~~~~~~~~~~~~
929| NULL);
930|
931|-> g_free (query);
932| g_free (document);
933| return;
---
libyelp/yelp-uri.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/libyelp/yelp-uri.c b/libyelp/yelp-uri.c
index f20b167e..385cb837 100644
--- a/libyelp/yelp-uri.c
+++ b/libyelp/yelp-uri.c
@@ -928,7 +928,8 @@ resolve_help_uri (YelpUri *uri)
priv->frag_id ? priv->frag_id : "",
NULL);
- g_free (query);
+ if (query)
+ g_free (query);
g_free (document);
return;
}
--
2.19.1

View File

@ -1,147 +0,0 @@
From 2b2fde7b980985c45ddbd77c935ce43350006810 Mon Sep 17 00:00:00 2001
From: Tomas Popela <tpopela@redhat.com>
Date: Fri, 12 Oct 2018 12:53:43 +0200
Subject: [PATCH 17/17] Remove the unused encoding and language code from
YelpManDocument
Error: UNUSED_VALUE (CWE-563): [#def25]
yelp-3.28.1/libyelp/yelp-man-document.c:422: value_overwrite: Overwriting previous write to "encoding" with value from "langmap[i].encoding".
yelp-3.28.1/libyelp/yelp-man-document.c:416: assigned_pointer: Assigning value from ""ISO-8859-1"" to "encoding" here, but that stored value is overwritten before it can be used.
414| encoding = g_getenv("MAN_ENCODING");
415| if (encoding == NULL)
416|-> encoding = "ISO-8859-1";
417|
418| if (language != NULL) {
Error: CLANG_WARNING: [#def26]
yelp-3.28.1/libyelp/yelp-man-document.c:416:2: warning: Value stored to 'encoding' is never read
encoding = "ISO-8859-1";
^ ~~~~~~~~~~~~
yelp-3.28.1/libyelp/yelp-man-document.c:416:2: note: Value stored to 'encoding' is never read
encoding = "ISO-8859-1";
^ ~~~~~~~~~~~~
414| encoding = g_getenv("MAN_ENCODING");
415| if (encoding == NULL)
416|-> encoding = "ISO-8859-1";
417|
418| if (language != NULL) {
Error: CLANG_WARNING: [#def27]
yelp-3.28.1/libyelp/yelp-man-document.c:422:3: warning: Value stored to 'encoding' is never read
encoding = langmap[i].encoding;
^ ~~~~~~~~~~~~~~~~~~~
yelp-3.28.1/libyelp/yelp-man-document.c:422:3: note: Value stored to 'encoding' is never read
encoding = langmap[i].encoding;
^ ~~~~~~~~~~~~~~~~~~~
420| for (i = 0; langmap[i].language != NULL; i++) {
421| if (g_str_equal (language, langmap[i].language)) {
422|-> encoding = langmap[i].encoding;
423| break;
424| }
---
libyelp/yelp-man-document.c | 75 -------------------------------------
1 file changed, 75 deletions(-)
diff --git a/libyelp/yelp-man-document.c b/libyelp/yelp-man-document.c
index ad7fab4f..a18248ca 100644
--- a/libyelp/yelp-man-document.c
+++ b/libyelp/yelp-man-document.c
@@ -61,62 +61,6 @@ struct _YelpManDocumentPrivate {
guint error;
};
-typedef struct _YelpLangEncodings YelpLangEncodings;
-struct _YelpLangEncodings {
- const gchar *language;
- const gchar *encoding;
-};
-/* http://www.w3.org/International/O-charset-lang.html */
-static const YelpLangEncodings langmap[] = {
- { "C", "ISO-8859-1" },
- { "af", "ISO-8859-1" },
- { "ar", "ISO-8859-6" },
- { "bg", "ISO-8859-5" },
- { "be", "ISO-8859-5" },
- { "ca", "ISO-8859-1" },
- { "cs", "ISO-8859-2" },
- { "da", "ISO-8859-1" },
- { "de", "ISO-8859-1" },
- { "el", "ISO-8859-7" },
- { "en", "ISO-8859-1" },
- { "eo", "ISO-8859-3" },
- { "es", "ISO-8859-1" },
- { "et", "ISO-8859-15" },
- { "eu", "ISO-8859-1" },
- { "fi", "ISO-8859-1" },
- { "fo", "ISO-8859-1" },
- { "fr", "ISO-8859-1" },
- { "ga", "ISO-8859-1" },
- { "gd", "ISO-8859-1" },
- { "gl", "ISO-8859-1" },
- { "hu", "ISO-8859-2" },
- { "id", "ISO-8859-1" }, /* is this right */
- { "mt", "ISO-8859-3" },
- { "is", "ISO-8859-1" },
- { "it", "ISO-8859-1" },
- { "iw", "ISO-8859-8" },
- { "ja", "EUC-JP" },
- { "ko", "EUC-KR" },
- { "lt", "ISO-8859-13" },
- { "lv", "ISO-8859-13" },
- { "mk", "ISO-8859-5" },
- { "mt", "ISO-8859-3" },
- { "no", "ISO-8859-1" },
- { "pl", "ISO-8859-2" },
- { "pt_BR", "ISO-8859-1" },
- { "ro", "ISO-8859-2" },
- { "ru", "KOI8-R" },
- { "sl", "ISO-8859-2" },
- { "sr", "ISO-8859-2" }, /* Latin, not cyrillic */
- { "sk", "ISO-8859-2" },
- { "sv", "ISO-8859-1" },
- { "tr", "ISO-8859-9" },
- { "uk", "ISO-8859-5" },
- { "zh_CN", "BIG5" },
- { "zh_TW", "BIG5" },
- { NULL, NULL },
-};
-
static void yelp_man_document_finalize (GObject *object);
/* YelpDocument */
@@ -385,7 +329,6 @@ man_document_process (YelpManDocument *man)
gint params_i = 0;
gchar **params = NULL;
YelpManParser *parser;
- const gchar *language, *encoding;
file = yelp_uri_get_file (yelp_document_get_uri ((YelpDocument *) man));
if (file == NULL) {
@@ -407,24 +350,6 @@ man_document_process (YelpManDocument *man)
goto done;
}
- /* FIXME: get the language */
- language = "C";
-
- /* default encoding if the language doesn't match below */
- encoding = g_getenv("MAN_ENCODING");
- if (encoding == NULL)
- encoding = "ISO-8859-1";
-
- if (language != NULL) {
- gint i;
- for (i = 0; langmap[i].language != NULL; i++) {
- if (g_str_equal (language, langmap[i].language)) {
- encoding = langmap[i].encoding;
- break;
- }
- }
- }
-
parser = yelp_man_parser_new ();
priv->xmldoc = yelp_man_parser_parse_file (parser, filepath, &error);
yelp_man_parser_free (parser);
--
2.19.1

View File

@ -1,83 +0,0 @@
diff --git a/src/yelp-application.c b/src/yelp-application.c
index 47a69991..28638ee7 100644
--- a/src/yelp-application.c
+++ b/src/yelp-application.c
@@ -90,6 +90,9 @@ static void application_adjust_font (GAction *a
GVariant *parameter,
YelpApplication *app);
static void application_set_font_sensitivity (YelpApplication *app);
+static void application_quit (GAction *action,
+ GVariant *parameter,
+ YelpApplication *app);
static void bookmarks_changed (GSettings *settings,
const gchar *key,
@@ -110,6 +113,7 @@ struct _YelpApplicationPrivate {
GPropertyAction *show_cursor_action;
GSimpleAction *larger_text_action;
GSimpleAction *smaller_text_action;
+ GSimpleAction *quit_action;
GSettingsBackend *backend;
GSettings *gsettings;
@@ -200,6 +204,11 @@ yelp_application_dispose (GObject *object)
priv->larger_text_action = NULL;
}
+ if (priv->quit_action) {
+ g_object_unref (priv->quit_action);
+ priv->quit_action = NULL;
+ }
+
if (priv->smaller_text_action) {
g_object_unref (priv->smaller_text_action);
priv->smaller_text_action = NULL;
@@ -267,6 +276,7 @@ yelp_application_startup (GApplication *application)
GMenu *menu, *section;
gchar *keyfile;
YelpSettings *settings;
+ const gchar *quit_accels[2] = { "<Ctrl>Q", NULL };
g_set_application_name (N_("Help"));
@@ -316,6 +326,16 @@ yelp_application_startup (GApplication *application)
application_set_font_sensitivity (app);
+ priv->quit_action = g_simple_action_new ("yelp-application-quit", NULL);
+ g_signal_connect (priv->quit_action,
+ "activate",
+ G_CALLBACK (application_quit),
+ app);
+ g_action_map_add_action (G_ACTION_MAP (app), G_ACTION (priv->quit_action));
+
+ gtk_application_set_accels_for_action (
+ GTK_APPLICATION (app), "app.yelp-application-quit", quit_accels);
+
menu = g_menu_new ();
section = g_menu_new ();
g_menu_append (section, _("New Window"), "win.yelp-window-new");
@@ -326,11 +346,23 @@ yelp_application_startup (GApplication *application)
g_menu_append (section, _("Smaller Text"), "app.yelp-application-smaller-text");
g_menu_append_section (menu, NULL, G_MENU_MODEL (section));
g_object_unref (section);
+ section = g_menu_new ();
+ g_menu_append (section, _("Quit"), "app.yelp-application-quit");
+ g_menu_append_section (menu, NULL, G_MENU_MODEL (section));
+ g_object_unref (section);
gtk_application_set_app_menu (GTK_APPLICATION (application), G_MENU_MODEL (menu));
}
/******************************************************************************/
+static void
+application_quit (GAction *action,
+ GVariant *parameter,
+ YelpApplication *app)
+{
+ g_application_quit (G_APPLICATION (app));
+}
+
static void
application_adjust_font (GAction *action,
GVariant *parameter,

View File

@ -1,41 +1,20 @@
%global _changelog_trimtime %(date +%s -d "1 year ago")
%global tarball_version %%(echo %{version} | tr '~' '.')
Name: yelp
Epoch: 2
Version: 3.28.1
Release: 3%{?dist}
Version: 40.3
Release: 2%{?dist}
Summary: Help browser for the GNOME desktop
Group: Applications/System
License: LGPLv2+ and ASL 2.0 and GPLv2+
URL: https://wiki.gnome.org/Apps/Yelp
#VCS: git:git://git.gnome.org/yelp
Source: https://download.gnome.org/sources/%{name}/3.28/%{name}-%{version}.tar.xz
Source: https://download.gnome.org/sources/%{name}/40/%{name}-%{tarball_version}.tar.xz
# https://bugzilla.gnome.org/show_bug.cgi?id=687960
Patch1: 0001-Center-new-windows.patch
# https://gitlab.gnome.org/GNOME/yelp/commit/b8fdfcae060bdffb15d81e68cdff011105013eb0
Patch2: 0001-Fix-build-with-GCC-8.patch
Patch3: 0001-Add-gnu_printf-format-attribute-to-yelp_debug.patch
Patch4: 0002-Check-whether-document-has-a-root-element-before-acc.patch
Patch5: 0003-Check-whether-the-index-variable-is-valid-before-der.patch
Patch6: 0004-Correctly-check-whether-virtual-method-is-implemente.patch
Patch7: 0005-Check-whether-variable-node-is-set-before-dereferenc.patch
Patch8: 0006-Fix-a-use-of-an-uninitialized-variable.patch
Patch9: 0007-Check-whether-the-index-variable-is-valid-before-der.patch
Patch10: 0008-Check-whether-parser-is-null-before-dereferencing-it.patch
Patch11: 0009-Avoid-possible-overrun-while-comparing-to-MAN_FONTS.patch
Patch12: 0010-Increase-the-size-of-string-variables-passed-to-ssca.patch
Patch13: 0011-Initialize-ws_start-variable-before-returning-it.patch
Patch14: 0012-Swap-the-if-checks-to-avoid-possible-null-pointer-de.patch
Patch15: 0013-Check-the-strstr-return-value-before-using-it.patch
Patch16: 0014-Check-variable-before-dereferencing-it.patch
Patch17: 0015-Remove-unused-variable.patch
Patch18: 0016-Fix-possible-double-free.patch
Patch19: 0017-Remove-the-unused-encoding-and-language-code-from-Ye.patch
# https://bugzilla.redhat.com/show_bug.cgi?id=1638876
Patch20: yelp-quit.patch
BuildRequires: gcc
BuildRequires: make
BuildRequires: pkgconfig(gtk+-3.0)
BuildRequires: pkgconfig(liblzma)
BuildRequires: pkgconfig(libxml-2.0)
@ -47,13 +26,11 @@ BuildRequires: pkgconfig(yelp-xsl)
BuildRequires: desktop-file-utils
BuildRequires: bzip2-devel
BuildRequires: gettext-devel
BuildRequires: git
BuildRequires: intltool
BuildRequires: itstool
Requires: yelp-libs%{?_isa} = %{epoch}:%{version}-%{release}
Requires: yelp-xsl
%description
Yelp is the help browser for the GNOME desktop. It is designed
to help you browse all the documentation on your system in
@ -62,32 +39,24 @@ documentation written in DocBook.
%package libs
Summary: Libraries for yelp
Group: Development/Libraries
%description libs
This package contains libraries used by the yelp help browser.
%package devel
Summary: Development files for yelp-libs
Group: Development/Libraries
Requires: %{name}-libs%{?_isa} = %{epoch}:%{version}-%{release}
%description devel
This package contains header files and documentation for
the libraries in the yelp-libs package.
%prep
%autosetup -p1
%autosetup -p1 -n %{name}-%{tarball_version}
%build
%configure --disable-static
# drop unneeded direct library deps with --as-needed
# libtool doesn't make this easy, so we do it the hard way
sed -i -e 's/ -shared / -Wl,-O1,--as-needed\0 /g' -e 's/ if test "$export_dynamic" = yes && test -n "$export_dynamic_flag_spec"; then/ func_append compile_command " -Wl,-O1,--as-needed"\n func_append finalize_command " -Wl,-O1,--as-needed"\n\0/' libtool
make %{?_smp_mflags} V=1
%make_build
%install
%make_install
@ -99,20 +68,20 @@ find $RPM_BUILD_ROOT%{_libdir} -name '*.la' -delete
%check
desktop-file-validate $RPM_BUILD_ROOT%{_datadir}/applications/yelp.desktop
%ldconfig_scriptlets libs
%files -f %{name}.lang
%doc AUTHORS NEWS README
%license COPYING
%{_bindir}/*
%{_datadir}/applications/yelp.desktop
%{_datadir}/glib-2.0/schemas/org.gnome.yelp.gschema.xml
%{_datadir}/icons/hicolor/scalable/apps/org.gnome.Yelp.svg
%{_datadir}/icons/hicolor/symbolic/apps/org.gnome.Yelp-symbolic.svg
%{_datadir}/metainfo/yelp.appdata.xml
%{_datadir}/yelp/
%{_datadir}/yelp-xsl/xslt/common/domains/yelp.xml
%files libs
%{_libdir}/libyelp.so.*
%{_libdir}/libyelp.so.0*
%dir %{_libdir}/yelp
%dir %{_libdir}/yelp/web-extensions
%{_libdir}/yelp/web-extensions/libyelpwebextension.so
@ -124,14 +93,83 @@ desktop-file-validate $RPM_BUILD_ROOT%{_datadir}/applications/yelp.desktop
%changelog
* Mon Oct 15 2018 Tomas Popela <tpopela@redhat.com> - 2:3.28.1-3
- Add the Quit entry to the app menu
- Handle Ctrl+Q shortcut for quitting the application
- Resolves: rhbz#1638876
* Tue Aug 10 2021 Mohan Boddu <mboddu@redhat.com> - 2:40.3-2
- Rebuilt for IMA sigs, glibc 2.34, aarch64 flags
Related: rhbz#1991688
* Fri Oct 12 2018 Tomas Popela <tpopela@redhat.com> - 2:3.28.1-2
- Fix the coverity scan issues
- Resolves: rhbz#1602739
* Mon Aug 09 2021 David King <amigadave@amigadave.com> - 2:40.3-1
- Update to 40.3 (#1991436)
* Fri Apr 16 2021 Mohan Boddu <mboddu@redhat.com> - 2:40.0-2
- Rebuilt for RHEL 9 BETA on Apr 15th 2021. Related: rhbz#1947937
* Mon Mar 22 2021 Kalev Lember <klember@redhat.com> - 2:40.0-1
- Update to 40.0
* Sun Feb 28 2021 Kalev Lember <klember@redhat.com> - 2:40~beta-2
- Drop libtool as-needed hack as as-needed is in default LDFLAGS now
- Remove unneeded ldconfig_scriptlets macro call
- Tighten soname globs
* Thu Feb 18 2021 Kalev Lember <klember@redhat.com> - 2:40~beta-1
- Update to 40.beta
* Thu Jan 28 2021 Fedora Release Engineering <releng@fedoraproject.org> - 2:3.38.2-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild
* Wed Nov 25 2020 Kalev Lember <klember@redhat.com> - 2:3.38.2-1
- Update to 3.38.2
* Mon Oct 5 2020 Kalev Lember <klember@redhat.com> - 2:3.38.1-1
- Update to 3.38.1
* Sat Sep 12 2020 Kalev Lember <klember@redhat.com> - 2:3.38.0-1
- Update to 3.38.0
* Tue Aug 18 2020 David King <amigadave@amigadave.com> - 2:3.37.90-2
- Use make_build macro
* Mon Aug 17 2020 Kalev Lember <klember@redhat.com> - 2:3.37.90-1
- Update to 3.37.90
* Wed Jul 29 2020 Fedora Release Engineering <releng@fedoraproject.org> - 2:3.36.0-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild
* Sat Mar 07 2020 Kalev Lember <klember@redhat.com> - 2:3.36.0-1
- Update to 3.36.0
* Fri Jan 31 2020 Fedora Release Engineering <releng@fedoraproject.org> - 2:3.34.0-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild
* Mon Sep 09 2019 Kalev Lember <klember@redhat.com> - 2:3.34.0-1
- Update to 3.34.0
* Tue Sep 03 2019 Kalev Lember <klember@redhat.com> - 2:3.33.92-1
- Update to 3.33.92
* Sat Jul 27 2019 Fedora Release Engineering <releng@fedoraproject.org> - 2:3.32.2-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild
* Tue May 07 2019 David King <amigadave@amigadave.com> - 2:3.32.2-1
- Update to 3.32.2
* Mon Apr 08 2019 Kalev Lember <klember@redhat.com> - 2:3.32.1-1
- Update to 3.32.1
* Mon Mar 11 2019 Kalev Lember <klember@redhat.com> - 2:3.32.0-1
- Update to 3.32.0
* Mon Feb 04 2019 David King <amigadave@amigadave.com> - 2:3.31.90-1
- Update to 3.31.90
* Sun Feb 03 2019 Fedora Release Engineering <releng@fedoraproject.org> - 2:3.30.0-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild
* Tue Sep 04 2018 David King <amigadave@amigadave.com> - 2:3.30.0-1
- Update to 3.30.0
* Sat Jul 14 2018 Fedora Release Engineering <releng@fedoraproject.org> - 2:3.28.1-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild
* Mon Apr 09 2018 Kalev Lember <klember@redhat.com> - 2:3.28.1-1
- Update to 3.28.1