From: Yasuo Ohgaki Date: Tue, 26 Nov 2002 02:15:58 +0000 (+0000) Subject: MFH X-Git-Tag: php-4.3.0RC2~18 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=a5d3a242d1535187fe3267c1f24418ab46bfaa89;p=php MFH --- diff --git a/ext/pgsql/pgsql.c b/ext/pgsql/pgsql.c index f73bf062d6..d5c805495e 100644 --- a/ext/pgsql/pgsql.c +++ b/ext/pgsql/pgsql.c @@ -2710,15 +2710,13 @@ static unsigned char * php_pgsql_unescape_bytea(unsigned char *strtext, size_t * case 3: if (isdigit(*sp)) /* state=4 */ { - unsigned int v,i; - unsigned char buf[4]; /* 000 + '\0' */ - + unsigned char *start, *end, buf[4]; /* 000 + '\0' */ + bp -= 3; - for (i = 0; i < 3; i++) - buf[i] = *((sp-2)+i); - buf[i] = '\0'; - sscanf(buf, "%03o", &v); - *bp = v; + memcpy(buf, sp-2, 3); + buf[3] = '\0'; + start = buf; + *bp = (unsigned char)strtoul(start, (char **)&end, 8); buflen -= 3; state = 0; } @@ -2730,9 +2728,8 @@ static unsigned char * php_pgsql_unescape_bytea(unsigned char *strtext, size_t * break; } } - buffer = erealloc(buffer, buflen); - if (buffer == NULL) - return NULL; + buffer = erealloc(buffer, buflen+1); + buffer[buflen] = '\0'; *retbuflen = buflen; return buffer;