Skip to content

Commit e1bb33e

Browse files
Change all g_memdup() to g_memdup2() (#699)
Using g_memdup() is dangerous due to the type of the size argument.
1 parent c083b7e commit e1bb33e

18 files changed

+68
-50
lines changed

clutter/clutter/clutter-event.c

Lines changed: 20 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1412,29 +1412,41 @@ clutter_event_copy (const ClutterEvent *event)
14121412
case CLUTTER_BUTTON_PRESS:
14131413
case CLUTTER_BUTTON_RELEASE:
14141414
if (event->button.axes != NULL)
1415-
new_event->button.axes = g_memdup (event->button.axes,
1416-
sizeof (gdouble) * n_axes);
1415+
{
1416+
new_event->button.axes =
1417+
g_memdup2 (event->button.axes,
1418+
sizeof (double) * n_axes);
1419+
}
14171420
break;
14181421

14191422
case CLUTTER_SCROLL:
14201423
if (event->scroll.axes != NULL)
1421-
new_event->scroll.axes = g_memdup (event->scroll.axes,
1422-
sizeof (gdouble) * n_axes);
1424+
{
1425+
new_event->scroll.axes =
1426+
g_memdup2 (event->scroll.axes,
1427+
sizeof (double) * n_axes);
1428+
}
14231429
break;
14241430

14251431
case CLUTTER_MOTION:
14261432
if (event->motion.axes != NULL)
1427-
new_event->motion.axes = g_memdup (event->motion.axes,
1428-
sizeof (gdouble) * n_axes);
1433+
{
1434+
new_event->motion.axes =
1435+
g_memdup2 (event->motion.axes,
1436+
sizeof (double) * n_axes);
1437+
}
14291438
break;
14301439

14311440
case CLUTTER_TOUCH_BEGIN:
14321441
case CLUTTER_TOUCH_UPDATE:
14331442
case CLUTTER_TOUCH_END:
14341443
case CLUTTER_TOUCH_CANCEL:
14351444
if (event->touch.axes != NULL)
1436-
new_event->touch.axes = g_memdup (event->touch.axes,
1437-
sizeof (gdouble) * n_axes);
1445+
{
1446+
new_event->touch.axes =
1447+
g_memdup2 (event->touch.axes,
1448+
sizeof (double) * n_axes);
1449+
}
14381450
break;
14391451

14401452
case CLUTTER_IM_COMMIT:

clutter/clutter/clutter-shader-types.c

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -157,7 +157,8 @@ clutter_value_lcopy_shader_float (const GValue *value,
157157
G_VALUE_TYPE_NAME (value));
158158

159159
*float_count = shader_float->size;
160-
*floats = g_memdup (shader_float->value, shader_float->size * sizeof (float));
160+
*floats = g_memdup2 (shader_float->value,
161+
shader_float->size * sizeof (float));
161162

162163
return NULL;
163164
}
@@ -248,7 +249,7 @@ clutter_value_lcopy_shader_int (const GValue *value,
248249
G_VALUE_TYPE_NAME (value));
249250

250251
*int_count = shader_int->size;
251-
*ints = g_memdup (shader_int->value, shader_int->size * sizeof (int));
252+
*ints = g_memdup2 (shader_int->value, shader_int->size * sizeof (int));
252253

253254
return NULL;
254255
}
@@ -339,8 +340,10 @@ clutter_value_lcopy_shader_matrix (const GValue *value,
339340
G_VALUE_TYPE_NAME (value));
340341

341342
*float_count = shader_float->size;
342-
*floats = g_memdup (shader_float->value,
343-
shader_float->size * shader_float->size * sizeof (float));
343+
*floats = g_memdup2 (shader_float->value,
344+
shader_float->size *
345+
shader_float->size *
346+
sizeof (float));
344347

345348
return NULL;
346349
}

cogl/cogl/cogl-boxed-value.c

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -254,21 +254,21 @@ _cogl_boxed_value_copy (CoglBoxedValue *dst,
254254
break;
255255

256256
case COGL_BOXED_INT:
257-
dst->v.int_array = g_memdup (src->v.int_array,
258-
src->size * src->count * sizeof (int));
257+
dst->v.int_array = g_memdup2 (src->v.int_array,
258+
src->size * src->count * sizeof (int));
259259
break;
260260

261261
case COGL_BOXED_FLOAT:
262-
dst->v.float_array = g_memdup (src->v.float_array,
263-
src->size *
264-
src->count *
265-
sizeof (float));
262+
dst->v.float_array = g_memdup2 (src->v.float_array,
263+
src->size *
264+
src->count *
265+
sizeof (float));
266266
break;
267267

268268
case COGL_BOXED_MATRIX:
269-
dst->v.float_array = g_memdup (src->v.float_array,
270-
src->size * src->size *
271-
src->count * sizeof (float));
269+
dst->v.float_array = g_memdup2 (src->v.float_array,
270+
src->size * src->size *
271+
src->count * sizeof (float));
272272
break;
273273
}
274274
}

meson.build

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ libmutter_api_version = '@0@'.format(api_version)
1111

1212
# generic version requirements
1313
fribidi_req = '>= 1.0.0'
14-
glib_req = '>= 2.61.1'
14+
glib_req = '>= 2.67.3'
1515
gi_req = '>= 0.9.5'
1616
graphene_req = '>= 1.9.3'
1717
gtk3_req = '>= 3.19.8'

