Changeset 926


Ignore:
Timestamp:
Jan 22, 2018, 3:21:18 AM (18 months ago)
Author:
cito
Message:

Use-after-free bug in query function implementation

Files:
6 edited

Legend:

Unmodified
Added
Removed
  • branches/4.x/pgmodule.c

    r805 r926  
    26942694                                                char    *ret = PQcmdTuples(result);
    26952695
    2696                                                 PQclear(result);
    26972696                                                if (ret[0])             /* return number of rows affected */
    26982697                                                {
    2699                                                         return PyString_FromString(ret);
     2698                                                        PyObject *obj = PyString_FromString(ret);
     2699                                                        PQclear(result);
     2700                                                        return obj;
    27002701                                                }
     2702                                                PQclear(result);
    27012703                                                Py_INCREF(Py_None);
    27022704                                                return Py_None;
  • branches/5.0.x/docs/contents/changelog.rst

    r914 r926  
    22=========
    33
     4Version 5.0.5 (to be released)
     5------------------------------
     6- The memory for the string with the number of rows affected by a classic pg
     7  module query() was already freed (bug report and fix by Peifeng Qiu).
     8
    49Version 5.0.4 (2017-07-23)
    5 ------------------------------
     10--------------------------
    611- This version officially supports the new Python 3.6 and PostgreSQL 9.6.
    712- query_formatted() can now be used without parameters.
  • branches/5.0.x/pgmodule.c

    r918 r926  
    23392339                                                char    *ret = PQcmdTuples(result);
    23402340
    2341                                                 PQclear(result);
    23422341                                                if (ret[0])             /* return number of rows affected */
    23432342                                                {
    2344                                                         return PyStr_FromString(ret);
     2343                                                        PyObject *obj = PyStr_FromString(ret);
     2344                                                        PQclear(result);
     2345                                                        return obj;
    23452346                                                }
     2347                                                PQclear(result);
    23462348                                                Py_INCREF(Py_None);
    23472349                                                return Py_None;
  • trunk

    • Property svn:ignore
      •  

        old new  
        11*.egg-info
        22.idea
         3.pycharm_helpers
        34.tox
        45.vagrant
  • trunk/docs/contents/changelog.rst

    r914 r926  
    22=========
    33
     4Version 5.0.5 (to be released)
     5------------------------------
     6- The memory for the string with the number of rows affected by a classic pg
     7  module query() was already freed (bug report and fix by Peifeng Qiu).
     8
    49Version 5.0.4 (2017-07-23)
    5 ------------------------------
     10--------------------------
    611- This version officially supports the new Python 3.6 and PostgreSQL 9.6.
    712- query_formatted() can now be used without parameters.
  • trunk/pgmodule.c

    r918 r926  
    23392339                                                char    *ret = PQcmdTuples(result);
    23402340
    2341                                                 PQclear(result);
    23422341                                                if (ret[0])             /* return number of rows affected */
    23432342                                                {
    2344                                                         return PyStr_FromString(ret);
     2343                                                        PyObject *obj = PyStr_FromString(ret);
     2344                                                        PQclear(result);
     2345                                                        return obj;
    23452346                                                }
     2347                                                PQclear(result);
    23462348                                                Py_INCREF(Py_None);
    23472349                                                return Py_None;
Note: See TracChangeset for help on using the changeset viewer.