[Phpmyadmin-devel] split_sql_file produces sometimes wrong pieces

Benjamin Gandon gandon at isia.cma.fr
Fri Aug 3 03:06:19 CEST 2001


> (210,20010731131330,'Matrix','dadad' in Zeile 1.
>                           ^ here is the problem.

Not exactly. :)
It's in fact there:
(209,20010731131330,'Matrix','(\'dadada\')',1);
                                         ^
because of that line of code in lib.inc.php3:
 
1480:           if ($last_char == $in_string && $char == ')') {
1481:                $in_string = FALSE;
1482:            }
 

> if you remove the parenthesis in the second row, readdump has 
> no problems.

Yes, that's the question I was asking to pete kelly about split_sql(). 

Actually, there is another big bug in this function that is here 
since the very begining of phpMyAdmin. Try that kind of manual SQL 
insert and it won't work: 
insert into table values ('\\');insert into table values ('\\');

The thing is that you have to know if there is an odd number of 
backslashes before a quote to know if it is escaped or not.
Previously, split_sql_file() only checked if there was a backslash 
before a quote. But that backslash could be escaped by another 
backslash.
The new alorithm I coded should be ok in that matter.

I've already recoded the function and I just managed to commit my 
changes (curiously I had to try to connect to cvs.sf.net with ssh 
to create my home directory there and then be able to connect to 
cvs via ssh...)


> The problem in split_sql_file is row 1480 which try to detect the last
> ')' char.

Exactly. And that's a quick hack (Pete didn't answer my question about 
it in my message "a bit of story about split_string()").


	Benjamin




More information about the Developers mailing list