From 1306df3963e893b54bbca04fc2623eebc5817bd4 Mon Sep 17 00:00:00 2001 From: Luan-233 <2533556772@qq.com> Date: Thu, 21 Sep 2023 10:06:52 -0700 Subject: [PATCH 1/2] =?UTF-8?q?=E4=BF=AE=E5=A4=8D=E8=8B=A5=E5=B9=B2malloc?= =?UTF-8?q?=E4=B8=8Efree=E7=9A=84=E7=A9=BA=E9=97=B4=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- psycopg/bytes_format.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/psycopg/bytes_format.c b/psycopg/bytes_format.c index b3119e8..8628489 100644 --- a/psycopg/bytes_format.c +++ b/psycopg/bytes_format.c @@ -238,8 +238,8 @@ PyObject *Bytes_Format(PyObject *format, PyObject *args, char place_holder) { } args_list = (char **)malloc(sizeof(char *) * arglen); // buffer - memset(args_list, NULL, sizeof(char *) * arglen); - args_len = (Py_ssize_t *)malloc(sizeof(Py_ssize_t *) * arglen); // length of every argument + memset(args_list, 0, sizeof(char *) * arglen); + args_len = (Py_ssize_t *)malloc(sizeof(Py_ssize_t) * arglen); // length of every argument while ((args_value = getnextarg(args, arglen, &argidx)) != NULL) { // stop when receive NULL Py_ssize_t length = 0; if (!Bytes_CheckExact(args_value)) { @@ -251,14 +251,14 @@ PyObject *Bytes_Format(PyObject *format, PyObject *args, char place_holder) { length = Bytes_GET_SIZE(args_value); // printf("type: %s, len: %d, value: %s\n", Py_TYPE(args_value)->tp_name, length, args_buffer); args_len[argidx - 1] = length; - args_list[argidx - 1] = (char *)malloc(sizeof(char *) * (length + 1)); + args_list[argidx - 1] = (char *)malloc(sizeof(char) * (length + 1)); Py_MEMCPY(args_list[argidx - 1], args_buffer, length); args_list[argidx - 1][length] = '\0'; Py_XDECREF(args_value); } arg_usecnt = (int *)malloc(sizeof(int) * arglen); - memset(arg_usecnt, 0, sizeof(char *) * arglen); + memset(arg_usecnt, 0, sizeof(int) * arglen); fmt = Bytes_AS_STRING(format); // get pointer of format fmtcnt = Bytes_GET_SIZE(format); // get length of format From 19d1f3a5ed774f69723a5515207c4ad436c34002 Mon Sep 17 00:00:00 2001 From: Luan-233 <2533556772@qq.com> Date: Thu, 21 Sep 2023 20:40:29 -0700 Subject: [PATCH 2/2] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E8=BE=B9=E7=95=8C?= =?UTF-8?q?=E6=A3=80=E6=9F=A5=EF=BC=8C=E9=98=B2=E6=AD=A2=E7=BC=96=E8=AF=91?= =?UTF-8?q?=E6=97=B6=E6=8A=A5warning?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- psycopg/bytes_format.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/psycopg/bytes_format.c b/psycopg/bytes_format.c index 8628489..0264a6d 100644 --- a/psycopg/bytes_format.c +++ b/psycopg/bytes_format.c @@ -227,7 +227,7 @@ PyObject *Bytes_Format(PyObject *format, PyObject *args, char place_holder) { } /* '%' */ } /* until end */ - if (dict) { // if args' type is dict, the func ends + if (dict || (arglen < 0) || (argidx < 0)) { // args' type is dict, the func ends if (args_owned) Py_DECREF(args); if (!(result = resize_bytes(result, reslen - rescnt))) return NULL; // resize and return if (place_holder != '%') {