Change all g_memdup() to g_memdup2()

Using g_memdup() is dangerous due to the type of the size argument. See
https://gitlab.gnome.org/GNOME/glib/-/issues/2319 and
https://gitlab.gnome.org/GNOME/glib/-/merge_requests/1926 for details.

Part-of: <https://gitlab.gnome.org/GNOME/mutter/-/merge_requests/1708>
This commit is contained in:
Jonas Ådahl
2021-02-04 18:45:59 +01:00
parent 70c5febdd9
commit 30e1c51b33
19 changed files with 75 additions and 50 deletions

View File

@ -666,7 +666,7 @@ meta_input_settings_native_set_tablet_aspect_ratio (MetaInputSettings *settings
task = g_task_new (device, NULL, NULL, NULL);
g_task_set_task_data (task,
g_memdup (&aspect_ratio, sizeof (double)),
g_memdup2 (&aspect_ratio, sizeof (double)),
g_free);
input_settings_native = META_INPUT_SETTINGS_NATIVE (settings);

View File

@ -273,11 +273,11 @@ meta_kms_crtc_predict_state (MetaKmsCrtc *crtc,
clear_gamma_state (crtc);
crtc->current_state.gamma.size = gamma->size;
crtc->current_state.gamma.red =
g_memdup (gamma->red, gamma->size * sizeof (uint16_t));
g_memdup2 (gamma->red, gamma->size * sizeof (uint16_t));
crtc->current_state.gamma.green =
g_memdup (gamma->green, gamma->size * sizeof (uint16_t));
g_memdup2 (gamma->green, gamma->size * sizeof (uint16_t));
crtc->current_state.gamma.blue =
g_memdup (gamma->blue, gamma->size * sizeof (uint16_t));
g_memdup2 (gamma->blue, gamma->size * sizeof (uint16_t));
break;
}

View File

@ -263,7 +263,7 @@ cached_mode_set_new (GList *connectors,
cached_mode_set = g_new0 (CachedModeSet, 1);
*cached_mode_set = (CachedModeSet) {
.connectors = g_list_copy (connectors),
.drm_mode = g_memdup (drm_mode, sizeof *drm_mode),
.drm_mode = g_memdup2 (drm_mode, sizeof *drm_mode),
};
return cached_mode_set;

View File

@ -364,9 +364,9 @@ meta_kms_crtc_gamma_new (MetaKmsCrtc *crtc,
*gamma = (MetaKmsCrtcGamma) {
.crtc = crtc,
.size = size,
.red = g_memdup (red, size * sizeof (*red)),
.green = g_memdup (green, size * sizeof (*green)),
.blue = g_memdup (blue, size * sizeof (*blue)),
.red = g_memdup2 (red, size * sizeof (*red)),
.green = g_memdup2 (green, size * sizeof (*green)),
.blue = g_memdup2 (blue, size * sizeof (*blue)),
};
return gamma;

View File

@ -353,9 +353,9 @@ meta_monitor_manager_kms_get_crtc_gamma (MetaMonitorManager *manager,
crtc_state = meta_kms_crtc_get_current_state (kms_crtc);
*size = crtc_state->gamma.size;
*red = g_memdup (crtc_state->gamma.red, *size * sizeof **red);
*green = g_memdup (crtc_state->gamma.green, *size * sizeof **green);
*blue = g_memdup (crtc_state->gamma.blue, *size * sizeof **blue);
*red = g_memdup2 (crtc_state->gamma.red, *size * sizeof **red);
*green = g_memdup2 (crtc_state->gamma.green, *size * sizeof **green);
*blue = g_memdup2 (crtc_state->gamma.blue, *size * sizeof **blue);
}
static char *