]> granicus.if.org Git - python/commitdiff
Check for overflow errors in setrlimit(),
authorJeremy Hylton <jeremy@alum.mit.edu>
Tue, 23 Apr 2002 20:15:04 +0000 (20:15 +0000)
committerJeremy Hylton <jeremy@alum.mit.edu>
Tue, 23 Apr 2002 20:15:04 +0000 (20:15 +0000)
and reflow a long line.

Modules/resource.c

index 4d8d4faa014c9be7c2806b47a2e97ea64c98c47d..9881314c1e986c623b6d18b0c6cc76544a46bdf5 100644 (file)
@@ -142,7 +142,8 @@ resource_setrlimit(PyObject *self, PyObject *args)
        int resource;
        PyObject *curobj, *maxobj;
 
-       if (!PyArg_ParseTuple(args, "i(OO):setrlimit", &resource, &curobj, &maxobj))
+       if (!PyArg_ParseTuple(args, "i(OO):setrlimit", 
+                             &resource, &curobj, &maxobj))
                return NULL;
 
        if (resource < 0 || resource >= RLIM_NLIMITS) {
@@ -153,13 +154,21 @@ resource_setrlimit(PyObject *self, PyObject *args)
 
 #if !defined(HAVE_LARGEFILE_SUPPORT)
        rl.rlim_cur = PyInt_AsLong(curobj);
+       if (rl.rlim_cur == -1 && PyErr_Occurred())
+           return NULL;
        rl.rlim_max = PyInt_AsLong(maxobj);
+       if (rl.rlim_max == -1 && PyErr_Occurred())
+           return NULL;
 #else
        /* The limits are probably bigger than a long */
        rl.rlim_cur = PyLong_Check(curobj) ?
                PyLong_AsLongLong(curobj) : PyInt_AsLong(curobj);
+       if (rl.rlim_cur == -1 && PyErr_Occurred())
+           return NULL;
        rl.rlim_max = PyLong_Check(maxobj) ?
                PyLong_AsLongLong(maxobj) : PyInt_AsLong(maxobj);
+       if (rl.rlim_max == -1 && PyErr_Occurred())
+           return NULL;
 #endif
 
        rl.rlim_cur = rl.rlim_cur & RLIM_INFINITY;