byteain for new hex escaped data

Started by Kris Jurkaabout 16 years ago2 messages
#1Kris Jurka
books@ejurka.com

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

#2Peter Eisentraut
peter_e@gmx.net
In reply to: Kris Jurka (#1)
Re: byteain for new hex escaped data

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.