Bruce Momjian <[EMAIL PROTECTED]> writes:
> + /*
> +  * Escape any single quotes or backslashes in locale
> +  */
> + static void
> + escape_locale(char **locale)
> + {
> +     int                     len = strlen(*locale),
> +                             i, j;
> +     char            *loc_temp = xmalloc(len * 2);
> +     
> +     for (i = 0, j = 0; i < len; i++)
> +     {
> +             if ((*locale)[i] == '\'' || (*locale)[i] == '\\')
> +                     loc_temp[j++] = '\\';
> +             loc_temp[j++] = (*locale)[i];
> +     }
> +     *locale = loc_temp;
> + }

Surely this is quite broken.  You need to xmalloc one more byte and
add a '\0'.

                        regards, tom lane

---------------------------(end of broadcast)---------------------------
TIP 5: Have you checked our extensive FAQ?

               http://www.postgresql.org/docs/faqs/FAQ.html

Reply via email to