mirror of
https://github.com/openvswitch/ovs
synced 2025-08-31 06:15:47 +00:00
flow: Fix hypothetical memory leak in miniflow_move().
Ordinarily a miniflow will use its inline_values if its values can fit, but there is nothing to prevent a small number of values from being stored in malloc()'d memory. If this happened, then miniflow_move() would leak memory. This commit fixes the problem. This is a hypothetical problem. I haven't seen it in practice. Signed-off-by: Ben Pfaff <blp@nicira.com> Acked-by: Ethan Jackson <ethan@nicira.com>
This commit is contained in:
@@ -1141,10 +1141,10 @@ miniflow_clone(struct miniflow *dst, const struct miniflow *src)
|
||||
void
|
||||
miniflow_move(struct miniflow *dst, struct miniflow *src)
|
||||
{
|
||||
int n = miniflow_n_values(src);
|
||||
if (n <= MINI_N_INLINE) {
|
||||
if (src->values == src->inline_values) {
|
||||
dst->values = dst->inline_values;
|
||||
memcpy(dst->values, src->values, n * sizeof *dst->values);
|
||||
memcpy(dst->values, src->values,
|
||||
miniflow_n_values(src) * sizeof *dst->values);
|
||||
} else {
|
||||
dst->values = src->values;
|
||||
}
|
||||
|
Reference in New Issue
Block a user