Compare commits

...

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

25 changed files with 97 additions and 1322 deletions

3
.gitignore vendored
View File

@ -1 +1,2 @@
SOURCES/yelp-3.28.1.tar.xz /yelp-*.tar.bz2
/yelp-*.tar.xz

View File

@ -1 +1 @@
2781090d6dc3227212de46b04de88c92053b8340 SOURCES/yelp-3.28.1.tar.xz c8eac14b739808eeb24727df03f19d5a998732aa 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,

6
gating.yaml Normal file
View File

@ -0,0 +1,6 @@
--- !Policy
product_versions:
- rhel-9
decision_context: osci_compose_gate
rules:
- !PassingTestCaseRule {test_case_name: desktop-qe.desktop-ci.tier1-gating.functional}

1
sources Normal file
View File

@ -0,0 +1 @@
SHA512 (yelp-40.3.tar.xz) = d043273884daf1b9ea45065deaf6839b776cece48fcd0bee6b81d9d7d384422f98005340adee2f00a6013e09cf5455a340ac5b9a40fc02b58b163352be907c28

View File

@ -1,41 +1,20 @@
%global _changelog_trimtime %(date +%s -d "1 year ago") %global tarball_version %%(echo %{version} | tr '~' '.')
Name: yelp Name: yelp
Epoch: 2 Epoch: 2
Version: 3.28.1 Version: 40.3
Release: 3%{?dist} Release: 2%{?dist}
Summary: Help browser for the GNOME desktop Summary: Help browser for the GNOME desktop
Group: Applications/System
License: LGPLv2+ and ASL 2.0 and GPLv2+ License: LGPLv2+ and ASL 2.0 and GPLv2+
URL: https://wiki.gnome.org/Apps/Yelp URL: https://wiki.gnome.org/Apps/Yelp
#VCS: git:git://git.gnome.org/yelp Source: https://download.gnome.org/sources/%{name}/40/%{name}-%{tarball_version}.tar.xz
Source: https://download.gnome.org/sources/%{name}/3.28/%{name}-%{version}.tar.xz
# https://bugzilla.gnome.org/show_bug.cgi?id=687960 # https://bugzilla.gnome.org/show_bug.cgi?id=687960
Patch1: 0001-Center-new-windows.patch 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(gtk+-3.0)
BuildRequires: pkgconfig(liblzma) BuildRequires: pkgconfig(liblzma)
BuildRequires: pkgconfig(libxml-2.0) BuildRequires: pkgconfig(libxml-2.0)
@ -47,13 +26,11 @@ BuildRequires: pkgconfig(yelp-xsl)
BuildRequires: desktop-file-utils BuildRequires: desktop-file-utils
BuildRequires: bzip2-devel BuildRequires: bzip2-devel
BuildRequires: gettext-devel BuildRequires: gettext-devel
BuildRequires: git
BuildRequires: intltool BuildRequires: intltool
BuildRequires: itstool BuildRequires: itstool
Requires: yelp-libs%{?_isa} = %{epoch}:%{version}-%{release} Requires: yelp-libs%{?_isa} = %{epoch}:%{version}-%{release}
Requires: yelp-xsl Requires: yelp-xsl
%description %description
Yelp is the help browser for the GNOME desktop. It is designed Yelp is the help browser for the GNOME desktop. It is designed
to help you browse all the documentation on your system in to help you browse all the documentation on your system in
@ -62,32 +39,24 @@ documentation written in DocBook.
%package libs %package libs
Summary: Libraries for yelp Summary: Libraries for yelp
Group: Development/Libraries
%description libs %description libs
This package contains libraries used by the yelp help browser. This package contains libraries used by the yelp help browser.
%package devel %package devel
Summary: Development files for yelp-libs Summary: Development files for yelp-libs
Group: Development/Libraries
Requires: %{name}-libs%{?_isa} = %{epoch}:%{version}-%{release} Requires: %{name}-libs%{?_isa} = %{epoch}:%{version}-%{release}
%description devel %description devel
This package contains header files and documentation for This package contains header files and documentation for
the libraries in the yelp-libs package. the libraries in the yelp-libs package.
%prep %prep
%autosetup -p1 %autosetup -p1 -n %{name}-%{tarball_version}
%build %build
%configure --disable-static %configure --disable-static
%make_build
# 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
%install %install
%make_install %make_install
@ -99,20 +68,20 @@ find $RPM_BUILD_ROOT%{_libdir} -name '*.la' -delete
%check %check
desktop-file-validate $RPM_BUILD_ROOT%{_datadir}/applications/yelp.desktop desktop-file-validate $RPM_BUILD_ROOT%{_datadir}/applications/yelp.desktop
%ldconfig_scriptlets libs
%files -f %{name}.lang %files -f %{name}.lang
%doc AUTHORS NEWS README %doc AUTHORS NEWS README
%license COPYING %license COPYING
%{_bindir}/* %{_bindir}/*
%{_datadir}/applications/yelp.desktop %{_datadir}/applications/yelp.desktop
%{_datadir}/glib-2.0/schemas/org.gnome.yelp.gschema.xml %{_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}/metainfo/yelp.appdata.xml
%{_datadir}/yelp/ %{_datadir}/yelp/
%{_datadir}/yelp-xsl/xslt/common/domains/yelp.xml %{_datadir}/yelp-xsl/xslt/common/domains/yelp.xml
%files libs %files libs
%{_libdir}/libyelp.so.* %{_libdir}/libyelp.so.0*
%dir %{_libdir}/yelp %dir %{_libdir}/yelp
%dir %{_libdir}/yelp/web-extensions %dir %{_libdir}/yelp/web-extensions
%{_libdir}/yelp/web-extensions/libyelpwebextension.so %{_libdir}/yelp/web-extensions/libyelpwebextension.so
@ -124,14 +93,83 @@ desktop-file-validate $RPM_BUILD_ROOT%{_datadir}/applications/yelp.desktop
%changelog %changelog
* Mon Oct 15 2018 Tomas Popela <tpopela@redhat.com> - 2:3.28.1-3 * Tue Aug 10 2021 Mohan Boddu <mboddu@redhat.com> - 2:40.3-2
- Add the Quit entry to the app menu - Rebuilt for IMA sigs, glibc 2.34, aarch64 flags
- Handle Ctrl+Q shortcut for quitting the application Related: rhbz#1991688
- Resolves: rhbz#1638876
* Fri Oct 12 2018 Tomas Popela <tpopela@redhat.com> - 2:3.28.1-2 * Mon Aug 09 2021 David King <amigadave@amigadave.com> - 2:40.3-1
- Fix the coverity scan issues - Update to 40.3 (#1991436)
- Resolves: rhbz#1602739
* 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 * Mon Apr 09 2018 Kalev Lember <klember@redhat.com> - 2:3.28.1-1
- Update to 3.28.1 - Update to 3.28.1