[wp-trac] [WordPress Trac] #32703: XMLRPC: wp_editPage doesn't work if username or password contains special characters

WordPress Trac noreply at wordpress.org
Thu Jun 18 14:08:19 UTC 2015

#32703: XMLRPC: wp_editPage doesn't work if username or password contains special
 Reporter:  redsweater    |      Owner:
     Type:  defect (bug)  |     Status:  new
 Priority:  normal        |  Milestone:  Awaiting Review
Component:  XML-RPC       |    Version:  trunk
 Severity:  normal        |   Keywords:
  Focuses:                |
 If a user's password contains a special character that would be escaped by
 the XMLRPC class's escape() method, then it ends up being doubly-escaped
 and thus prevents authentication from succeeding when calling through to

 Although far less likely, a similar problem will cause an escaped
 character in either the page ID parameter or the username parameter to
 also end up being doubly-escaped, causing either authentication error or a
 page lookup failure.

 A canonical example of this bug would be to create a user 'admin' with
 password 'abc"123'. Efforts to edit a page via wp_editPage will result in
 the password being first escaped in wp_editPage to 'abc\"123' and then
 escaped a second time in mw_editPost to 'abc\\\"123', at which time it
 will fail to authenticate the user.

 wp_editPage is the only method among the WP page methods that calls
 through to an underlying method in a problematic way. Other methods either
 pass through the $args directly to an underlying method, or else handle
 the database lookup independently of other methods that would escape the
 parameters on their own.

 The attached patch addresses the problem by escaping parameters for the
 purposes of wp_editPage's own authentication/validation, but passing
 through the original parameters unescaped so that they may be escaped in
 mw_editPost to obtain the expected value.

 I realize it is preferable to switch clients to the post-based wp API
 methods, but since this fix is limited in scope to the wp_editPage method,
 and is a clear improvement, I hope you will accept it as a fix for clients
 who have not yet updated or may never update to the newer API methods.

Ticket URL: <https://core.trac.wordpress.org/ticket/32703>
WordPress Trac <https://core.trac.wordpress.org/>
WordPress publishing platform

More information about the wp-trac mailing list