]> git.apps.os.sepia.ceph.com Git - ceph-ci.git/commit
osd: bump versions of decoders for upmap-primary
authorRadoslaw Zarzynski <rzarzyns@redhat.com>
Tue, 28 May 2024 14:46:25 +0000 (14:46 +0000)
committerLaura Flores <lflores@ibm.com>
Wed, 24 Jul 2024 21:53:07 +0000 (16:53 -0500)
commitc3dcdd87835143650b925e1126ecb4d1b973428e
treeee6f638778141059855f4a8e9c6084664066537f
parenta3bbd7289877bdcce87fd1f79da1a2d6578dde36
osd: bump versions of decoders for upmap-primary

In e9921ee76c06 new revisions for client-usable data of
`OSDMap` (rev 10) and `OSDMap::Incremental` (rev 9) have
been introduced. However, corresponding `DECODE_START` in
decoders haven't been bumped up.

The net effect is a blur between the schemas when somebody
would intentionally (with `malformed_input` being thrown)
want to break compatibility with decoders on those versions
(refer to `struct_compat`).

```
/**
 * start a decoding block
 *
 * @param v current version of the encoding that the code supports/encodes
 * @param bl bufferlist::iterator for the encoded data
 */
  __u8 struct_v, struct_compat; \
  using ::ceph::decode; \
  decode(struct_v, bl); \
  decode(struct_compat, bl); \
  if (v < struct_compat) \
    throw ::ceph::buffer::malformed_input(DECODE_ERR_OLDVERSION(__PRETTY_FUNCTION__, v, struct_compat)); \
  __u32 struct_len; \
  decode(struct_len, bl); \
  if (struct_len > bl.get_remaining()) \
    throw ::ceph::buffer::malformed_input(DECODE_ERR_PAST(__PRETTY_FUNCTION__)); \
  unsigned struct_end = bl.get_off() + struct_len; \
  do {
```

Fixes: https://tracker.ceph.com/issues/66285
Signed-off-by: Radoslaw Zarzynski <rzarzyns@redhat.com>
(cherry picked from commit 0756b702e95d5f84ba7887e4d5d2552a1421827f)
src/osd/OSDMap.cc