If m_list.size() == 0, then calling select_generated(0) will result in
uninitialized data being assigned to m_object, which will cause a segfault
down the road. This patch fixes that.
To Reproduce:
$ ceph-dencoder type MWatchNotify select_test 0 encode decode
Segmentation fault (core dumped)
After the patch:
$ ./ceph-dencoder type MWatchNotify select_test 0 encode decode
error: invalid id for generated object
$ echo $?
1
Fixes: #6510
Signed-off-by: Alan Somers <asomers@gmail.com>
// allow 0- or 1-based (by wrapping)
if (i == 0)
i = m_list.size();
- if (i > m_list.size())
+ if ((i == 0) || (i > m_list.size()))
return "invalid id for generated object";
typename list<T*>::iterator p = m_list.begin();
for (i--; i > 0 && p != m_list.end(); ++p, --i) ;
// allow 0- or 1-based (by wrapping)
if (i == 0)
i = m_list.size();
- if (i > m_list.size())
+ if ((i == 0) || (i > m_list.size()))
return "invalid id for generated object";
typename list<T*>::iterator p = m_list.begin();
for (i--; i > 0 && p != m_list.end(); ++p, --i) ;