]> granicus.if.org Git - php/commitdiff
MFH
authorYasuo Ohgaki <yohgaki@php.net>
Tue, 26 Nov 2002 02:15:58 +0000 (02:15 +0000)
committerYasuo Ohgaki <yohgaki@php.net>
Tue, 26 Nov 2002 02:15:58 +0000 (02:15 +0000)
ext/pgsql/pgsql.c

index f73bf062d6ba0b26b28ad698509fecd11845b323..d5c805495e6f0d2d740fe20588e3ba139826a9fb 100644 (file)
@@ -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;