From: Benjamin Peterson Date: Fri, 20 May 2011 16:41:13 +0000 (-0500) Subject: add example for not using access X-Git-Tag: v3.1.4rc1~23 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=249b508c98d99597c170bdb9d6a4b1d56d839ebd;p=thirdparty%2FPython%2Fcpython.git add example for not using access --- diff --git a/Doc/library/os.rst b/Doc/library/os.rst index 3f6d69d1493a..e6bafced8f22 100644 --- a/Doc/library/os.rst +++ b/Doc/library/os.rst @@ -772,7 +772,26 @@ Files and Directories Using :func:`access` to check if a user is authorized to e.g. open a file before actually doing so using :func:`open` creates a security hole, because the user might exploit the short time interval between checking - and opening the file to manipulate it. + and opening the file to manipulate it. It's preferable to use :term:`EAFP` + techniques. For example:: + + if os.access("myfile", os.R_OK): + with open("myfile") as fp: + return fp.read() + return "some default data" + + is better written as:: + + try: + fp = open("myfile") + except OSError as e: + if e.errno == errno.EACCESS: + return "some default data" + # Not a permission error. + raise + else: + with fp: + return fp.read() .. note::