]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
Fix some missing null checks. (GH-118721)
authorSteve Dower <steve.dower@python.org>
Fri, 10 May 2024 09:31:55 +0000 (10:31 +0100)
committerGitHub <noreply@github.com>
Fri, 10 May 2024 09:31:55 +0000 (10:31 +0100)
Objects/typeobject.c
PC/launcher2.c

index 4b144fab5de8f18fa63296054e9503df80f9cefd..b7c3fcf47f23fc1fe0deaca8549fad35fb8fe805 100644 (file)
@@ -6036,15 +6036,19 @@ object_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
             return NULL;
         }
         comma_w_quotes_sep = PyUnicode_FromString("', '");
+        if (!comma_w_quotes_sep) {
+            Py_DECREF(sorted_methods);
+            return NULL;
+        }
         joined = PyUnicode_Join(comma_w_quotes_sep, sorted_methods);
-        method_count = PyObject_Length(sorted_methods);
-        Py_DECREF(sorted_methods);
+        Py_DECREF(comma_w_quotes_sep);
         if (joined == NULL)  {
-            Py_DECREF(comma_w_quotes_sep);
+            Py_DECREF(sorted_methods);
             return NULL;
         }
+        method_count = PyObject_Length(sorted_methods);
+        Py_DECREF(sorted_methods);
         if (method_count == -1) {
-            Py_DECREF(comma_w_quotes_sep);
             Py_DECREF(joined);
             return NULL;
         }
@@ -6056,7 +6060,6 @@ object_new(PyTypeObject *type, PyObject *args, PyObject *kwds)
                      method_count > 1 ? "s" : "",
                      joined);
         Py_DECREF(joined);
-        Py_DECREF(comma_w_quotes_sep);
         return NULL;
     }
     PyObject *obj = type->tp_alloc(type, 0);
index 139aa61bbe5cc2af1163a246173b330144bd07f4..98231613efb26f40a69f94180ebf1a6ba1dd1316 100644 (file)
@@ -2707,6 +2707,11 @@ process(int argc, wchar_t ** argv)
     DWORD len = GetEnvironmentVariableW(L"PYLAUNCHER_LIMIT_TO_COMPANY", NULL, 0);
     if (len > 1) {
         wchar_t *limitToCompany = allocSearchInfoBuffer(&search, len);
+        if (!limitToCompany) {
+            exitCode = RC_NO_MEMORY;
+            winerror(0, L"Failed to allocate internal buffer");
+            goto abort;
+        }
         search.limitToCompany = limitToCompany;
         if (0 == GetEnvironmentVariableW(L"PYLAUNCHER_LIMIT_TO_COMPANY", limitToCompany, len)) {
             exitCode = RC_INTERNAL_ERROR;