src/backends/meta-monitor-config-manager.c

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -646,7 +646,7 @@ create_monitor_config (MetaMonitor *monitor,
646646
monitor_config = g_new0 (MetaMonitorConfig, 1);
647647
*monitor_config = (MetaMonitorConfig) {
648648
.monitor_spec = meta_monitor_spec_clone (monitor_spec),
649-
.mode_spec = g_memdup (mode_spec, sizeof (MetaMonitorModeSpec)),
649+
.mode_spec = g_memdup2 (mode_spec, sizeof (MetaMonitorModeSpec)),
650650
.enable_underscanning = meta_monitor_is_underscanning (monitor)
651651
};
652652

@@ -1030,8 +1030,8 @@ clone_monitor_config_list (GList *monitor_configs_in)
10301030
monitor_config_out = g_new0 (MetaMonitorConfig, 1);
10311031
*monitor_config_out = (MetaMonitorConfig) {
10321032
.monitor_spec = meta_monitor_spec_clone (monitor_config_in->monitor_spec),
1033-
.mode_spec = g_memdup (monitor_config_in->mode_spec,
1034-
sizeof (MetaMonitorModeSpec)),
1033+
.mode_spec = g_memdup2 (monitor_config_in->mode_spec,
1034+
sizeof (MetaMonitorModeSpec)),
10351035
.enable_underscanning = monitor_config_in->enable_underscanning
10361036
};
10371037
monitor_configs_out =
@@ -1054,7 +1054,8 @@ clone_logical_monitor_config_list (GList *logical_monitor_configs_in)
10541054
logical_monitor_config_in = l->data;
10551055

10561056
logical_monitor_config_out =
1057-
g_memdup (logical_monitor_config_in, sizeof (MetaLogicalMonitorConfig));
1057+
g_memdup2 (logical_monitor_config_in,
1058+
sizeof (MetaLogicalMonitorConfig));
10581059
logical_monitor_config_out->monitor_configs =
10591060
clone_monitor_config_list (logical_monitor_config_in->monitor_configs);
10601061

src/backends/meta-monitor-manager-dummy.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -179,7 +179,7 @@ append_monitor (MetaMonitorManager *manager,
179179
{
180180
CrtcModeSpec *spec;
181181

182-
spec = g_memdup (&default_specs[i], sizeof (CrtcModeSpec));
182+
spec = g_memdup2 (&default_specs[i], sizeof (CrtcModeSpec));
183183
mode_specs = g_list_prepend (mode_specs, spec);
184184
}
185185
}

src/backends/native/meta-kms-connector.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -354,7 +354,7 @@ state_set_modes (MetaKmsConnectorState *state,
354354
drmModeConnector *drm_connector)
355355
{
356356
state->modes =
357-
g_memdup (drm_connector->modes,
357+
g_memdup2 (drm_connector->modes,
358358
drm_connector->count_modes * sizeof (drmModeModeInfo));
359359
state->n_modes = drm_connector->count_modes;
360360
}

src/backends/native/meta-kms-crtc.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -201,11 +201,11 @@ meta_kms_crtc_predict_state (MetaKmsCrtc *crtc,
201201
clear_gamma_state (crtc);
202202
crtc->current_state.gamma.size = gamma->size;
203203
crtc->current_state.gamma.red =
204-
g_memdup (gamma->red, gamma->size * sizeof (uint16_t));
204+
g_memdup2 (gamma->red, gamma->size * sizeof (uint16_t));
205205
crtc->current_state.gamma.green =
206-
g_memdup (gamma->green, gamma->size * sizeof (uint16_t));
206+
g_memdup2 (gamma->green, gamma->size * sizeof (uint16_t));
207207
crtc->current_state.gamma.blue =
208-
g_memdup (gamma->blue, gamma->size * sizeof (uint16_t));
208+
g_memdup2 (gamma->blue, gamma->size * sizeof (uint16_t));
209209

210210
break;
211211
}

src/backends/native/meta-kms-impl-simple.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -145,7 +145,7 @@ cached_mode_set_new (GList *connectors,
145145
cached_mode_set = g_new0 (CachedModeSet, 1);
146146
*cached_mode_set = (CachedModeSet) {
147147
.connectors = g_list_copy (connectors),
148-
.drm_mode = g_memdup (drm_mode, sizeof *drm_mode),
148+
.drm_mode = g_memdup2 (drm_mode, sizeof *drm_mode),
149149
};
150150

151151
return cached_mode_set;

src/backends/native/meta-kms-update.c

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -221,7 +221,7 @@ meta_kms_update_mode_set (MetaKmsUpdate *update,
221221
*mode_set = (MetaKmsModeSet) {
222222
.crtc = crtc,
223223
.connectors = connectors,
224-
.drm_mode = drm_mode ? g_memdup (drm_mode, sizeof *drm_mode) : NULL,
224+
.drm_mode = drm_mode ? g_memdup2 (drm_mode, sizeof *drm_mode) : NULL,
225225
};
226226

227227
update->mode_sets = g_list_prepend (update->mode_sets, mode_set);
@@ -273,9 +273,9 @@ meta_kms_update_set_crtc_gamma (MetaKmsUpdate *update,
273273
*gamma = (MetaKmsCrtcGamma) {
274274
.crtc = crtc,
275275
.size = size,
276-
.red = g_memdup (red, size * sizeof *red),
277-
.green = g_memdup (green, size * sizeof *green),
278-
.blue = g_memdup (blue, size * sizeof *blue),
276+
.red = g_memdup2 (red, size * sizeof *red),
277+
.green = g_memdup2 (green, size * sizeof *green),
278+
.blue = g_memdup2 (blue, size * sizeof *blue),
279279
};
280280

281281
update->crtc_gammas = g_list_prepend (update->crtc_gammas, gamma);

0 commit comments

Comments
 (0)