]> git.apps.os.sepia.ceph.com Git - ceph.git/commitdiff
osd/Session: fix invalid iterator dereference in Sessoin::have_backoff() 22497/head
authorSage Weil <sage@redhat.com>
Sun, 10 Jun 2018 18:37:56 +0000 (13:37 -0500)
committerSage Weil <sage@redhat.com>
Sun, 10 Jun 2018 18:37:56 +0000 (13:37 -0500)
If p is i->second.end(), we do want to back up a position, but we
shouldn't dereference p for p->first.

Fixes: http://tracker.ceph.com/issues/24486
Signed-off-by: Sage Weil <sage@redhat.com>
src/osd/Session.h

index 3ef40f4102ae0854e18a90ed3a23a108b4112358..76b892c9dabcb6d59205e8e9cc23b11e5862a2b5 100644 (file)
@@ -177,7 +177,7 @@ struct Session : public RefCountedObject {
     }
     auto p = i->second.lower_bound(oid);
     if (p != i->second.begin() &&
-       p->first > oid) {
+       (p == i->second.end() || p->first > oid)) {
       --p;
     }
     if (p != i->second.end()) {