xf86drm: Fix error handling for drmGetDevice()
Some of the error conditions in drmGetDevice() can lead to us calling
closedir(NULL) or leaking memory. Fix these conditions the same way we
did for drmGetDevices() in commit:
commit 8c4a1cbd98
Author: Matt Roper <matthew.d.roper@intel.com>
Date: Wed Sep 30 09:30:51 2015 -0700
xf86drm: Fix error handling for drmGetDevices()
Signed-off-by: Matt Roper <matthew.d.roper@intel.com>
Reviewed-by: Emil Velikov <emil.l.velikov@gmail.com>
main
parent
3045523de2
commit
cf0f036e3d
10
xf86drm.c
10
xf86drm.c
|
@ -3108,7 +3108,7 @@ int drmGetDevice(int fd, drmDevicePtr *device)
|
|||
sysdir = opendir(DRM_DIR_NAME);
|
||||
if (!sysdir) {
|
||||
ret = -errno;
|
||||
goto close_sysdir;
|
||||
goto free_locals;
|
||||
}
|
||||
|
||||
i = 0;
|
||||
|
@ -3165,16 +3165,16 @@ int drmGetDevice(int fd, drmDevicePtr *device)
|
|||
for (i = 1; i < node_count && local_devices[i]; i++)
|
||||
drmFreeDevice(&local_devices[i]);
|
||||
|
||||
free(local_devices);
|
||||
closedir(sysdir);
|
||||
free(local_devices);
|
||||
return 0;
|
||||
|
||||
free_devices:
|
||||
drmFreeDevices(local_devices, i);
|
||||
free(local_devices);
|
||||
|
||||
close_sysdir:
|
||||
closedir(sysdir);
|
||||
|
||||
free_locals:
|
||||
free(local_devices);
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue