mirror of
				https://github.com/python/cpython.git
				synced 2025-11-03 23:21:29 +00:00 
			
		
		
		
	Fix some missing checks after PyTuple_New, PyList_New, PyDict_New
This commit is contained in:
		
							parent
							
								
									a5a0704942
								
							
						
					
					
						commit
						5c170fd4a9
					
				
					 7 changed files with 27 additions and 7 deletions
				
			
		| 
						 | 
					@ -1482,7 +1482,8 @@ al_GetParams(PyObject *self, PyObject *args)
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
	if (alGetParams(resource, pvs, npvs) < 0)
 | 
						if (alGetParams(resource, pvs, npvs) < 0)
 | 
				
			||||||
		goto error;
 | 
							goto error;
 | 
				
			||||||
	v = PyList_New(npvs);
 | 
						if (!(v = PyList_New(npvs)))
 | 
				
			||||||
 | 
							goto error;
 | 
				
			||||||
	for (i = 0; i < npvs; i++) {
 | 
						for (i = 0; i < npvs; i++) {
 | 
				
			||||||
		if (pvs[i].sizeOut < 0) {
 | 
							if (pvs[i].sizeOut < 0) {
 | 
				
			||||||
			char buf[32];
 | 
								char buf[32];
 | 
				
			||||||
| 
						 | 
					@ -1692,6 +1693,7 @@ al_GetParamInfo(PyObject *self, PyObject *args)
 | 
				
			||||||
	if (alGetParamInfo(res, param, &pinfo) < 0)
 | 
						if (alGetParamInfo(res, param, &pinfo) < 0)
 | 
				
			||||||
		return NULL;
 | 
							return NULL;
 | 
				
			||||||
	v = PyDict_New();
 | 
						v = PyDict_New();
 | 
				
			||||||
 | 
						if (!v) return NULL;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	item = PyInt_FromLong((long) pinfo.resource);
 | 
						item = PyInt_FromLong((long) pinfo.resource);
 | 
				
			||||||
	PyDict_SetItemString(v, "resource", item);
 | 
						PyDict_SetItemString(v, "resource", item);
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1085,6 +1085,8 @@ gc_get_referrers(PyObject *self, PyObject *args)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	int i;
 | 
						int i;
 | 
				
			||||||
	PyObject *result = PyList_New(0);
 | 
						PyObject *result = PyList_New(0);
 | 
				
			||||||
 | 
						if (!result) return NULL;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	for (i = 0; i < NUM_GENERATIONS; i++) {
 | 
						for (i = 0; i < NUM_GENERATIONS; i++) {
 | 
				
			||||||
		if (!(gc_referrers_for(args, GEN_HEAD(i), result))) {
 | 
							if (!(gc_referrers_for(args, GEN_HEAD(i), result))) {
 | 
				
			||||||
			Py_DECREF(result);
 | 
								Py_DECREF(result);
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -935,24 +935,32 @@ build_namelists (PyObject *module)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    labels = PyList_New(num_controls);
 | 
					    labels = PyList_New(num_controls);
 | 
				
			||||||
    names = PyList_New(num_controls);
 | 
					    names = PyList_New(num_controls);
 | 
				
			||||||
 | 
					    if (labels == NULL || names == NULL)
 | 
				
			||||||
 | 
					        goto error2;
 | 
				
			||||||
    for (i = 0; i < num_controls; i++) {
 | 
					    for (i = 0; i < num_controls; i++) {
 | 
				
			||||||
        s = PyString_FromString(control_labels[i]);
 | 
					        s = PyString_FromString(control_labels[i]);
 | 
				
			||||||
        if (s == NULL)
 | 
					        if (s == NULL)
 | 
				
			||||||
            return -1;
 | 
					            goto error2;
 | 
				
			||||||
        PyList_SET_ITEM(labels, i, s);
 | 
					        PyList_SET_ITEM(labels, i, s);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        s = PyString_FromString(control_names[i]);
 | 
					        s = PyString_FromString(control_names[i]);
 | 
				
			||||||
        if (s == NULL)
 | 
					        if (s == NULL)
 | 
				
			||||||
            return -1;
 | 
					            goto error2;
 | 
				
			||||||
        PyList_SET_ITEM(names, i, s);
 | 
					        PyList_SET_ITEM(names, i, s);
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if (PyModule_AddObject(module, "control_labels", labels) == -1)
 | 
					    if (PyModule_AddObject(module, "control_labels", labels) == -1)
 | 
				
			||||||
        return -1;
 | 
					        goto error2;
 | 
				
			||||||
    if (PyModule_AddObject(module, "control_names", names) == -1)
 | 
					    if (PyModule_AddObject(module, "control_names", names) == -1)
 | 
				
			||||||
        return -1;
 | 
					        goto error1;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    return 0;
 | 
					    return 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					error2:
 | 
				
			||||||
 | 
					    Py_XDECREF(labels);
 | 
				
			||||||
 | 
					error1:
 | 
				
			||||||
 | 
					    Py_XDECREF(names);
 | 
				
			||||||
 | 
					    return -1;
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1519,6 +1519,8 @@ xmlparse_getattr(xmlparseobject *self, char *name)
 | 
				
			||||||
    if (strcmp(name, "__members__") == 0) {
 | 
					    if (strcmp(name, "__members__") == 0) {
 | 
				
			||||||
        int i;
 | 
					        int i;
 | 
				
			||||||
        PyObject *rc = PyList_New(0);
 | 
					        PyObject *rc = PyList_New(0);
 | 
				
			||||||
 | 
						if (!rc)
 | 
				
			||||||
 | 
							return NULL;
 | 
				
			||||||
        for (i = 0; handler_info[i].name != NULL; i++) {
 | 
					        for (i = 0; handler_info[i].name != NULL; i++) {
 | 
				
			||||||
            PyObject *o = get_handler_name(&handler_info[i]);
 | 
					            PyObject *o = get_handler_name(&handler_info[i]);
 | 
				
			||||||
            if (o != NULL)
 | 
					            if (o != NULL)
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -615,6 +615,7 @@ tuplesubscript(PyTupleObject* self, PyObject* item)
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
		else {
 | 
							else {
 | 
				
			||||||
			result = PyTuple_New(slicelength);
 | 
								result = PyTuple_New(slicelength);
 | 
				
			||||||
 | 
								if (!result) return NULL;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
			src = self->ob_item;
 | 
								src = self->ob_item;
 | 
				
			||||||
			dest = ((PyTupleObject *)result)->ob_item;
 | 
								dest = ((PyTupleObject *)result)->ob_item;
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -1106,16 +1106,19 @@ set_mro_error(PyObject *to_merge, int *remain)
 | 
				
			||||||
	char buf[1000];
 | 
						char buf[1000];
 | 
				
			||||||
	PyObject *k, *v;
 | 
						PyObject *k, *v;
 | 
				
			||||||
	PyObject *set = PyDict_New();
 | 
						PyObject *set = PyDict_New();
 | 
				
			||||||
 | 
						if (!set) return;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	to_merge_size = PyList_GET_SIZE(to_merge);
 | 
						to_merge_size = PyList_GET_SIZE(to_merge);
 | 
				
			||||||
	for (i = 0; i < to_merge_size; i++) {
 | 
						for (i = 0; i < to_merge_size; i++) {
 | 
				
			||||||
		PyObject *L = PyList_GET_ITEM(to_merge, i);
 | 
							PyObject *L = PyList_GET_ITEM(to_merge, i);
 | 
				
			||||||
		if (remain[i] < PyList_GET_SIZE(L)) {
 | 
							if (remain[i] < PyList_GET_SIZE(L)) {
 | 
				
			||||||
			PyObject *c = PyList_GET_ITEM(L, remain[i]);
 | 
								PyObject *c = PyList_GET_ITEM(L, remain[i]);
 | 
				
			||||||
			if (PyDict_SetItem(set, c, Py_None) < 0)
 | 
								if (PyDict_SetItem(set, c, Py_None) < 0) {
 | 
				
			||||||
 | 
									Py_DECREF(set);
 | 
				
			||||||
				return;
 | 
									return;
 | 
				
			||||||
			}
 | 
								}
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
 | 
						}
 | 
				
			||||||
	n = PyDict_Size(set);
 | 
						n = PyDict_Size(set);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	off = PyOS_snprintf(buf, sizeof(buf), "Cannot create a \
 | 
						off = PyOS_snprintf(buf, sizeof(buf), "Cannot create a \
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
| 
						 | 
					@ -319,7 +319,9 @@ static PyObject *
 | 
				
			||||||
list2dict(PyObject *list)
 | 
					list2dict(PyObject *list)
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
	Py_ssize_t i, n;
 | 
						Py_ssize_t i, n;
 | 
				
			||||||
	PyObject *v, *k, *dict = PyDict_New();
 | 
						PyObject *v, *k;
 | 
				
			||||||
 | 
						PyObject *dict = PyDict_New();
 | 
				
			||||||
 | 
						if (!dict) return NULL;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	n = PyList_Size(list);
 | 
						n = PyList_Size(list);
 | 
				
			||||||
	for (i = 0; i < n; i++) {
 | 
						for (i = 0; i < n; i++) {
 | 
				
			||||||
| 
						 | 
					
 | 
				
			||||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue