dix: dixChangeWindowProperty: don't call memcpy if malloc failed

It shouldn't matter, since it would have a length of 0, but it
clears warnings from gcc 14.1:

../dix/property.c: In function ‘dixChangeWindowProperty’:
../dix/property.c:287:9: warning: use of possibly-NULL ‘data’ where
 non-null expected [CWE-690] [-Wanalyzer-possible-null-argument]
  287 |         memcpy(data, value, totalSize);
      |         ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
../dix/property.c:324:13: warning: use of possibly-NULL ‘data’ where
 non-null expected [CWE-690] [-Wanalyzer-possible-null-argument]
  324 |             memcpy(data, value, totalSize);
      |             ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Signed-off-by: Alan Coopersmith <alan.coopersmith@oracle.com>
Part-of: <https://gitlab.freedesktop.org/xorg/xserver/-/merge_requests/1673>
This commit is contained in:
Alan Coopersmith 2024-09-08 11:03:41 -07:00
parent 462d13c2f6
commit 10cafd0bbe

View File

@ -280,11 +280,13 @@ dixChangeWindowProperty(ClientPtr pClient, WindowPtr pWin, Atom property,
if (!pProp)
return BadAlloc;
data = malloc(totalSize);
if (!data && len) {
dixFreeObjectWithPrivates(pProp, PRIVATE_PROPERTY);
return BadAlloc;
if (totalSize) {
if (!data) {
dixFreeObjectWithPrivates(pProp, PRIVATE_PROPERTY);
return BadAlloc;
}
memcpy(data, value, totalSize);
}
memcpy(data, value, totalSize);
pProp->propertyName = property;
pProp->type = type;
pProp->format = format;
@ -317,9 +319,11 @@ dixChangeWindowProperty(ClientPtr pClient, WindowPtr pWin, Atom property,
if (mode == PropModeReplace) {
data = malloc(totalSize);
if (!data && len)
return BadAlloc;
memcpy(data, value, totalSize);
if (totalSize) {
if (!data)
return BadAlloc;
memcpy(data, value, totalSize);
}
pProp->data = data;
pProp->size = len;
pProp->type = type;