Blame SOURCES/0001-python-pycurl-7.43.0.2-static-analysis.patch

3153ed
From 047bd00ee53a722eaf46e58e330888cf628d5a7c Mon Sep 17 00:00:00 2001
3153ed
From: Kamil Dudka <kdudka@redhat.com>
3153ed
Date: Mon, 14 Jan 2019 16:54:19 +0100
3153ed
Subject: [PATCH 1/2] do_curl_setopt_httppost: do not use uninitialized stack
3153ed
 variable
3153ed
3153ed
Detected by Coverity Analysis and Clang:
3153ed
3153ed
Error: UNINIT (CWE-457):
3153ed
pycurl-7.43.0.2/src/easyopt.c:493: var_decl: Declaring variable "res" without initializer.
3153ed
pycurl-7.43.0.2/src/easyopt.c:524: uninit_use_in_call: Using uninitialized value "(int)res" when calling "create_and_set_error_object".
3153ed
522|               if (PyText_AsStringAndSize(httppost_option, &cstr, &clen, &cencoded_obj)) {
3153ed
523|                   PyText_EncodedDecref(nencoded_obj);
3153ed
524|->                 CURLERROR_SET_RETVAL();
3153ed
525|                   goto error;
3153ed
526|               }
3153ed
3153ed
Error: CLANG_WARNING:
3153ed
pycurl-7.43.0.2/src/easyopt.c:524:17: warning: 2nd function call argument is an uninitialized value
3153ed
pycurl-7.43.0.2/src/pycurl.h:286:5: note: expanded from macro 'CURLERROR_SET_RETVAL'
3153ed
pycurl-7.43.0.2/src/easyopt.c:493:5: note: 'res' declared without an initial value
3153ed
pycurl-7.43.0.2/src/easyopt.c:496:9: note: Assuming 'len' is not equal to 0
3153ed
pycurl-7.43.0.2/src/easyopt.c:496:5: note: Taking false branch
3153ed
pycurl-7.43.0.2/src/easyopt.c:499:17: note: Assuming 'i' is < 'len'
3153ed
pycurl-7.43.0.2/src/easyopt.c:499:5: note: Loop condition is true.  Entering loop body
3153ed
pycurl-7.43.0.2/src/easyopt.c:505:13: note: Assuming 'which_httppost_item' is not equal to 0
3153ed
pycurl-7.43.0.2/src/easyopt.c:505:9: note: Taking false branch
3153ed
pycurl-7.43.0.2/src/easyopt.c:509:13: note: Assuming the condition is false
3153ed
pycurl-7.43.0.2/src/easyopt.c:509:9: note: Taking false branch
3153ed
pycurl-7.43.0.2/src/easyopt.c:513:13: note: Assuming the condition is false
3153ed
pycurl-7.43.0.2/src/easyopt.c:513:9: note: Taking false branch
3153ed
pycurl-7.43.0.2/src/easyopt.c:519:13: note: Assuming the condition is true
3153ed
pycurl-7.43.0.2/src/easyopt.c:519:9: note: Taking true branch
3153ed
pycurl-7.43.0.2/src/easyopt.c:522:17: note: Assuming the condition is true
3153ed
pycurl-7.43.0.2/src/easyopt.c:522:13: note: Taking true branch
3153ed
pycurl-7.43.0.2/src/easyopt.c:524:17: note: 2nd function call argument is an uninitialized value
3153ed
pycurl-7.43.0.2/src/pycurl.h:286:5: note: expanded from macro 'CURLERROR_SET_RETVAL'
3153ed
---
3153ed
 src/easyopt.c | 2 +-
3153ed
 1 file changed, 1 insertion(+), 1 deletion(-)
3153ed
3153ed
diff --git a/src/easyopt.c b/src/easyopt.c
3153ed
index 015fa93..471400c 100644
3153ed
--- a/src/easyopt.c
3153ed
+++ b/src/easyopt.c
3153ed
@@ -521,7 +521,7 @@ do_curl_setopt_httppost(CurlObject *self, int option, int which, PyObject *obj)
3153ed
 
3153ed
             if (PyText_AsStringAndSize(httppost_option, &cstr, &clen, &cencoded_obj)) {
3153ed
                 PyText_EncodedDecref(nencoded_obj);
3153ed
-                CURLERROR_SET_RETVAL();
3153ed
+                create_and_set_error_object(self, CURLE_BAD_FUNCTION_ARGUMENT);
3153ed
                 goto error;
3153ed
             }
3153ed
             /* INFO: curl_formadd() internally does memdup() the data, so
3153ed
-- 
3153ed
2.17.2
3153ed
3153ed
3153ed
From 6f0f7896412c107c390f4967dcdf94fd14d52047 Mon Sep 17 00:00:00 2001
3153ed
From: Kamil Dudka <kdudka@redhat.com>
3153ed
Date: Mon, 14 Jan 2019 16:57:14 +0100
3153ed
Subject: [PATCH 2/2] do_multi_add_handle: execute clean-up code before return
3153ed
3153ed
Detected by Coverity Analysis:
3153ed
3153ed
Error: UNREACHABLE (CWE-561):
3153ed
pycurl-7.43.0.2/src/multi.c:631: unreachable: This code cannot be reached: "PyDict_DelItem(self->easy_o...".
3153ed
629|       if (res != CURLM_OK) {
3153ed
630|           CURLERROR_MSG("curl_multi_add_handle() failed due to internal errors");
3153ed
631|->         PyDict_DelItem(self->easy_object_dict, (PyObject *) obj);
3153ed
632|       }
3153ed
633|       obj->multi_stack = self;
3153ed
---
3153ed
 src/multi.c | 2 +-
3153ed
 1 file changed, 1 insertion(+), 1 deletion(-)
3153ed
3153ed
diff --git a/src/multi.c b/src/multi.c
3153ed
index 7ecedbf..3407423 100644
3153ed
--- a/src/multi.c
3153ed
+++ b/src/multi.c
3153ed
@@ -627,8 +627,8 @@ do_multi_add_handle(CurlMultiObject *self, PyObject *args)
3153ed
     assert(obj->multi_stack == NULL);
3153ed
     res = curl_multi_add_handle(self->multi_handle, obj->handle);
3153ed
     if (res != CURLM_OK) {
3153ed
-        CURLERROR_MSG("curl_multi_add_handle() failed due to internal errors");
3153ed
         PyDict_DelItem(self->easy_object_dict, (PyObject *) obj);
3153ed
+        CURLERROR_MSG("curl_multi_add_handle() failed due to internal errors");
3153ed
     }
3153ed
     obj->multi_stack = self;
3153ed
     Py_INCREF(self);
3153ed
-- 
3153ed
2.17.2
3153ed