mirror of
https://github.com/samba-team/samba.git
synced 2024-12-22 13:34:15 +03:00
ldb_msg: remove_element() checks element array bounds
Previously we half-heartedly checked one end. Signed-off-by: Douglas Bagnall <douglas.bagnall@catalyst.net.nz> Reviewed-by: Andrew Bartlett <abartlet@samba.org>
This commit is contained in:
parent
652a4015e6
commit
06a02cb88c
@ -1222,14 +1222,14 @@ int ldb_msg_copy_attr(struct ldb_message *msg, const char *attr, const char *rep
|
||||
void ldb_msg_remove_element(struct ldb_message *msg, struct ldb_message_element *el)
|
||||
{
|
||||
ptrdiff_t n = (el - msg->elements);
|
||||
if (n >= msg->num_elements) {
|
||||
/* should we abort() here? */
|
||||
if (n >= msg->num_elements || n < 0) {
|
||||
/* the element is not in the list. the caller is crazy. */
|
||||
return;
|
||||
}
|
||||
if (n != msg->num_elements-1) {
|
||||
memmove(el, el+1, ((msg->num_elements-1) - n)*sizeof(*el));
|
||||
}
|
||||
msg->num_elements--;
|
||||
if (n != msg->num_elements) {
|
||||
memmove(el, el+1, (msg->num_elements - n)*sizeof(*el));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user