Re: [HACKERS] 【ECPG】strncpy functiondoes not set the end character '\0'

Поиск
Список
Период
Сортировка
От Michael Meskes
Тема Re: [HACKERS] 【ECPG】strncpy functiondoes not set the end character '\0'
Дата
Msg-id 1504794406.3276.2.camel@postgresql.org
обсуждение исходный текст
Ответ на Re: [HACKERS] 【ECPG】strncpy function does not set the end character '\0'  (Tom Lane <tgl@sss.pgh.pa.us>)
Ответы Re: [HACKERS] 【ECPG】strncpy function does not set the end character '\0'  (Tom Lane <tgl@sss.pgh.pa.us>)
Список pgsql-hackers
> > Why do you think there should be one? My memory might be wrong but
> > I
> > don't think it's supposed to be a null terminated string.
> 
> That field is defined as char[5] in struct sqlca_t, so the intent is
> clearly that it not be null terminated.  However, it looks to me like
> there'd be at least one alignment-padding byte after it, and that
> byte
> is likely to be 0 in a lot of situations (particularly for statically
> allocated sqlca_t's).  So a lot of the time, you could get away with
> using strcmp() or other functions that expect null termination.

With "supposed" I was referring to the standard that defines SQLCA.

> I'm thinking therefore that there's probably code out there that
> tries
> to do strcmp(sqlca->sqlstate, "22000") or suchlike, and it works
> often
> enough that the authors haven't identified their bug.  The question
> is
> do we want to try to make that be valid code.
> 
> Changing the field declaration to char[5+1] would be easy enough, but
> I have no idea how many places in ecpglib would need to change to
> make
> sure that the last byte gets set to 0.

I doubt it'll be a lot. However, it would make us differ, albeit very
slightly, from what others do. I haven't come up with a practical
problem coming from that difference though.

Michael
-- 
Michael Meskes
Michael at Fam-Meskes dot De, Michael at Meskes dot (De|Com|Net|Org)
Meskes at (Debian|Postgresql) dot Org
Jabber: michael at xmpp dot meskes dot org
VfL Borussia! Força Barça! SF 49ers! Use Debian GNU/Linux, PostgreSQL



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

Предыдущее
От: Merlin Moncure
Дата:
Сообщение: Re: [HACKERS] WIP: Aggregation push-down
Следующее
От: Tom Lane
Дата:
Сообщение: Re: [HACKERS] 【ECPG】strncpy function does not set the end character '\0'