ubuntu-devel@lists.ubuntu.com
[Top] [All Lists]

Re: Launchpadlib support in Ubuntu Developer Tools

Subject: Re: Launchpadlib support in Ubuntu Developer Tools
From: Kees Cook
Date: Wed, 14 Jan 2009 16:48:44 -0800
On Thu, Jan 15, 2009 at 12:23:13AM +0000, Colin Watson wrote:
> On Wed, Jan 14, 2009 at 11:18:35AM -0800, Kees Cook wrote:
> >         launchpad.credentials.save(open(credfile,"w",0600))
> 
> Isn't the third argument to Python's open() the buffer size, not the
> file mode? That's what the documentation says, anyway.

UUuurg, this is what I get for switching languages so much.  :)  Thanks for
catching that.  (Luckily my mkdir worked as expected, which makes the
latter goof less of an issue.)

> I think you need:
> 
>         launchpad = Launchpad.get_token_and_login(sys.argv[0], 
> EDGE_SERVICE_ROOT, cachedir)
>         credfd = open(credfile, "w")
>         os.chmod(credfile, 0600)
>         launchpad.credentials.save(credfd)
>         credfd.close()
> 
> Python didn't have fchmod until 2.6 so this is a little awkward, but it
> does the job.

Now I have to redeem my embarrassment by suggesting this as a way to avoid
the create/chmod race when fchmod is unavailable:

        credfd = tempfile.NamedTemporaryFile(dir=os.path.dirname(credfile))
        launchpad.credentials.save(credfd)
        os.link(credfd.name, credfile)
        credfd.close()

The link will fail if the target exists, and the close will clean up the
original file.  Wheee  :)

-- 
Kees Cook
Ubuntu Security Team

-- 
ubuntu-devel mailing list
ubuntu-devel@xxxxxxxxxxxxxxxx
Modify settings or unsubscribe at: 
https://lists.ubuntu.com/mailman/listinfo/ubuntu-devel

<Prev in Thread] Current Thread [Next in Thread>