]> git-server-git.apps.pok.os.sepia.ceph.com Git - ceph.git/commit
rgwlc: fix a likely null dereference in LCObjsLister::get_obj() 69084/head
authorMatt Benjamin <mbenjamin@redhat.com>
Tue, 12 May 2026 16:48:43 +0000 (12:48 -0400)
committerMatt Benjamin <mbenjamin@redhat.com>
Mon, 25 May 2026 16:28:22 +0000 (12:28 -0400)
commitb2f5d1876ef9e30449f8d95df8fe0b6fd277f01c
treef377556eb362e1dae79a407650d347d530ed8b1a
parent7d55b7abb30980b25d551ceb842e574c71803b0e
rgwlc: fix a likely null dereference in LCObjsLister::get_obj()

Found by Opus 4.6:

  In get_obj() (lines 417-446), when obj_iter ==
  list_results.objs.end() and the listing is truncated, the code calls
  fetch() to get the next batch. fetch() sets obj_iter =
  list_results.objs.begin(). But if the new fetch returns zero objects
  (possible if objects were deleted between listing batches, or due to
  filtering/race conditions), then begin() == end() and the code falls
  through to line 437:

  if (obj_iter->key.name == pre_obj.key.name) {

  This dereferences end() — undefined behavior / crash. The
  return-value check at line 445 (return obj_iter !=
  list_results.objs.end()) comes too late; the dereference already
  happened.

Fixes: https://tracker.ceph.com/issues/76790
Signed-off-by: Matt Benjamin <mbenjamin@redhat.com>
Assisted-by: Claude Code, Opus 4.6 1M
src/rgw/rgw_lc.cc