Skip to content

Commit 4b2738b

Browse files
Raphael Zimmergregkh
authored andcommitted
libceph: Prevent potential null-ptr-deref in ceph_handle_auth_reply()
commit 5199c12 upstream. If a message of type CEPH_MSG_AUTH_REPLY contains a zero value for both protocol and result, this is currently not treated as an error. In case of ac->negotiating == true and ac->protocol > 0, this leads to setting ac->protocol = 0 and ac->ops = NULL. Thereafter, the check for ac->protocol != protocol returns false, and init_protocol() is not called. Subsequently, ac->ops->handle_reply() is called, which leads to a null pointer dereference, because ac->ops is still NULL. This patch changes the check for ac->protocol != protocol to !ac->protocol, as this also includes the case when the protocol was set to zero in the message. This causes the message to be treated as containing a bad auth protocol. Cc: stable@vger.kernel.org Signed-off-by: Raphael Zimmer <raphael.zimmer@tu-ilmenau.de> Reviewed-by: Ilya Dryomov <idryomov@gmail.com> Signed-off-by: Ilya Dryomov <idryomov@gmail.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
1 parent 92e7c20 commit 4b2738b

1 file changed

Lines changed: 1 addition & 1 deletion

File tree

net/ceph/auth.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -245,7 +245,7 @@ int ceph_handle_auth_reply(struct ceph_auth_client *ac,
245245
ac->protocol = 0;
246246
ac->ops = NULL;
247247
}
248-
if (ac->protocol != protocol) {
248+
if (!ac->protocol) {
249249
ret = init_protocol(ac, protocol);
250250
if (ret) {
251251
pr_err("auth protocol '%s' init failed: %d\n",

0 commit comments

Comments
 (0)