Обсуждение: byteain for new hex escaped data

Поиск
Список
Период
Сортировка

byteain for new hex escaped data

От
Kris Jurka
Дата:
Looking at how byteain detects whether the input it is passed is the new 
hex format escape or the old octal escape, it uses:
        char       *inputText = PG_GETARG_CSTRING(0);        if (inputText[0] == '\\' && inputText[1] == 'x')

Doesn't this read off the end of inputText in the case of "SELECT 
''::bytea", or is there some padding happening somewhere that makes this 
legal?

Kris Jurka



Re: byteain for new hex escaped data

От
Peter Eisentraut
Дата:
On ons, 2009-11-18 at 06:46 -0500, Kris Jurka wrote:
> Looking at how byteain detects whether the input it is passed is the new 
> hex format escape or the old octal escape, it uses:
> 
>          char       *inputText = PG_GETARG_CSTRING(0);
>          if (inputText[0] == '\\' && inputText[1] == 'x')
> 
> Doesn't this read off the end of inputText in the case of "SELECT 
> ''::bytea", or is there some padding happening somewhere that makes this 
> legal?

In case of ''::bytea, the inputText is "" as a C string, and so
inputText[0] == '\0' and the second test is not executed.