Skip to content

Commit

Permalink
Fix missing/incomplete NULL checks in multiple source files (python#1…
Browse files Browse the repository at this point in the history
…04564)

Co-authored-by: Oleg Iarygin <oleg@arhadthedev.net>
  • Loading branch information
chgnrdv and arhadthedev authored May 23, 2023
1 parent ae00b81 commit 13b5d79
Show file tree
Hide file tree
Showing 5 changed files with 20 additions and 1 deletion.
10 changes: 9 additions & 1 deletion Modules/_zoneinfo.c
Original file line number Diff line number Diff line change
Expand Up @@ -2381,7 +2381,12 @@ get_local_timestamp(PyObject *dt, int64_t *local_ts)
/////
// Functions for cache handling

/* Constructor for StrongCacheNode */
/* Constructor for StrongCacheNode
*
* This function doesn't set MemoryError if PyMem_Malloc fails,
* as the cache intentionally doesn't propagate exceptions
* and fails silently if error occurs.
*/
static StrongCacheNode *
strong_cache_node_new(PyObject *key, PyObject *zone)
{
Expand Down Expand Up @@ -2572,6 +2577,9 @@ update_strong_cache(zoneinfo_state *state, const PyTypeObject *const type,
}

StrongCacheNode *new_node = strong_cache_node_new(key, zone);
if (new_node == NULL) {
return;
}
StrongCacheNode **root = &(state->ZONEINFO_STRONG_CACHE);
move_strong_cache_node_to_front(state, root, new_node);

Expand Down
1 change: 1 addition & 0 deletions Modules/errnomodule.c
Original file line number Diff line number Diff line change
Expand Up @@ -84,6 +84,7 @@ errno_exec(PyObject *module)
PyObject *module_dict = PyModule_GetDict(module);
PyObject *error_dict = PyDict_New();
if (!module_dict || !error_dict) {
Py_XDECREF(error_dict);
return -1;
}
if (PyDict_SetItemString(module_dict, "errorcode", error_dict) < 0) {
Expand Down
4 changes: 4 additions & 0 deletions Modules/posixmodule.c
Original file line number Diff line number Diff line change
Expand Up @@ -9023,6 +9023,10 @@ os_setgroups(PyObject *module, PyObject *groups)
}

gid_t *grouplist = PyMem_New(gid_t, len);
if (grouplist == NULL) {
PyErr_NoMemory();
return NULL;
}
for (Py_ssize_t i = 0; i < len; i++) {
PyObject *elem;
elem = PySequence_GetItem(groups, i);
Expand Down
3 changes: 3 additions & 0 deletions Modules/sha1module.c
Original file line number Diff line number Diff line change
Expand Up @@ -73,6 +73,9 @@ static SHA1object *
newSHA1object(SHA1State *st)
{
SHA1object *sha = (SHA1object *)PyObject_GC_New(SHA1object, st->sha1_type);
if (sha == NULL) {
return NULL;
}
sha->lock = NULL;
PyObject_GC_Track(sha);
return sha;
Expand Down
3 changes: 3 additions & 0 deletions Modules/zlibmodule.c
Original file line number Diff line number Diff line change
Expand Up @@ -1722,6 +1722,9 @@ ZlibDecompressor__new__(PyTypeObject *cls,
return NULL;
}
ZlibDecompressor *self = PyObject_New(ZlibDecompressor, cls);
if (self == NULL) {
return NULL;
}
self->eof = 0;
self->needs_input = 1;
self->avail_in_real = 0;
Expand Down

0 comments on commit 13b5d79

Please sign in to comment.