#30 Check negative return of PyList_Size
Merged 5 years ago by jhrozek. Opened 5 years ago by jhrozek.
jhrozek/libuser py_list_size  into  master

file modified
+6 -1
@@ -137,7 +137,12 @@ 

  		return NULL;

  	}

  	count = PyList_Size(list);

- 	if (count > INT_MAX) {

+ 	if (count < 0) {

+ 		PyErr_SetString(PyExc_TypeError,

+ 				"prompt_list has no size; probably not a list");

+ 		DEBUG_EXIT;

+ 		return NULL;

+ 	} else if (count > INT_MAX) {

  		PyErr_SetString(PyExc_ValueError, "too many prompts");

  		DEBUG_EXIT;

  		return NULL;

Merges:
https://pagure.io/libuser/issue/28

In case of an error, PyList_Size can return a negative value. We should
check that case, also to avoid compiler warnings like:

Error: COMPILER_WARNING: [#def41] [warning: defect not occurring in libuser-0.60-9.el7]
libuser-0.62/python/misc.c: scope_hint: In function 'libuser_admin_prompt'
libuser-0.62/python/misc.c:160:12: warning: argument 1 range [9223372036854775808, 18446744073709551615] exceeds maximum object size 9223372036854775807 [-Walloc-size-larger-than=]
/usr/include/glib-2.0/glib/glist.h:32: included_from: Included from here.
/usr/include/glib-2.0/glib/ghash.h:33: included_from: Included from here.
/usr/include/glib-2.0/glib.h:50: included_from: Included from here.
libuser-0.62/python/misc.c:25: included_from: Included from here.
/usr/include/glib-2.0/glib/gmem.h:96:10: note: in a call to allocation function 'g_malloc0_n' declared here

rebased onto f67bc778c82305ee3d1fb824ef26fd7038392e91

5 years ago

rebased onto 11a7ff7

5 years ago

The latest revision also raises a TypeError if the list length can't be read. Merging.

Commit 3ad74f1 fixes this pull-request

Pull-Request has been merged by jhrozek

5 years ago

Pull-Request has been merged by jhrozek

5 years ago
Metadata