Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
C
cpython
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
cpython
Commits
60419a7e
Commit
60419a7e
authored
Jun 24, 2019
by
Steve Dower
Committed by
GitHub
Jun 24, 2019
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
bpo-37363: Add audit events for a range of modules (GH-14301)
parent
9bbf4d70
Changes
37
Hide whitespace changes
Inline
Side-by-side
Showing
37 changed files
with
165 additions
and
18 deletions
+165
-18
Doc/library/ctypes.rst
Doc/library/ctypes.rst
+1
-1
Doc/library/ensurepip.rst
Doc/library/ensurepip.rst
+2
-0
Doc/library/ftplib.rst
Doc/library/ftplib.rst
+6
-0
Doc/library/functions.rst
Doc/library/functions.rst
+8
-6
Doc/library/glob.rst
Doc/library/glob.rst
+4
-0
Doc/library/imaplib.rst
Doc/library/imaplib.rst
+4
-0
Doc/library/io.rst
Doc/library/io.rst
+1
-1
Doc/library/nntplib.rst
Doc/library/nntplib.rst
+11
-0
Doc/library/os.rst
Doc/library/os.rst
+4
-0
Doc/library/pdb.rst
Doc/library/pdb.rst
+2
-0
Doc/library/poplib.rst
Doc/library/poplib.rst
+12
-0
Doc/library/shutil.rst
Doc/library/shutil.rst
+6
-0
Doc/library/smtplib.rst
Doc/library/smtplib.rst
+6
-0
Doc/library/sqlite3.rst
Doc/library/sqlite3.rst
+2
-0
Doc/library/subprocess.rst
Doc/library/subprocess.rst
+7
-0
Doc/library/telnetlib.rst
Doc/library/telnetlib.rst
+4
-0
Doc/library/tempfile.rst
Doc/library/tempfile.rst
+10
-0
Doc/library/urllib.request.rst
Doc/library/urllib.request.rst
+1
-1
Doc/library/webbrowser.rst
Doc/library/webbrowser.rst
+2
-0
Doc/tools/extensions/suspicious.py
Doc/tools/extensions/suspicious.py
+5
-5
Lib/ensurepip/__init__.py
Lib/ensurepip/__init__.py
+2
-0
Lib/ftplib.py
Lib/ftplib.py
+2
-0
Lib/glob.py
Lib/glob.py
+2
-0
Lib/imaplib.py
Lib/imaplib.py
+2
-0
Lib/nntplib.py
Lib/nntplib.py
+4
-0
Lib/pdb.py
Lib/pdb.py
+1
-0
Lib/poplib.py
Lib/poplib.py
+3
-0
Lib/shutil.py
Lib/shutil.py
+3
-0
Lib/smtplib.py
Lib/smtplib.py
+2
-0
Lib/subprocess.py
Lib/subprocess.py
+8
-1
Lib/telnetlib.py
Lib/telnetlib.py
+2
-0
Lib/tempfile.py
Lib/tempfile.py
+4
-1
Lib/webbrowser.py
Lib/webbrowser.py
+9
-2
Misc/NEWS.d/next/Security/2019-06-21-15-58-59.bpo-37363.diouyl.rst
....d/next/Security/2019-06-21-15-58-59.bpo-37363.diouyl.rst
+5
-0
Modules/_sqlite/module.c
Modules/_sqlite/module.c
+4
-0
Modules/posixmodule.c
Modules/posixmodule.c
+9
-0
Python/bltinmodule.c
Python/bltinmodule.c
+5
-0
No files found.
Doc/library/ctypes.rst
View file @
60419a7e
...
@@ -2046,7 +2046,7 @@ Data types
...
@@ -2046,7 +2046,7 @@ Data types
.. audit-event:: ctypes.cdata address
.. audit-event:: ctypes.cdata address
This method, and others that indirectly call this method, raises an
This method, and others that indirectly call this method, raises an
:
func:`auditing event <sys.audit
>` ``ctypes.cdata`` with argument
:
ref:`auditing event <auditing
>` ``ctypes.cdata`` with argument
``address``.
``address``.
.. method:: from_param(obj)
.. method:: from_param(obj)
...
...
Doc/library/ensurepip.rst
View file @
60419a7e
...
@@ -119,6 +119,8 @@ Module API
...
@@ -119,6 +119,8 @@ Module API
*verbosity* controls the level of output to :data:`sys.stdout` from the
*verbosity* controls the level of output to :data:`sys.stdout` from the
bootstrapping operation.
bootstrapping operation.
.. audit-event:: ensurepip.bootstrap root
.. note::
.. note::
The bootstrapping process has side effects on both ``sys.path`` and
The bootstrapping process has side effects on both ``sys.path`` and
...
...
Doc/library/ftplib.rst
View file @
60419a7e
...
@@ -190,6 +190,8 @@ followed by ``lines`` for the text version or ``binary`` for the binary version.
...
@@ -190,6 +190,8 @@ followed by ``lines`` for the text version or ``binary`` for the binary version.
*source_address* is a 2-tuple ``(host, port)`` for the socket to bind to as
*source_address* is a 2-tuple ``(host, port)`` for the socket to bind to as
its source address before connecting.
its source address before connecting.
.. audit-event:: ftplib.FTP.connect "self host port"
.. versionchanged:: 3.3
.. versionchanged:: 3.3
*source_address* parameter was added.
*source_address* parameter was added.
...
@@ -223,6 +225,8 @@ followed by ``lines`` for the text version or ``binary`` for the binary version.
...
@@ -223,6 +225,8 @@ followed by ``lines`` for the text version or ``binary`` for the binary version.
Send a simple command string to the server and return the response string.
Send a simple command string to the server and return the response string.
.. audit-event:: ftplib.FTP.sendcmd "self cmd"
.. method:: FTP.voidcmd(cmd)
.. method:: FTP.voidcmd(cmd)
...
@@ -230,6 +234,8 @@ followed by ``lines`` for the text version or ``binary`` for the binary version.
...
@@ -230,6 +234,8 @@ followed by ``lines`` for the text version or ``binary`` for the binary version.
nothing if a response code corresponding to success (codes in the range
nothing if a response code corresponding to success (codes in the range
200--299) is received. Raise :exc:`error_reply` otherwise.
200--299) is received. Raise :exc:`error_reply` otherwise.
.. audit-event:: ftplib.FTP.sendcmd "self cmd"
.. method:: FTP.retrbinary(cmd, callback, blocksize=8192, rest=None)
.. method:: FTP.retrbinary(cmd, callback, blocksize=8192, rest=None)
...
...
Doc/library/functions.rst
View file @
60419a7e
...
@@ -128,6 +128,8 @@ are always available. They are listed here in alphabetical order.
...
@@ -128,6 +128,8 @@ are always available. They are listed here in alphabetical order.
:func:`breakpoint` will automatically call that, allowing you to drop into
:func:`breakpoint` will automatically call that, allowing you to drop into
the debugger of choice.
the debugger of choice.
.. audit-event:: builtins.breakpoint "sys.breakpointhook"
.. versionadded:: 3.7
.. versionadded:: 3.7
.. _func-bytearray:
.. _func-bytearray:
...
@@ -277,7 +279,7 @@ are always available. They are listed here in alphabetical order.
...
@@ -277,7 +279,7 @@ are always available. They are listed here in alphabetical order.
.. audit-event:: compile "source filename"
.. audit-event:: compile "source filename"
Raises an :
func:`auditing event <sys.audit
>` ``compile`` with arguments
Raises an :
ref:`auditing event <auditing
>` ``compile`` with arguments
``source`` and ``filename``. This event may also be raised by implicit
``source`` and ``filename``. This event may also be raised by implicit
compilation.
compilation.
...
@@ -490,8 +492,8 @@ are always available. They are listed here in alphabetical order.
...
@@ -490,8 +492,8 @@ are always available. They are listed here in alphabetical order.
.. audit-event:: exec code_object
.. audit-event:: exec code_object
Raises an :
func:`auditing event <sys.audit>` ``exec`` with the code object as
Raises an :
ref:`auditing event <auditing>` ``exec`` with the code object
the argument. Code compilation events may also be raised.
as
the argument. Code compilation events may also be raised.
.. index:: builtin: exec
.. index:: builtin: exec
...
@@ -525,8 +527,8 @@ are always available. They are listed here in alphabetical order.
...
@@ -525,8 +527,8 @@ are always available. They are listed here in alphabetical order.
.. audit-event:: exec code_object
.. audit-event:: exec code_object
Raises an :
func:`auditing event <sys.audit>` ``exec`` with the code object as
Raises an :
ref:`auditing event <auditing>` ``exec`` with the code object
the argument. Code compilation events may also be raised.
as
the argument. Code compilation events may also be raised.
.. note::
.. note::
...
@@ -779,7 +781,7 @@ are always available. They are listed here in alphabetical order.
...
@@ -779,7 +781,7 @@ are always available. They are listed here in alphabetical order.
.. audit-event:: builtins.input prompt
.. audit-event:: builtins.input prompt
Raises an :
func:`auditing event <sys.audit
>` ``builtins.input`` with
Raises an :
ref:`auditing event <auditing
>` ``builtins.input`` with
argument ``prompt`` before reading input
argument ``prompt`` before reading input
.. audit-event:: builtins.input/result result
.. audit-event:: builtins.input/result result
...
...
Doc/library/glob.rst
View file @
60419a7e
...
@@ -52,6 +52,8 @@ For example, ``'[?]'`` matches the character ``'?'``.
...
@@ -52,6 +52,8 @@ For example, ``'[?]'`` matches the character ``'?'``.
more directories and subdirectories. If the pattern is followed by an
more directories and subdirectories. If the pattern is followed by an
``os.sep``, only directories and subdirectories match.
``os.sep``, only directories and subdirectories match.
.. audit-event:: glob.glob "pathname recursive"
.. note::
.. note::
Using the "``**``" pattern in large directory trees may consume
Using the "``**``" pattern in large directory trees may consume
an inordinate amount of time.
an inordinate amount of time.
...
@@ -65,6 +67,8 @@ For example, ``'[?]'`` matches the character ``'?'``.
...
@@ -65,6 +67,8 @@ For example, ``'[?]'`` matches the character ``'?'``.
Return an :term:`iterator` which yields the same values as :func:`glob`
Return an :term:`iterator` which yields the same values as :func:`glob`
without actually storing them all simultaneously.
without actually storing them all simultaneously.
.. audit-event:: glob.glob "pathname recursive"
.. function:: escape(pathname)
.. function:: escape(pathname)
...
...
Doc/library/imaplib.rst
View file @
60419a7e
...
@@ -361,6 +361,8 @@ An :class:`IMAP4` instance has the following methods:
...
@@ -361,6 +361,8 @@ An :class:`IMAP4` instance has the following methods:
:meth:`IMAP4.send`, and :meth:`IMAP4.shutdown` methods. You may override
:meth:`IMAP4.send`, and :meth:`IMAP4.shutdown` methods. You may override
this method.
this method.
.. audit-event:: imaplib.IMAP4.open "self host port"
.. method:: IMAP4.partial(message_num, message_part, start, length)
.. method:: IMAP4.partial(message_num, message_part, start, length)
...
@@ -430,6 +432,8 @@ An :class:`IMAP4` instance has the following methods:
...
@@ -430,6 +432,8 @@ An :class:`IMAP4` instance has the following methods:
Sends ``data`` to the remote server. You may override this method.
Sends ``data`` to the remote server. You may override this method.
.. audit-event:: imaplib.IMAP4.send "self data"
.. method:: IMAP4.setacl(mailbox, who, what)
.. method:: IMAP4.setacl(mailbox, who, what)
...
...
Doc/library/io.rst
View file @
60419a7e
...
@@ -122,7 +122,7 @@ High-level Module Interface
...
@@ -122,7 +122,7 @@ High-level Module Interface
.. audit-event:: open "path mode flags"
.. audit-event:: open "path mode flags"
This function raises an :
func:`auditing event <sys.audit
>` ``open`` with
This function raises an :
ref:`auditing event <auditing
>` ``open`` with
arguments ``path``, ``mode`` and ``flags``. The ``mode`` and ``flags``
arguments ``path``, ``mode`` and ``flags``. The ``mode`` and ``flags``
arguments may have been modified or inferred from the original call.
arguments may have been modified or inferred from the original call.
...
...
Doc/library/nntplib.rst
View file @
60419a7e
...
@@ -79,6 +79,11 @@ The module itself defines the following classes:
...
@@ -79,6 +79,11 @@ The module itself defines the following classes:
('211 1755 1 1755 gmane.comp.python.committers', 1755, 1, 1755, 'gmane.comp.python.committers')
('211 1755 1 1755 gmane.comp.python.committers', 1755, 1, 1755, 'gmane.comp.python.committers')
>>>
>>>
.. audit-event:: nntplib.NNTP "self host port"
All commands will raise an :ref:`auditing event <auditing>`
``nntplib.NNTP.putline`` with arguments ``self`` and ``line``,
where ``line`` is the bytes about to be sent to the remote host.
.. versionchanged:: 3.2
.. versionchanged:: 3.2
*usenetrc* is now ``False`` by default.
*usenetrc* is now ``False`` by default.
...
@@ -100,6 +105,12 @@ The module itself defines the following classes:
...
@@ -100,6 +105,12 @@ The module itself defines the following classes:
STARTTLS as described below. However, some servers only support the
STARTTLS as described below. However, some servers only support the
former.
former.
.. audit-event:: nntplib.NNTP "self host port"
All commands will raise an :ref:`auditing event <auditing>`
``nntplib.NNTP.putline`` with arguments ``self`` and ``line``,
where ``line`` is the bytes about to be sent to the remote host.
.. versionadded:: 3.2
.. versionadded:: 3.2
.. versionchanged:: 3.4
.. versionchanged:: 3.4
...
...
Doc/library/os.rst
View file @
60419a7e
...
@@ -1801,6 +1801,8 @@ features:
...
@@ -1801,6 +1801,8 @@ features:
This function can also support :ref:`specifying a file descriptor
This function can also support :ref:`specifying a file descriptor
<path_fd>`; the file descriptor must refer to a directory.
<path_fd>`; the file descriptor must refer to a directory.
.. audit-event:: os.listdir path
.. note::
.. note::
To encode ``str`` filenames to ``bytes``, use :func:`~os.fsencode`.
To encode ``str`` filenames to ``bytes``, use :func:`~os.fsencode`.
...
@@ -2178,6 +2180,8 @@ features:
...
@@ -2178,6 +2180,8 @@ features:
This function can also support :ref:`specifying a file descriptor
This function can also support :ref:`specifying a file descriptor
<path_fd>`; the file descriptor must refer to a directory.
<path_fd>`; the file descriptor must refer to a directory.
.. audit-event:: os.scandir path
The :func:`scandir` iterator supports the :term:`context manager` protocol
The :func:`scandir` iterator supports the :term:`context manager` protocol
and has the following method:
and has the following method:
...
...
Doc/library/pdb.rst
View file @
60419a7e
...
@@ -181,6 +181,8 @@ access further features, you have to do this yourself:
...
@@ -181,6 +181,8 @@ access further features, you have to do this yourself:
import pdb; pdb.Pdb(skip=['django.*']).set_trace()
import pdb; pdb.Pdb(skip=['django.*']).set_trace()
.. audit-event:: pdb.Pdb
.. versionadded:: 3.1
.. versionadded:: 3.1
The *skip* argument.
The *skip* argument.
...
...
Doc/library/poplib.rst
View file @
60419a7e
...
@@ -39,6 +39,12 @@ The :mod:`poplib` module provides two classes:
...
@@ -39,6 +39,12 @@ The :mod:`poplib` module provides two classes:
connection attempt (if not specified, the global default timeout setting will
connection attempt (if not specified, the global default timeout setting will
be used).
be used).
.. audit-event:: poplib.POP3 "self host port"
All commands will raise an :ref:`auditing event <auditing>`
``poplib.POP3.putline`` with arguments ``self`` and ``line``,
where ``line`` is the bytes about to be sent to the remote host.
.. class:: POP3_SSL(host, port=POP3_SSL_PORT, keyfile=None, certfile=None, timeout=None, context=None)
.. class:: POP3_SSL(host, port=POP3_SSL_PORT, keyfile=None, certfile=None, timeout=None, context=None)
...
@@ -54,6 +60,12 @@ The :mod:`poplib` module provides two classes:
...
@@ -54,6 +60,12 @@ The :mod:`poplib` module provides two classes:
point to PEM-formatted private key and certificate chain files,
point to PEM-formatted private key and certificate chain files,
respectively, for the SSL connection.
respectively, for the SSL connection.
.. audit-event:: poplib.POP3 "self host port"
All commands will raise an :ref:`auditing event <auditing>`
``poplib.POP3.putline`` with arguments ``self`` and ``line``,
where ``line`` is the bytes about to be sent to the remote host.
.. versionchanged:: 3.2
.. versionchanged:: 3.2
*context* parameter added.
*context* parameter added.
...
...
Doc/library/shutil.rst
View file @
60419a7e
...
@@ -249,6 +249,8 @@ Directory and files operations
...
@@ -249,6 +249,8 @@ Directory and files operations
as arguments. By default, :func:`~shutil.copy2` is used, but any function
as arguments. By default, :func:`~shutil.copy2` is used, but any function
that supports the same signature (like :func:`~shutil.copy`) can be used.
that supports the same signature (like :func:`~shutil.copy`) can be used.
.. audit-event:: shutil.copytree "src dst"
.. versionchanged:: 3.3
.. versionchanged:: 3.3
Copy metadata when *symlinks* is false.
Copy metadata when *symlinks* is false.
Now returns *dst*.
Now returns *dst*.
...
@@ -296,6 +298,8 @@ Directory and files operations
...
@@ -296,6 +298,8 @@ Directory and files operations
*excinfo*, will be the exception information returned by
*excinfo*, will be the exception information returned by
:func:`sys.exc_info`. Exceptions raised by *onerror* will not be caught.
:func:`sys.exc_info`. Exceptions raised by *onerror* will not be caught.
.. audit-event:: shutil.rmtree path
.. versionchanged:: 3.3
.. versionchanged:: 3.3
Added a symlink attack resistant version that is used automatically
Added a symlink attack resistant version that is used automatically
if platform supports fd-based functions.
if platform supports fd-based functions.
...
@@ -558,6 +562,8 @@ provided. They rely on the :mod:`zipfile` and :mod:`tarfile` modules.
...
@@ -558,6 +562,8 @@ provided. They rely on the :mod:`zipfile` and :mod:`tarfile` modules.
The *verbose* argument is unused and deprecated.
The *verbose* argument is unused and deprecated.
.. audit-event:: shutil.make_archive "base_name format root_dir base_dir"
.. versionchanged:: 3.8
.. versionchanged:: 3.8
The modern pax (POSIX.1-2001) format is now used instead of
The modern pax (POSIX.1-2001) format is now used instead of
the legacy GNU format for archives created with ``format="tar"``.
the legacy GNU format for archives created with ``format="tar"``.
...
...
Doc/library/smtplib.rst
View file @
60419a7e
...
@@ -55,6 +55,10 @@ Protocol) and :rfc:`1869` (SMTP Service Extensions).
...
@@ -55,6 +55,10 @@ Protocol) and :rfc:`1869` (SMTP Service Extensions).
(250, b'Ok')
(250, b'Ok')
>>>
>>>
All commands will raise an :ref:`auditing event <auditing>`
``smtplib.SMTP.send`` with arguments ``self`` and ``data``,
where ``data`` is the bytes about to be sent to the remote host.
.. versionchanged:: 3.3
.. versionchanged:: 3.3
Support for the :keyword:`with` statement was added.
Support for the :keyword:`with` statement was added.
...
@@ -242,6 +246,8 @@ An :class:`SMTP` instance has the following methods:
...
@@ -242,6 +246,8 @@ An :class:`SMTP` instance has the following methods:
2-tuple of the response code and message sent by the server in its
2-tuple of the response code and message sent by the server in its
connection response.
connection response.
.. audit-event:: smtplib.SMTP.connect "self host port"
.. method:: SMTP.helo(name='')
.. method:: SMTP.helo(name='')
...
...
Doc/library/sqlite3.rst
View file @
60419a7e
...
@@ -224,6 +224,8 @@ Module functions and constants
...
@@ -224,6 +224,8 @@ Module functions and constants
More information about this feature, including a list of recognized options, can
More information about this feature, including a list of recognized options, can
be found in the `SQLite URI documentation <https://www.sqlite.org/uri.html>`_.
be found in the `SQLite URI documentation <https://www.sqlite.org/uri.html>`_.
.. audit-event:: sqlite3.connect "database"
.. versionchanged:: 3.4
.. versionchanged:: 3.4
Added the *uri* parameter.
Added the *uri* parameter.
...
...
Doc/library/subprocess.rst
View file @
60419a7e
...
@@ -585,6 +585,13 @@ functions.
...
@@ -585,6 +585,13 @@ functions.
with Popen(["ifconfig"], stdout=PIPE) as proc:
with Popen(["ifconfig"], stdout=PIPE) as proc:
log.write(proc.stdout.read())
log.write(proc.stdout.read())
.. audit-event:: subprocess.Popen "executable args cwd env"
Popen and the other functions in this module that use it raise an
:ref:`auditing event <auditing>` ``subprocess.Popen`` with arguments
``executable``, ``args``, ``cwd``, ``env``. The value for ``args``
may be a single string or a list of strings, depending on platform.
.. versionchanged:: 3.2
.. versionchanged:: 3.2
Added context manager support.
Added context manager support.
...
...
Doc/library/telnetlib.rst
View file @
60419a7e
...
@@ -141,6 +141,8 @@ Telnet Objects
...
@@ -141,6 +141,8 @@ Telnet Objects
Do not try to reopen an already connected instance.
Do not try to reopen an already connected instance.
.. audit-event:: telnetlib.Telnet.open "self host port"
.. method:: Telnet.msg(msg, *args)
.. method:: Telnet.msg(msg, *args)
...
@@ -176,6 +178,8 @@ Telnet Objects
...
@@ -176,6 +178,8 @@ Telnet Objects
block if the connection is blocked. May raise :exc:`OSError` if the
block if the connection is blocked. May raise :exc:`OSError` if the
connection is closed.
connection is closed.
.. audit-event:: telnetlib.Telnet.write "self buffer"
.. versionchanged:: 3.3
.. versionchanged:: 3.3
This method used to raise :exc:`socket.error`, which is now an alias
This method used to raise :exc:`socket.error`, which is now an alias
of :exc:`OSError`.
of :exc:`OSError`.
...
...
Doc/library/tempfile.rst
View file @
60419a7e
...
@@ -62,6 +62,8 @@ The module defines the following user-callable items:
...
@@ -62,6 +62,8 @@ The module defines the following user-callable items:
The :py:data:`os.O_TMPFILE` flag is used if it is available and works
The :py:data:`os.O_TMPFILE` flag is used if it is available and works
(Linux-specific, requires Linux kernel 3.11 or later).
(Linux-specific, requires Linux kernel 3.11 or later).
.. audit-event:: tempfile.mkstemp "full-path"
.. versionchanged:: 3.5
.. versionchanged:: 3.5
The :py:data:`os.O_TMPFILE` flag is now used if available.
The :py:data:`os.O_TMPFILE` flag is now used if available.
...
@@ -85,6 +87,8 @@ The module defines the following user-callable items:
...
@@ -85,6 +87,8 @@ The module defines the following user-callable items:
attribute is the underlying true file object. This file-like object can
attribute is the underlying true file object. This file-like object can
be used in a :keyword:`with` statement, just like a normal file.
be used in a :keyword:`with` statement, just like a normal file.
.. audit-event:: tempfile.mkstemp "full-path"
.. versionchanged:: 3.8
.. versionchanged:: 3.8
Added *errors* parameter.
Added *errors* parameter.
...
@@ -130,6 +134,8 @@ The module defines the following user-callable items:
...
@@ -130,6 +134,8 @@ The module defines the following user-callable items:
The directory can be explicitly cleaned up by calling the
The directory can be explicitly cleaned up by calling the
:func:`cleanup` method.
:func:`cleanup` method.
.. audit-event:: tempfile.mkdtemp "full-path"
.. versionadded:: 3.2
.. versionadded:: 3.2
...
@@ -177,6 +183,8 @@ The module defines the following user-callable items:
...
@@ -177,6 +183,8 @@ The module defines the following user-callable items:
file (as would be returned by :func:`os.open`) and the absolute pathname
file (as would be returned by :func:`os.open`) and the absolute pathname
of that file, in that order.
of that file, in that order.
.. audit-event:: tempfile.mkstemp "full-path"
.. versionchanged:: 3.5
.. versionchanged:: 3.5
*suffix*, *prefix*, and *dir* may now be supplied in bytes in order to
*suffix*, *prefix*, and *dir* may now be supplied in bytes in order to
obtain a bytes return value. Prior to this, only str was allowed.
obtain a bytes return value. Prior to this, only str was allowed.
...
@@ -198,6 +206,8 @@ The module defines the following user-callable items:
...
@@ -198,6 +206,8 @@ The module defines the following user-callable items:
:func:`mkdtemp` returns the absolute pathname of the new directory.
:func:`mkdtemp` returns the absolute pathname of the new directory.
.. audit-event:: tempfile.mkdtemp "full-path"
.. versionchanged:: 3.5
.. versionchanged:: 3.5
*suffix*, *prefix*, and *dir* may now be supplied in bytes in order to
*suffix*, *prefix*, and *dir* may now be supplied in bytes in order to
obtain a bytes return value. Prior to this, only str was allowed.
obtain a bytes return value. Prior to this, only str was allowed.
...
...
Doc/library/urllib.request.rst
View file @
60419a7e
...
@@ -97,7 +97,7 @@ The :mod:`urllib.request` module defines the following functions:
...
@@ -97,7 +97,7 @@ The :mod:`urllib.request` module defines the following functions:
.. audit-event:: urllib.Request "fullurl data headers method"
.. audit-event:: urllib.Request "fullurl data headers method"
The default opener raises an :
func:`auditing event
<sys
.
audit
>
`
The default opener raises an :
ref:`auditing event
<auditing
>
`
``urllib.Request`` with arguments ``fullurl``, ``data``, ``headers``,
``urllib.Request`` with arguments ``fullurl``, ``data``, ``headers``,
``method`` taken from the request object.
``method`` taken from the request object.
...
...
Doc/library/webbrowser.rst
View file @
60419a7e
...
@@ -64,6 +64,8 @@ The following functions are defined:
...
@@ -64,6 +64,8 @@ The following functions are defined:
may work and start the operating system's associated program. However, this
may work and start the operating system's associated program. However, this
is neither supported nor portable.
is neither supported nor portable.
.. audit-event:: webbrowser.open "url"
.. function:: open_new(url)
.. function:: open_new(url)
...
...
Doc/tools/extensions/suspicious.py
View file @
60419a7e
...
@@ -115,8 +115,8 @@ class CheckSuspiciousMarkupBuilder(Builder):
...
@@ -115,8 +115,8 @@ class CheckSuspiciousMarkupBuilder(Builder):
def
finish
(
self
):
def
finish
(
self
):
unused_rules
=
[
rule
for
rule
in
self
.
rules
if
not
rule
.
used
]
unused_rules
=
[
rule
for
rule
in
self
.
rules
if
not
rule
.
used
]
if
unused_rules
:
if
unused_rules
:
self
.
warn
(
'Found %s/%s unused rules:'
%
self
.
logger
.
warn
(
'Found %s/%s unused rules:'
%
(
len
(
unused_rules
),
len
(
self
.
rules
)))
(
len
(
unused_rules
),
len
(
self
.
rules
)))
for
rule
in
unused_rules
:
for
rule
in
unused_rules
:
self
.
logger
.
info
(
repr
(
rule
))
self
.
logger
.
info
(
repr
(
rule
))
return
return
...
@@ -151,10 +151,10 @@ class CheckSuspiciousMarkupBuilder(Builder):
...
@@ -151,10 +151,10 @@ class CheckSuspiciousMarkupBuilder(Builder):
self
.
any_issue
=
True
self
.
any_issue
=
True
self
.
write_log_entry
(
lineno
,
issue
,
text
)
self
.
write_log_entry
(
lineno
,
issue
,
text
)
if
py3
:
if
py3
:
self
.
warn
(
'[%s:%d] "%s" found in "%-.120s"'
%
self
.
logger
.
warn
(
'[%s:%d] "%s" found in "%-.120s"'
%
(
self
.
docname
,
lineno
,
issue
,
text
))
(
self
.
docname
,
lineno
,
issue
,
text
))
else
:
else
:
self
.
warn
(
'[%s:%d] "%s" found in "%-.120s"'
%
(
self
.
logger
.
warn
(
'[%s:%d] "%s" found in "%-.120s"'
%
(
self
.
docname
.
encode
(
sys
.
getdefaultencoding
(),
'replace'
),
self
.
docname
.
encode
(
sys
.
getdefaultencoding
(),
'replace'
),
lineno
,
lineno
,
issue
.
encode
(
sys
.
getdefaultencoding
(),
'replace'
),
issue
.
encode
(
sys
.
getdefaultencoding
(),
'replace'
),
...
...
Lib/ensurepip/__init__.py
View file @
60419a7e
...
@@ -73,6 +73,8 @@ def _bootstrap(*, root=None, upgrade=False, user=False,
...
@@ -73,6 +73,8 @@ def _bootstrap(*, root=None, upgrade=False, user=False,
if
altinstall
and
default_pip
:
if
altinstall
and
default_pip
:
raise
ValueError
(
"Cannot use altinstall and default_pip together"
)
raise
ValueError
(
"Cannot use altinstall and default_pip together"
)
sys
.
audit
(
"ensurepip.bootstrap"
,
root
)
_disable_pip_configuration_settings
()
_disable_pip_configuration_settings
()
# By default, installing pip and setuptools installs all of the
# By default, installing pip and setuptools installs all of the
...
...
Lib/ftplib.py
View file @
60419a7e
...
@@ -148,6 +148,7 @@ class FTP:
...
@@ -148,6 +148,7 @@ class FTP:
self
.
timeout
=
timeout
self
.
timeout
=
timeout
if
source_address
is
not
None
:
if
source_address
is
not
None
:
self
.
source_address
=
source_address
self
.
source_address
=
source_address
sys
.
audit
(
"ftplib.FTP.connect"
,
self
,
self
.
host
,
self
.
port
)
self
.
sock
=
socket
.
create_connection
((
self
.
host
,
self
.
port
),
self
.
timeout
,
self
.
sock
=
socket
.
create_connection
((
self
.
host
,
self
.
port
),
self
.
timeout
,
source_address
=
self
.
source_address
)
source_address
=
self
.
source_address
)
self
.
af
=
self
.
sock
.
family
self
.
af
=
self
.
sock
.
family
...
@@ -188,6 +189,7 @@ class FTP:
...
@@ -188,6 +189,7 @@ class FTP:
def
putline
(
self
,
line
):
def
putline
(
self
,
line
):
if
'
\
r
'
in
line
or
'
\
n
'
in
line
:
if
'
\
r
'
in
line
or
'
\
n
'
in
line
:
raise
ValueError
(
'an illegal newline character should not be contained'
)
raise
ValueError
(
'an illegal newline character should not be contained'
)
sys
.
audit
(
"ftplib.FTP.sendcmd"
,
self
,
line
)
line
=
line
+
CRLF
line
=
line
+
CRLF
if
self
.
debugging
>
1
:
if
self
.
debugging
>
1
:
print
(
'*put*'
,
self
.
sanitize
(
line
))
print
(
'*put*'
,
self
.
sanitize
(
line
))
...
...
Lib/glob.py
View file @
60419a7e
...
@@ -3,6 +3,7 @@
...
@@ -3,6 +3,7 @@
import
os
import
os
import
re
import
re
import
fnmatch
import
fnmatch
import
sys
__all__
=
[
"glob"
,
"iglob"
,
"escape"
]
__all__
=
[
"glob"
,
"iglob"
,
"escape"
]
...
@@ -37,6 +38,7 @@ def iglob(pathname, *, recursive=False):
...
@@ -37,6 +38,7 @@ def iglob(pathname, *, recursive=False):
return
it
return
it
def
_iglob
(
pathname
,
recursive
,
dironly
):
def
_iglob
(
pathname
,
recursive
,
dironly
):
sys
.
audit
(
"glob.glob"
,
pathname
,
recursive
)
dirname
,
basename
=
os
.
path
.
split
(
pathname
)
dirname
,
basename
=
os
.
path
.
split
(
pathname
)
if
not
has_magic
(
pathname
):
if
not
has_magic
(
pathname
):
assert
not
dironly
assert
not
dironly
...
...
Lib/imaplib.py
View file @
60419a7e
...
@@ -289,6 +289,7 @@ class IMAP4:
...
@@ -289,6 +289,7 @@ class IMAP4:
# (which is used by socket.create_connection()) expects None
# (which is used by socket.create_connection()) expects None
# as a default value for host.
# as a default value for host.
host
=
None
if
not
self
.
host
else
self
.
host
host
=
None
if
not
self
.
host
else
self
.
host
sys
.
audit
(
"imaplib.IMAP4.open"
,
self
,
self
.
host
,
self
.
port
)
return
socket
.
create_connection
((
host
,
self
.
port
))
return
socket
.
create_connection
((
host
,
self
.
port
))
def
open
(
self
,
host
=
''
,
port
=
IMAP4_PORT
):
def
open
(
self
,
host
=
''
,
port
=
IMAP4_PORT
):
...
@@ -318,6 +319,7 @@ class IMAP4:
...
@@ -318,6 +319,7 @@ class IMAP4:
def
send
(
self
,
data
):
def
send
(
self
,
data
):
"""Send data to remote."""
"""Send data to remote."""
sys
.
audit
(
"imaplib.IMAP4.send"
,
self
,
data
)
self
.
sock
.
sendall
(
data
)
self
.
sock
.
sendall
(
data
)
...
...
Lib/nntplib.py
View file @
60419a7e
...
@@ -68,6 +68,7 @@ import socket
...
@@ -68,6 +68,7 @@ import socket
import
collections
import
collections
import
datetime
import
datetime
import
warnings
import
warnings
import
sys
try
:
try
:
import
ssl
import
ssl
...
@@ -413,6 +414,7 @@ class _NNTPBase:
...
@@ -413,6 +414,7 @@ class _NNTPBase:
def
_putline
(
self
,
line
):
def
_putline
(
self
,
line
):
"""Internal: send one line to the server, appending CRLF.
"""Internal: send one line to the server, appending CRLF.
The `line` must be a bytes-like object."""
The `line` must be a bytes-like object."""
sys
.
audit
(
"nntplib.NNTP.putline"
,
self
,
line
)
line
=
line
+
_CRLF
line
=
line
+
_CRLF
if
self
.
debugging
>
1
:
print
(
'*put*'
,
repr
(
line
))
if
self
.
debugging
>
1
:
print
(
'*put*'
,
repr
(
line
))
self
.
file
.
write
(
line
)
self
.
file
.
write
(
line
)
...
@@ -1040,6 +1042,7 @@ class NNTP(_NNTPBase):
...
@@ -1040,6 +1042,7 @@ class NNTP(_NNTPBase):
"""
"""
self
.
host
=
host
self
.
host
=
host
self
.
port
=
port
self
.
port
=
port
sys
.
audit
(
"nntplib.NNTP"
,
self
,
host
,
port
)
self
.
sock
=
socket
.
create_connection
((
host
,
port
),
timeout
)
self
.
sock
=
socket
.
create_connection
((
host
,
port
),
timeout
)
file
=
None
file
=
None
try
:
try
:
...
@@ -1071,6 +1074,7 @@ if _have_ssl:
...
@@ -1071,6 +1074,7 @@ if _have_ssl:
"""This works identically to NNTP.__init__, except for the change
"""This works identically to NNTP.__init__, except for the change
in default port and the `ssl_context` argument for SSL connections.
in default port and the `ssl_context` argument for SSL connections.
"""
"""
sys
.
audit
(
"nntplib.NNTP"
,
self
,
host
,
port
)
self
.
sock
=
socket
.
create_connection
((
host
,
port
),
timeout
)
self
.
sock
=
socket
.
create_connection
((
host
,
port
),
timeout
)
file
=
None
file
=
None
try
:
try
:
...
...
Lib/pdb.py
View file @
60419a7e
...
@@ -141,6 +141,7 @@ class Pdb(bdb.Bdb, cmd.Cmd):
...
@@ -141,6 +141,7 @@ class Pdb(bdb.Bdb, cmd.Cmd):
nosigint
=
False
,
readrc
=
True
):
nosigint
=
False
,
readrc
=
True
):
bdb
.
Bdb
.
__init__
(
self
,
skip
=
skip
)
bdb
.
Bdb
.
__init__
(
self
,
skip
=
skip
)
cmd
.
Cmd
.
__init__
(
self
,
completekey
,
stdin
,
stdout
)
cmd
.
Cmd
.
__init__
(
self
,
completekey
,
stdin
,
stdout
)
sys
.
audit
(
"pdb.Pdb"
)
if
stdout
:
if
stdout
:
self
.
use_rawinput
=
0
self
.
use_rawinput
=
0
self
.
prompt
=
'(Pdb) '
self
.
prompt
=
'(Pdb) '
...
...
Lib/poplib.py
View file @
60419a7e
...
@@ -16,6 +16,7 @@ Based on the J. Myers POP3 draft, Jan. 96
...
@@ -16,6 +16,7 @@ Based on the J. Myers POP3 draft, Jan. 96
import
errno
import
errno
import
re
import
re
import
socket
import
socket
import
sys
try
:
try
:
import
ssl
import
ssl
...
@@ -99,6 +100,7 @@ class POP3:
...
@@ -99,6 +100,7 @@ class POP3:
self
.
host
=
host
self
.
host
=
host
self
.
port
=
port
self
.
port
=
port
self
.
_tls_established
=
False
self
.
_tls_established
=
False
sys
.
audit
(
"poplib.POP3"
,
self
,
host
,
port
)
self
.
sock
=
self
.
_create_socket
(
timeout
)
self
.
sock
=
self
.
_create_socket
(
timeout
)
self
.
file
=
self
.
sock
.
makefile
(
'rb'
)
self
.
file
=
self
.
sock
.
makefile
(
'rb'
)
self
.
_debugging
=
0
self
.
_debugging
=
0
...
@@ -109,6 +111,7 @@ class POP3:
...
@@ -109,6 +111,7 @@ class POP3:
def
_putline
(
self
,
line
):
def
_putline
(
self
,
line
):
if
self
.
_debugging
>
1
:
print
(
'*put*'
,
repr
(
line
))
if
self
.
_debugging
>
1
:
print
(
'*put*'
,
repr
(
line
))
sys
.
audit
(
"poplib.POP3.putline"
,
self
,
line
)
self
.
sock
.
sendall
(
line
+
CRLF
)
self
.
sock
.
sendall
(
line
+
CRLF
)
...
...
Lib/shutil.py
View file @
60419a7e
...
@@ -530,6 +530,7 @@ def copytree(src, dst, symlinks=False, ignore=None, copy_function=copy2,
...
@@ -530,6 +530,7 @@ def copytree(src, dst, symlinks=False, ignore=None, copy_function=copy2,
function that supports the same signature (like copy()) can be used.
function that supports the same signature (like copy()) can be used.
"""
"""
sys
.
audit
(
"shutil.copytree"
,
src
,
dst
)
with
os
.
scandir
(
src
)
as
entries
:
with
os
.
scandir
(
src
)
as
entries
:
return
_copytree
(
entries
=
entries
,
src
=
src
,
dst
=
dst
,
symlinks
=
symlinks
,
return
_copytree
(
entries
=
entries
,
src
=
src
,
dst
=
dst
,
symlinks
=
symlinks
,
ignore
=
ignore
,
copy_function
=
copy_function
,
ignore
=
ignore
,
copy_function
=
copy_function
,
...
@@ -640,6 +641,7 @@ def rmtree(path, ignore_errors=False, onerror=None):
...
@@ -640,6 +641,7 @@ def rmtree(path, ignore_errors=False, onerror=None):
is false and onerror is None, an exception is raised.
is false and onerror is None, an exception is raised.
"""
"""
sys
.
audit
(
"shutil.rmtree"
,
path
)
if
ignore_errors
:
if
ignore_errors
:
def
onerror
(
*
args
):
def
onerror
(
*
args
):
pass
pass
...
@@ -965,6 +967,7 @@ def make_archive(base_name, format, root_dir=None, base_dir=None, verbose=0,
...
@@ -965,6 +967,7 @@ def make_archive(base_name, format, root_dir=None, base_dir=None, verbose=0,
'owner' and 'group' are used when creating a tar archive. By default,
'owner' and 'group' are used when creating a tar archive. By default,
uses the current owner and group.
uses the current owner and group.
"""
"""
sys
.
audit
(
"shutil.make_archive"
,
base_name
,
format
,
root_dir
,
base_dir
)
save_cwd
=
os
.
getcwd
()
save_cwd
=
os
.
getcwd
()
if
root_dir
is
not
None
:
if
root_dir
is
not
None
:
if
logger
is
not
None
:
if
logger
is
not
None
:
...
...
Lib/smtplib.py
View file @
60419a7e
...
@@ -335,6 +335,7 @@ class SMTP:
...
@@ -335,6 +335,7 @@ class SMTP:
port = self.default_port
port = self.default_port
if self.debuglevel > 0:
if self.debuglevel > 0:
self._print_debug('
connect
:
', (host, port))
self._print_debug('
connect
:
', (host, port))
sys.audit("smtplib.SMTP.connect", self, host, port)
self.sock = self._get_socket(host, port, self.timeout)
self.sock = self._get_socket(host, port, self.timeout)
self.file = None
self.file = None
(code, msg) = self.getreply()
(code, msg) = self.getreply()
...
@@ -352,6 +353,7 @@ class SMTP:
...
@@ -352,6 +353,7 @@ class SMTP:
# should not be used, but 'data' needs to convert the string to
# should not be used, but 'data' needs to convert the string to
# binary itself anyway, so that's not a problem.
# binary itself anyway, so that's not a problem.
s = s.encode(self.command_encoding)
s = s.encode(self.command_encoding)
sys.audit("smtplib.SMTP.send", self, s)
try:
try:
self.sock.sendall(s)
self.sock.sendall(s)
except OSError:
except OSError:
...
...
Lib/subprocess.py
View file @
60419a7e
...
@@ -1268,6 +1268,11 @@ class Popen(object):
...
@@ -1268,6 +1268,11 @@ class Popen(object):
comspec
=
os
.
environ
.
get
(
"COMSPEC"
,
"cmd.exe"
)
comspec
=
os
.
environ
.
get
(
"COMSPEC"
,
"cmd.exe"
)
args
=
'{} /c "{}"'
.
format
(
comspec
,
args
)
args
=
'{} /c "{}"'
.
format
(
comspec
,
args
)
if
cwd
is
not
None
:
cwd
=
os
.
fsdecode
(
cwd
)
sys
.
audit
(
"subprocess.Popen"
,
executable
,
args
,
cwd
,
env
)
# Start the process
# Start the process
try
:
try
:
hp
,
ht
,
pid
,
tid
=
_winapi
.
CreateProcess
(
executable
,
args
,
hp
,
ht
,
pid
,
tid
=
_winapi
.
CreateProcess
(
executable
,
args
,
...
@@ -1276,7 +1281,7 @@ class Popen(object):
...
@@ -1276,7 +1281,7 @@ class Popen(object):
int
(
not
close_fds
),
int
(
not
close_fds
),
creationflags
,
creationflags
,
env
,
env
,
os
.
fsdecode
(
cwd
)
if
cwd
is
not
None
else
None
,
cwd
,
startupinfo
)
startupinfo
)
finally
:
finally
:
# Child is launched. Close the parent's copy of those pipe
# Child is launched. Close the parent's copy of those pipe
...
@@ -1543,6 +1548,8 @@ class Popen(object):
...
@@ -1543,6 +1548,8 @@ class Popen(object):
if
executable
is
None
:
if
executable
is
None
:
executable
=
args
[
0
]
executable
=
args
[
0
]
sys
.
audit
(
"subprocess.Popen"
,
executable
,
args
,
cwd
,
env
)
if
(
_USE_POSIX_SPAWN
if
(
_USE_POSIX_SPAWN
and
os
.
path
.
dirname
(
executable
)
and
os
.
path
.
dirname
(
executable
)
and
preexec_fn
is
None
and
preexec_fn
is
None
...
...
Lib/telnetlib.py
View file @
60419a7e
...
@@ -231,6 +231,7 @@ class Telnet:
...
@@ -231,6 +231,7 @@ class Telnet:
self
.
host
=
host
self
.
host
=
host
self
.
port
=
port
self
.
port
=
port
self
.
timeout
=
timeout
self
.
timeout
=
timeout
sys
.
audit
(
"telnetlib.Telnet.open"
,
self
,
host
,
port
)
self
.
sock
=
socket
.
create_connection
((
host
,
port
),
timeout
)
self
.
sock
=
socket
.
create_connection
((
host
,
port
),
timeout
)
def
__del__
(
self
):
def
__del__
(
self
):
...
@@ -286,6 +287,7 @@ class Telnet:
...
@@ -286,6 +287,7 @@ class Telnet:
"""
"""
if
IAC
in
buffer
:
if
IAC
in
buffer
:
buffer
=
buffer
.
replace
(
IAC
,
IAC
+
IAC
)
buffer
=
buffer
.
replace
(
IAC
,
IAC
+
IAC
)
sys
.
audit
(
"telnetlib.Telnet.write"
,
self
,
buffer
)
self
.
msg
(
"send %r"
,
buffer
)
self
.
msg
(
"send %r"
,
buffer
)
self
.
sock
.
sendall
(
buffer
)
self
.
sock
.
sendall
(
buffer
)
...
...
Lib/tempfile.py
View file @
60419a7e
...
@@ -43,6 +43,7 @@ import os as _os
...
@@ -43,6 +43,7 @@ import os as _os
import
shutil
as
_shutil
import
shutil
as
_shutil
import
errno
as
_errno
import
errno
as
_errno
from
random
import
Random
as
_Random
from
random
import
Random
as
_Random
import
sys
as
_sys
import
weakref
as
_weakref
import
weakref
as
_weakref
import
_thread
import
_thread
_allocate_lock
=
_thread
.
allocate_lock
_allocate_lock
=
_thread
.
allocate_lock
...
@@ -244,6 +245,7 @@ def _mkstemp_inner(dir, pre, suf, flags, output_type):
...
@@ -244,6 +245,7 @@ def _mkstemp_inner(dir, pre, suf, flags, output_type):
for seq in range(TMP_MAX):
for seq in range(TMP_MAX):
name = next(names)
name = next(names)
file = _os.path.join(dir, pre + name + suf)
file = _os.path.join(dir, pre + name + suf)
_sys.audit("tempfile.mkstemp", file)
try:
try:
fd = _os.open(file, flags, 0o600)
fd = _os.open(file, flags, 0o600)
except FileExistsError:
except FileExistsError:
...
@@ -352,6 +354,7 @@ def mkdtemp(suffix=None, prefix=None, dir=None):
...
@@ -352,6 +354,7 @@ def mkdtemp(suffix=None, prefix=None, dir=None):
for seq in range(TMP_MAX):
for seq in range(TMP_MAX):
name = next(names)
name = next(names)
file = _os.path.join(dir, prefix + name + suffix)
file = _os.path.join(dir, prefix + name + suffix)
_sys.audit("tempfile.mkdtemp", file)
try:
try:
_os.mkdir(file, 0o700)
_os.mkdir(file, 0o700)
except FileExistsError:
except FileExistsError:
...
@@ -546,7 +549,7 @@ def NamedTemporaryFile(mode='w+b', buffering=-1, encoding=None,
...
@@ -546,7 +549,7 @@ def NamedTemporaryFile(mode='w+b', buffering=-1, encoding=None,
_os.close(fd)
_os.close(fd)
raise
raise
if _os.name != 'posix' or _
os.
sys.platform == 'cygwin':
if _os.name != 'posix' or _sys.platform == 'cygwin':
# On non-POSIX and Cygwin systems, assume that we cannot unlink a file
# On non-POSIX and Cygwin systems, assume that we cannot unlink a file
# while it is open.
# while it is open.
TemporaryFile = NamedTemporaryFile
TemporaryFile = NamedTemporaryFile
...
...
Lib/webbrowser.py
View file @
60419a7e
...
@@ -154,6 +154,7 @@ class GenericBrowser(BaseBrowser):
...
@@ -154,6 +154,7 @@ class GenericBrowser(BaseBrowser):
self
.
basename
=
os
.
path
.
basename
(
self
.
name
)
self
.
basename
=
os
.
path
.
basename
(
self
.
name
)
def
open
(
self
,
url
,
new
=
0
,
autoraise
=
True
):
def
open
(
self
,
url
,
new
=
0
,
autoraise
=
True
):
sys
.
audit
(
"webbrowser.open"
,
url
)
cmdline
=
[
self
.
name
]
+
[
arg
.
replace
(
"%s"
,
url
)
cmdline
=
[
self
.
name
]
+
[
arg
.
replace
(
"%s"
,
url
)
for
arg
in
self
.
args
]
for
arg
in
self
.
args
]
try
:
try
:
...
@@ -173,6 +174,7 @@ class BackgroundBrowser(GenericBrowser):
...
@@ -173,6 +174,7 @@ class BackgroundBrowser(GenericBrowser):
def
open
(
self
,
url
,
new
=
0
,
autoraise
=
True
):
def
open
(
self
,
url
,
new
=
0
,
autoraise
=
True
):
cmdline
=
[
self
.
name
]
+
[
arg
.
replace
(
"%s"
,
url
)
cmdline
=
[
self
.
name
]
+
[
arg
.
replace
(
"%s"
,
url
)
for
arg
in
self
.
args
]
for
arg
in
self
.
args
]
sys
.
audit
(
"webbrowser.open"
,
url
)
try
:
try
:
if
sys
.
platform
[:
3
]
==
'win'
:
if
sys
.
platform
[:
3
]
==
'win'
:
p
=
subprocess
.
Popen
(
cmdline
)
p
=
subprocess
.
Popen
(
cmdline
)
...
@@ -201,7 +203,7 @@ class UnixBrowser(BaseBrowser):
...
@@ -201,7 +203,7 @@ class UnixBrowser(BaseBrowser):
remote_action_newwin
=
None
remote_action_newwin
=
None
remote_action_newtab
=
None
remote_action_newtab
=
None
def
_invoke
(
self
,
args
,
remote
,
autoraise
):
def
_invoke
(
self
,
args
,
remote
,
autoraise
,
url
=
None
):
raise_opt
=
[]
raise_opt
=
[]
if
remote
and
self
.
raise_opts
:
if
remote
and
self
.
raise_opts
:
# use autoraise argument only for remote invocation
# use autoraise argument only for remote invocation
...
@@ -237,6 +239,7 @@ class UnixBrowser(BaseBrowser):
...
@@ -237,6 +239,7 @@ class UnixBrowser(BaseBrowser):
return
not
p
.
wait
()
return
not
p
.
wait
()
def
open
(
self
,
url
,
new
=
0
,
autoraise
=
True
):
def
open
(
self
,
url
,
new
=
0
,
autoraise
=
True
):
sys
.
audit
(
"webbrowser.open"
,
url
)
if
new
==
0
:
if
new
==
0
:
action
=
self
.
remote_action
action
=
self
.
remote_action
elif
new
==
1
:
elif
new
==
1
:
...
@@ -253,7 +256,7 @@ class UnixBrowser(BaseBrowser):
...
@@ -253,7 +256,7 @@ class UnixBrowser(BaseBrowser):
args
=
[
arg
.
replace
(
"%s"
,
url
).
replace
(
"%action"
,
action
)
args
=
[
arg
.
replace
(
"%s"
,
url
).
replace
(
"%action"
,
action
)
for
arg
in
self
.
remote_args
]
for
arg
in
self
.
remote_args
]
args
=
[
arg
for
arg
in
args
if
arg
]
args
=
[
arg
for
arg
in
args
if
arg
]
success
=
self
.
_invoke
(
args
,
True
,
autoraise
)
success
=
self
.
_invoke
(
args
,
True
,
autoraise
,
url
)
if
not
success
:
if
not
success
:
# remote invocation failed, try straight way
# remote invocation failed, try straight way
args
=
[
arg
.
replace
(
"%s"
,
url
)
for
arg
in
self
.
args
]
args
=
[
arg
.
replace
(
"%s"
,
url
)
for
arg
in
self
.
args
]
...
@@ -337,6 +340,7 @@ class Konqueror(BaseBrowser):
...
@@ -337,6 +340,7 @@ class Konqueror(BaseBrowser):
"""
"""
def
open
(
self
,
url
,
new
=
0
,
autoraise
=
True
):
def
open
(
self
,
url
,
new
=
0
,
autoraise
=
True
):
sys
.
audit
(
"webbrowser.open"
,
url
)
# XXX Currently I know no way to prevent KFM from opening a new win.
# XXX Currently I know no way to prevent KFM from opening a new win.
if
new
==
2
:
if
new
==
2
:
action
=
"newTab"
action
=
"newTab"
...
@@ -420,6 +424,7 @@ class Grail(BaseBrowser):
...
@@ -420,6 +424,7 @@ class Grail(BaseBrowser):
return
1
return
1
def
open
(
self
,
url
,
new
=
0
,
autoraise
=
True
):
def
open
(
self
,
url
,
new
=
0
,
autoraise
=
True
):
sys
.
audit
(
"webbrowser.open"
,
url
)
if
new
:
if
new
:
ok
=
self
.
_remote
(
"LOADNEW "
+
url
)
ok
=
self
.
_remote
(
"LOADNEW "
+
url
)
else
:
else
:
...
@@ -577,6 +582,7 @@ def register_standard_browsers():
...
@@ -577,6 +582,7 @@ def register_standard_browsers():
if
sys
.
platform
[:
3
]
==
"win"
:
if
sys
.
platform
[:
3
]
==
"win"
:
class
WindowsDefault
(
BaseBrowser
):
class
WindowsDefault
(
BaseBrowser
):
def
open
(
self
,
url
,
new
=
0
,
autoraise
=
True
):
def
open
(
self
,
url
,
new
=
0
,
autoraise
=
True
):
sys
.
audit
(
"webbrowser.open"
,
url
)
try
:
try
:
os
.
startfile
(
url
)
os
.
startfile
(
url
)
except
OSError
:
except
OSError
:
...
@@ -606,6 +612,7 @@ if sys.platform == 'darwin':
...
@@ -606,6 +612,7 @@ if sys.platform == 'darwin':
self
.
name
=
name
self
.
name
=
name
def
open
(
self
,
url
,
new
=
0
,
autoraise
=
True
):
def
open
(
self
,
url
,
new
=
0
,
autoraise
=
True
):
sys
.
audit
(
"webbrowser.open"
,
url
)
assert
"'"
not
in
url
assert
"'"
not
in
url
# hack for local urls
# hack for local urls
if
not
':'
in
url
:
if
not
':'
in
url
:
...
...
Misc/NEWS.d/next/Security/2019-06-21-15-58-59.bpo-37363.diouyl.rst
0 → 100644
View file @
60419a7e
Adds audit events for :mod:`ensurepip`, :mod:`ftplib`, :mod:`glob`,
:mod:`imaplib`, :mod:`nntplib`, :mod:`pdb`, :mod:`poplib`, :mod:`shutil`,
:mod:`smtplib`, :mod:`sqlite3`, :mod:`subprocess`, :mod:`telnetlib`,
:mod:`tempfile` and :mod:`webbrowser`, as well as :func:`os.listdir`,
:func:`os.scandir` and :func:`breakpoint`.
Modules/_sqlite/module.c
View file @
60419a7e
...
@@ -85,6 +85,10 @@ static PyObject* module_connect(PyObject* self, PyObject* args, PyObject*
...
@@ -85,6 +85,10 @@ static PyObject* module_connect(PyObject* self, PyObject* args, PyObject*
factory
=
(
PyObject
*
)
&
pysqlite_ConnectionType
;
factory
=
(
PyObject
*
)
&
pysqlite_ConnectionType
;
}
}
if
(
PySys_Audit
(
"sqlite3.connect"
,
"O"
,
database
)
<
0
)
{
return
NULL
;
}
result
=
PyObject_Call
(
factory
,
args
,
kwargs
);
result
=
PyObject_Call
(
factory
,
args
,
kwargs
);
return
result
;
return
result
;
...
...
Modules/posixmodule.c
View file @
60419a7e
...
@@ -3759,6 +3759,10 @@ static PyObject *
...
@@ -3759,6 +3759,10 @@ static PyObject *
os_listdir_impl
(
PyObject
*
module
,
path_t
*
path
)
os_listdir_impl
(
PyObject
*
module
,
path_t
*
path
)
/*[clinic end generated code: output=293045673fcd1a75 input=e3f58030f538295d]*/
/*[clinic end generated code: output=293045673fcd1a75 input=e3f58030f538295d]*/
{
{
if
(
PySys_Audit
(
"os.listdir"
,
"O"
,
path
->
object
?
path
->
object
:
Py_None
)
<
0
)
{
return
NULL
;
}
#if defined(MS_WINDOWS) && !defined(HAVE_OPENDIR)
#if defined(MS_WINDOWS) && !defined(HAVE_OPENDIR)
return
_listdir_windows_no_opendir
(
path
,
NULL
);
return
_listdir_windows_no_opendir
(
path
,
NULL
);
#else
#else
...
@@ -13164,6 +13168,11 @@ os_scandir_impl(PyObject *module, path_t *path)
...
@@ -13164,6 +13168,11 @@ os_scandir_impl(PyObject *module, path_t *path)
#endif
#endif
#endif
#endif
if
(
PySys_Audit
(
"os.scandir"
,
"O"
,
path
->
object
?
path
->
object
:
Py_None
)
<
0
)
{
return
NULL
;
}
iterator
=
PyObject_New
(
ScandirIterator
,
&
ScandirIteratorType
);
iterator
=
PyObject_New
(
ScandirIterator
,
&
ScandirIteratorType
);
if
(
!
iterator
)
if
(
!
iterator
)
return
NULL
;
return
NULL
;
...
...
Python/bltinmodule.c
View file @
60419a7e
...
@@ -482,6 +482,11 @@ builtin_breakpoint(PyObject *self, PyObject *const *args, Py_ssize_t nargs, PyOb
...
@@ -482,6 +482,11 @@ builtin_breakpoint(PyObject *self, PyObject *const *args, Py_ssize_t nargs, PyOb
PyErr_SetString
(
PyExc_RuntimeError
,
"lost sys.breakpointhook"
);
PyErr_SetString
(
PyExc_RuntimeError
,
"lost sys.breakpointhook"
);
return
NULL
;
return
NULL
;
}
}
if
(
PySys_Audit
(
"builtins.breakpoint"
,
"O"
,
hook
)
<
0
)
{
return
NULL
;
}
Py_INCREF
(
hook
);
Py_INCREF
(
hook
);
PyObject
*
retval
=
_PyObject_Vectorcall
(
hook
,
args
,
nargs
,
keywords
);
PyObject
*
retval
=
_PyObject_Vectorcall
(
hook
,
args
,
nargs
,
keywords
);
Py_DECREF
(
hook
);
Py_DECREF
(
hook
);
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment