]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commitdiff
osd/Session: fix invalid iterator dereference in Sessoin::have_backoff() 22729/head
authorSage Weil <sage@redhat.com>
Sun, 10 Jun 2018 18:37:56 +0000 (13:37 -0500)
committerPrashant D <pdhange@redhat.com>
Wed, 27 Jun 2018 00:08:05 +0000 (20:08 -0400)
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>
(cherry picked from commit 2d7bfafa879ca1475173a74a84c66fd7f5e1b6bc)

src/osd/Session.h

index 8e26a7262d212ea4680738047636cea08b8322e5..898886dee1df8b7c200c1cf50d275cc64643576b 100644 (file)
@@ -175,7 +175,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()) {