Package: yelp
Version: 3.4.2-1
Severity: important
Tags: fixed-upstream
Control: forwarded -1 https://bugzilla.gnome.org/show_bug.cgi?id=686095
User: tails-...@boum.org
Usertags: user-interface for-wheezy
Control: fixed -1 3.8.1-1

Hi,

on Wheezy, when browsing a HTML document in Yelp, and clicking on
a link that points to an anchor, Yelp crashes. This can be reproduced
with the attached document:

  $ yelp file:///absolute/path/to/sysadmin.html

... then click on "Read this first", and boom:

  (yelp:3933): GLib-ERROR **:
  /tmp/buildd/glib2.0-2.33.12+really2.32.4/./glib/gmem.c:165: failed
  to allocate 18446744073709538726 bytes
  Trace/breakpoint trap

We (Tails developers) reported this bug upstream, and had a fix merged
a while ago (commit b617a61), which has been released as part of Yelp
3.8.0. Sadly, we apparently forgot to get the fix into Wheezy :(

With this patch applied, Yelp doesn't crash anymore. Still, things are
not very good either: clicking an anchor link opens Nautilus (who
knows why), but double-clicking it works fine. I'll report this
separately, as testing/sid are also affected. That's why I'm not
proposing to take this to the release team for a stable update.

FWIW, I'm attaching the patch we might apply in Tails/Wheezy.

Cheers,
--
  intrigeri
  | GnuPG key @ https://gaffer.ptitcanardnoir.org/intrigeri/intrigeri.asc
  | OTR fingerprint @ https://gaffer.ptitcanardnoir.org/intrigeri/otr.asc

Title: Tails - Improve the infrastructure behind Tails

So you want to help improve the infrastructure behind Tails.
Welcome aboard! Please read-on.

Read this first

First of all, please read the goals and principles of the Tails system administration team.

Skills needed

Essential skills for participating in the Tails infrastructure include basic Unix system administration knowledge and good communication skills.

Depending on the task, you may also need to be knowledgeable in either Debian system administration, scripting in Perl, Python, Ruby or shell, or one of the services we run.

  • To complete most tasks, some amount of Puppet work must be done. However, it is possible to participate without knowing Puppet, at least for your first contributions.
  • Being an expert beforehand is not required, as long as you are ready to learn whatever you need to know :)

How to choose a task

We use Redmine to manage our list of tasks:

Here are a few tips to pick a task:

  • Focus on the issues marked as Easy on Redmine.
  • Choose something that matters for you.
  • Choose something where your singular skills are put to work.

Do not hesitate to request our advice: tell us about your skills, and we will try to match it to a task.

If anything is unclear, ask us to specify the desired outcome in more details before you start working: this will save time to everybody involved.

How to implement and propose changes

Thanks to the tools we use, you can contribute usefully without having an account on the actual systems.

If you don't know Puppet

A few tasks in Redmine can be fulfilled by testing something, and then reporting your results on the relevant ticket.

However, most tasks are a bit more complicated. Follow these steps to contribute useful bits, that someone else can then integrate into Puppet:

  1. Prepare configuration, scripts and whatever is needed. During this process:
    • Write down every setup step needed to deploy the whole thing.
    • In particular, take note of any dependency you install. Better work in a minimal Debian stable system to avoid missing some (hint: virtual machine, pbuilder chroot or alike).
    • Document how the whole thing is supposed to be used.
  2. Test, hack, test, [...]
  3. Publish your work somewhere, preferably in a Git repository to smooth any further iteration our first review pass may require. If you already know where to host your personal repositories, this is great; or else you may ask us to host your repository.
  4. Tell us what problem you tried to solve, and where we can find your solution.

If you know Puppet, or want to learn it

To solve a problem with Puppet, you need to:

  • Either, improve a Puppet module. If we are not the original authors of this module, please contribute your changes upstream: we don't want to maintain forks forever.
  • Or, create a new Puppet module. But first, try to find an existing module that can be adapted to our needs.

Many Puppet modules can be found in the shared Puppet modules, the Puppet Forge, and on GitHub.

To smooth the reviewing and merging process: create atomic commits, document your changes in details, follow the Puppet style guide, and carefully test your changes.

Once ready, you can submit trivial changes over email, in the form of Git patches prepared with git-format-patch(1).

For anything more substantial, please publish your work as a Git topic branch. If you already know where to host your personal repositories, this is great; or else you may ask us to host your repository.

Contact information

Email us at tails-sysadmins@boum.org. We prefer receiving email encrypted with our OpenPGP key, that can be found on the keyservers, and is certified by the Tails signing key.

Author: Tails developers <ta...@boum.org>
Date: Sat Oct 13 16:06:15 2012 +0000
Description: Fix handling of xref links with anchors in resolve_file_path()
Bug: https://bugzilla.gnome.org/show_bug.cgi?id=686095
Bug-Debian: XXXXXX
Origin: https://git.gnome.org/browse/yelp/commit/?id=b617a61287862c909b6819173bdac4e0c419667a
Applied-Upstream: 3.7.3

diff --git a/libyelp/yelp-uri.c b/libyelp/yelp-uri.c
index e53062a..be23df2 100644
--- a/libyelp/yelp-uri.c
+++ b/libyelp/yelp-uri.c
@@ -562,7 +562,7 @@ resolve_file_path (YelpUri *uri)
     YelpUriPrivate *base_priv = NULL;
     YelpUriPrivate *priv = GET_PRIV (uri);
     gchar *path;
-    const gchar *hash = strchr (priv->res_arg, '#');
+    const gchar *hash;
 
     /* Treat xref: URIs like relative file paths */
     if (g_str_has_prefix (priv->res_arg, "xref:")) {
@@ -574,6 +574,7 @@ resolve_file_path (YelpUri *uri)
     if (priv->res_base)
         base_priv = GET_PRIV (priv->res_base);
 
+    hash = strchr (priv->res_arg, '#');
     if (hash) {
         path = g_strndup (priv->res_arg, hash - priv->res_arg);
         hash++;

Reply via email to