Re: privacy problem: text/html parts pull in network resources

Subject: Re: privacy problem: text/html parts pull in network resources

Date: Wed, 21 Jan 2015 17:39:09 -0500

To: Daniel Kahn Gillmor

Cc: notmuch mailing list

From: Austin Clements


Quoth Daniel Kahn Gillmor on Jan 21 at  4:36 pm:
> On Wed 2015-01-21 16:14:07 -0500, Austin Clements wrote:
> > I have a fix for this on shr buried deep in an old patch series that I
> > never got back to: id:1398105468-14317-12-git-send-email-amdragon@mit.edu
> >
> > For shr, the key is to set shr-blocked-images to ".".
> 
> I've just done this, but it doesn't seem to help.
> 
> > However, IIRC, in the current notmuch message rendering pipeline, mm
> > overrides this variable with something computed from
> > gnus-blocked-images.  That said, I'm not sure why gnus-blocked-images
> > isn't *already* taking care of this, but that's probably the place to
> > start digging.
> 
> gnus-blocked-images is set for me to the function
> gnus-block-private-groups, but i don't know what that is (the function
> is undocumented afaict).  Setting gnus-blocked-images to a regexp of "."
> seems to work for me, though.

In notmuch, mm will wind up calling (gnus-block-private-groups nil).
Unfortunately, gnus apparently considers nil to be a news group rather
than a "private group" (gnus speak for email, I think), so
gnus-block-private-groups returns nil (meaning *don't* block images)
rather than ".".

Probably notmuch should override the gnus-blocked-images variable,
since the default value is simply wrong for notmuch.  Maybe something
along the lines of the following should go around our text/html
handler?

  (let ((gnus-blocked-images
         (if (eq gnus-blocked-images 'gnus-block-private-groups)
             ;; mm uses gnus-blocked-images to control image loading.
             ;; However, the default value of gnus-blocked-images
             ;; doesn't work for notmuch because
             ;; gnus-block-private-groups depends on gnus variables we
             ;; don't set.  Override it to disallow network image
             ;; loading.
             "."
           ;; Use the user's customized value.
           gnus-blocked-images)))
    ...)

Long live abstraction!

Thread: