[Python-Dev] [Python-checkins] cpython (3.3): Reject float as uid or gid.

Eric V. Smith eric at trueblade.com
Mon Feb 11 00:06:35 CET 2013


On 2/10/2013 4:29 PM, serhiy.storchaka wrote:
> http://hg.python.org/cpython/rev/4ef048f4834e
> changeset:   82147:4ef048f4834e
> branch:      3.3
> parent:      82145:b322655a4a88
> user:        Serhiy Storchaka <storchaka at gmail.com>
> date:        Sun Feb 10 23:28:02 2013 +0200
> summary:
>   Reject float as uid or gid.
> A regression was introduced in the commit for issue issue #4591.
> 
> files:
>   Modules/posixmodule.c |  16 ++++++++++++++--
>   1 files changed, 14 insertions(+), 2 deletions(-)
> 
> 
> diff --git a/Modules/posixmodule.c b/Modules/posixmodule.c
> --- a/Modules/posixmodule.c
> +++ b/Modules/posixmodule.c
> @@ -437,7 +437,13 @@
>  _Py_Uid_Converter(PyObject *obj, void *p)
>  {
>      int overflow;
> -    long result = PyLong_AsLongAndOverflow(obj, &overflow);
> +    long result;
> +    if (PyFloat_Check(obj)) {
> +        PyErr_SetString(PyExc_TypeError,
> +                        "integer argument expected, got float");
> +        return 0;
> +    }
> +    result = PyLong_AsLongAndOverflow(obj, &overflow);
>      if (overflow < 0)
>          goto OverflowDown;
>      if (!overflow && result == -1) {

Instead of special-casing float, isn't using __index__ the preferred way
to do this?

-- 
Eric.


More information about the Python-Dev mailing list