246 /* Converts the acl to a custom text format */
247 static PyObject* ACL_to_any_text(PyObject *obj, PyObject *args,
248 PyObject *kwds) {
249 char *text;
250 ACL_Object *self = (ACL_Object*) obj;
251 PyObject *ret;
252 char *arg_prefix = NULL;
253 char arg_separator = '\n';
254 int arg_options = 0;
255 static char *kwlist[] = {"prefix", "separator", "options", NULL};
256
257 if (!PyArg_ParseTupleAndKeywords(args, kwds, "|sci", kwlist, &arg_prefix,
when PyArg_ParseTupleAndKeywords() succeeds
taking False path
258 &arg_separator, &arg_options))
259 return NULL;
260
261 text = acl_to_any_text(self->acl, arg_prefix, arg_separator, arg_options);
262 if(text == NULL) {
when treating unknown char * from acl.c:261 as non-NULL
taking False path
263 return PyErr_SetFromErrno(PyExc_IOError);
264 }
265 ret = PyBytes_FromString(text);
when PyString_FromString() fails
266 if(acl_free(text) != 0) {
when considering range: -0x80000000 <= value <= -1
taking True path
267 Py_DECREF(ret);
dereferencing NULL (ret->ob_refcnt) at acl.c:267
found 1 similar trace(s) to this
268 return PyErr_SetFromErrno(PyExc_IOError);
269 }
270 return ret;
271 }