Subject: [sup-talk] sup leaves unencrypted emails in /tmp

From: Hamish D <[email-masked]>
Date: Thu, 2 Dec 2010 00:18:08 +0000

I noticed that sup appears to leave the unencrypted contents of emails
in /tmp - at least it did on my system. This is a pretty serious issue
on shared computers. I'm not sure why - my attempts at a quick fix
failed. The files are created using Tempfile.new and close is called,
but after that the files are written to by gpg. I'm not sure if this
means that the tempfile system then doesn't delete them later for some
reason.

The tempfile stuff does seem to work for the files containing the
output from gpg. They do (eventually) get deleted. But the "temporary"
files that gpg puts the plaintext into seem to hang around even after
I've done a clean exit from sup.

If anyone has got good ideas about how to fix this for sup 0.12 I
think that would be a fine thing to do.

Note that this is the mainline version of sup, not the gpgme version
I've been developing - using gpgme means the plaintexts never have to
be written to disk, so if we move to gpgme (once I've got it up to
scratch) then these problems will go away.

Thought people ought to know.
Hamish Downer
_______________________________________________
sup-talk mailing list
[email-masked]
http://rubyforge.org/mailman/listinfo/sup-talk

---

From: Cameron Matheson <[email-masked]>
Date: Sat, 04 Dec 2010 00:16:22 -0700

> means that the tempfile system then doesn't delete them later for some

Tempfile is interesting because the file is not deleted until the object
is garbage-collected.  From the Tempfile.close rdoc:

     If you don't explicitly unlink the temporary file, the removal will
     be delayed until the object is finalized.

So if I'm understanding this correctly, the tempfiles may or may not be
cleaned up, depending on when the garbage collector runs (e.g., if the
GC runs before gpg is run, the original tempfile will have already been
deleted, and the new file created by gpg will live on indefinitely).

I was going to write a patch, but I don't do anything use gpg often so
it wasn't convenient to test.  I think an easy solution would just be to
add a 'File.unlink whatever.path' call after each call to gpg (this
would need to be done in encrypt/decrypt/sign/etc.).

Cam