diff --git a/randr/rrproviderproperty.c b/randr/rrproviderproperty.c index 0c3dcd1bc..e84e0dff3 100644 --- a/randr/rrproviderproperty.c +++ b/randr/rrproviderproperty.c @@ -182,8 +182,11 @@ RRChangeProviderProperty(RRProviderPtr provider, Atom property, Atom type, if (mode == PropModeReplace || len > 0) { void *new_data = NULL, *old_data = NULL; - if (total_len > MAXINT / size_in_bytes) + if (total_len > MAXINT / size_in_bytes) { + if (add) + RRDestroyProviderProperty(prop); return BadValue; + } total_size = total_len * size_in_bytes; new_value.data = (void *) malloc(total_size); if (!new_value.data && total_size) {