Bug #18293 Values in stored procedure written to binlog unescaped
| Submitted: | 17 Mar 2006 1:57 | Modified: | 25 Mar 2006 19:39 |
|---|---|---|---|
| Reporter: | Jeremy Cole (Basic Quality Contributor) (OCA) | Email Updates: | |
| Status: | Closed | Impact on me: | |
| Category: | MySQL Server | Severity: | S1 (Critical) |
| Version: | 5.0.19 | OS: | |
| Assigned to: | Mats Kindahl | CPU Architecture: | Any |
[17 Mar 2006 3:10]
Dean Ellis
Verified against current 5.0.20 BK tree.
[25 Mar 2006 19:39]
Mike Hillyer
Documented 5.0.20 changelog:
<listitem>
<para>
If a row was inserted inside a stored procedure using the
parameters passed to the procedure in the INSERT statement, the resulting binlog entry was not escaped properly.
(Bug #18293)
</para>
</listitem>
Portions of this website are copyright © 2001, 2002 The PHP Group
Page generated in 0.053 sec. using MySQL 8.4.7-u6-cloud
Timestamp references displayed by the system are UTC.
Content reproduced on this site is the property of the
respective copyright holders.
It is not reviewed in advance
by Oracle and does not necessarily represent the opinion of
Oracle or any other party.
Description: If a row is inserted inside a stored procedure directly using the values passed in to the function, the value string is replaced in the binary log with NAME_VALUE(name, value), but value is not escaped properly, causing queries with ' (single quote) to break the binary log (and replication). How to repeat: delimiter // RESET MASTER // DROP TABLE IF EXISTS t // DROP PROCEDURE IF EXISTS addt // CREATE TABLE t (s CHAR(50)) // CREATE PROCEDURE addt (IN inValue CHAR(50)) BEGIN INSERT INTO t (s) VALUES ( inValue ); END; // CALL addt("Foo's Bar") // SHOW BINLOG EVENTS // You will see this line in the binary log: use `test`; INSERT INTO t (s) VALUES ( NAME_CONST('inValue',_latin1'Foo's Bar') ) Note the unescaped quote. Suggested fix: Fix in sql/item.cc or sql/sp_head.cc (not sure which place it's broken).