diff options
author | Berthold Stoeger <bstoeger@mail.tuwien.ac.at> | 2018-10-15 12:27:35 +0200 |
---|---|---|
committer | Dirk Hohndel <dirk@hohndel.org> | 2018-10-15 12:50:44 -0400 |
commit | 471fc1dfc8c9801aeeb2fa154e13e42c05fc9285 (patch) | |
tree | 05e1fac1bbad3bb5f8d677f02d28ef26a747de62 /core/dive.c | |
parent | 604d563a87af40e58b2f488c373fa9e873403a39 (diff) | |
download | subsurface-471fc1dfc8c9801aeeb2fa154e13e42c05fc9285.tar.gz |
Dive list: fix crash on dive import
In commit 8c2383b4952fa22d41745d29484462ed6a67112b dive merging was
changed to not modify the original dive. On import, dives were then
merged and the original deleted. The merge_weightsystem_info() was
not adapted accordingly (deep copy of string instead of pointer),
leading to a use-after-free crash.
Resolve this by doing a deep copy.
Signed-off-by: Berthold Stoeger <bstoeger@mail.tuwien.ac.at>
Diffstat (limited to 'core/dive.c')
-rw-r--r-- | core/dive.c | 3 |
1 files changed, 2 insertions, 1 deletions
diff --git a/core/dive.c b/core/dive.c index f44bfc3c1..5c3cd2393 100644 --- a/core/dive.c +++ b/core/dive.c @@ -2130,7 +2130,8 @@ static void merge_weightsystem_info(weightsystem_t *res, const weightsystem_t *a { if (!a->weight.grams) a = b; - *res = *a; + res->weight = a->weight; + res->description = copy_string(a->description); } /* get_cylinder_idx_by_use(): Find the index of the first cylinder with a particular CCR use type. |