diff options
Diffstat (limited to 'src')
-rw-r--r-- | src/libwifi/gen/management/action.c | 8 |
1 files changed, 3 insertions, 5 deletions
diff --git a/src/libwifi/gen/management/action.c b/src/libwifi/gen/management/action.c index dc37987..644f07a 100644 --- a/src/libwifi/gen/management/action.c +++ b/src/libwifi/gen/management/action.c | |||
@@ -22,7 +22,7 @@ | |||
22 | size_t libwifi_add_action_detail(struct libwifi_action_detail *detail, const unsigned char *data, | 22 | size_t libwifi_add_action_detail(struct libwifi_action_detail *detail, const unsigned char *data, |
23 | size_t data_len) { | 23 | size_t data_len) { |
24 | if (detail->detail_length != 0) { | 24 | if (detail->detail_length != 0) { |
25 | detail->detail = realloc(detail->detail, data_len); | 25 | detail->detail = realloc(detail->detail, data_len + detail->detail_length); |
26 | } else { | 26 | } else { |
27 | detail->detail = malloc(data_len); | 27 | detail->detail = malloc(data_len); |
28 | } | 28 | } |
@@ -31,10 +31,8 @@ size_t libwifi_add_action_detail(struct libwifi_action_detail *detail, const uns | |||
31 | return -EINVAL; | 31 | return -EINVAL; |
32 | } | 32 | } |
33 | 33 | ||
34 | detail->detail_length = data_len; | 34 | memcpy(detail->detail + detail->detail_length, data, data_len); |
35 | 35 | detail->detail_length += data_len; | |
36 | memcpy(detail->detail, data, data_len); | ||
37 | detail->detail_length = data_len; | ||
38 | 36 | ||
39 | return detail->detail_length; | 37 | return detail->detail_length; |
40 | } | 38 | } |