Fix dbmirror for new backslash escaping:
authorBruce Momjian <[email protected]>
Thu, 6 Jul 2006 02:02:36 +0000 (02:02 +0000)
committerBruce Momjian <[email protected]>
Thu, 6 Jul 2006 02:02:36 +0000 (02:02 +0000)
Martin Pitt [2006-06-16  0:15 +0200]:
> Upstream confirmed my reply in the last mail in [1]: the complete
> escaping logic in DBMirror.pl is seriously screwew.
>
> [1] http://archives.postgresql.org/pgsql-bugs/2006-06/msg00065.php

I finally found some time to debug this, and I think I found a better
patch than the one you proposed. Mine is still hackish and is still a
workaround around a proper quoting solution, but at least it repairs
the parsing without introducing the \' quoting again.

I consider this a band-aid patch to fix the recent security update.
PostgreSQL gurus, would you consider applying this until a better
solution is found for DBMirror.pl?

Martin Pitt        http://www.piware.de

contrib/dbmirror/DBMirror.pl

index d99ed9f03068b1ac603e04cde9c959051a1df84c..ae1c923b2aa085933b20697f1fc62e64170496ed 100755 (executable)
@@ -862,7 +862,7 @@ sub extractData($$) {
        $matchString = $1;
        $value .= substr $matchString,0,length($matchString)-1;
 
-       if($matchString =~ m/(\'$)/s) {
+       if($matchString =~ m/(\'$)/s and (substr $dataField,length($matchString),1) ne "'") {
          # $1 runs to the end of the field value.
            $dataField = substr $dataField,length($matchString)+1;
            last;