Potential for bugs while using COPY_POINTER_FIELD to copy NULL pointer

Поиск
Список
Период
Сортировка
От Ashutosh Bapat
Тема Potential for bugs while using COPY_POINTER_FIELD to copy NULL pointer
Дата
Msg-id CAFjFpRcL3fPB2V3+k4=HqC87hbKFobJhXWztbEUqSKYB_fLwPw@mail.gmail.com
обсуждение исходный текст
Ответы Re: Potential for bugs while using COPY_POINTER_FIELD to copy NULL pointer  (Tom Lane <tgl@sss.pgh.pa.us>)
Список pgsql-hackers
Hi,<br />COPY_POINTER_FIELD is defined as - <br />  61 #define COPY_POINTER_FIELD(fldname, sz) \<br />  62     do {
\<br/>  63         Size    _size = (sz); \<br />  64         newnode->fldname = palloc(_size); \<br />  65        
memcpy(newnode->fldname,from->fldname, _size); \<br />   66     } while (0)<br /><br />Since we allocate _size
memoryirrespective of whether from->fldname is NULL, every NULL pointer can get copied as non-NULL pointer because
theway *alloc routines handle 0 sizes.<br />-- from man malloc<br /> If size  is  0,  then  malloc()  returns either
NULL,or a unique pointer value that can later be successfully passed to free()<br />--<br /><br />After such a copy
testslike if (pointer) will start failing. There are few callers of COPY_POINTER_FIELD which do not call the macro if
thesize can be 0. But there are some who do not do so. This looks fishy, in case we have if (pointer) kinds of
cases.<br/><br />Shouldn't COPY_POINTER_FIELD return NULL, if the pointer to be copied is NULL?<br />-- <br />Best
Wishes,<br/>Ashutosh Bapat<br />EntepriseDB Corporation<br />The Enterprise Postgres Company<br /><br /> 

В списке pgsql-hackers по дате отправления:

Предыдущее
От: Thom Brown
Дата:
Сообщение: Re: pgsql_fdw, FDW for PostgreSQL server
Следующее
От: Clover White
Дата:
Сообщение: why was the VAR 'optind' never changed in initdb?