diff options
author | Simon Ser <contact@emersion.fr> | 2020-01-12 12:29:15 +0100 |
---|---|---|
committer | Scott Anderson <scott@anderso.nz> | 2020-01-13 16:49:08 +1300 |
commit | 6a0d8c85e49e4cdd103005a189f722f7678b0e20 (patch) | |
tree | 515c5ecd1777c3a6b63adb13d3cf641d9212a023 | |
parent | a4b0f9fc6130ee61bfdf3a6abc2642c9f89ba321 (diff) | |
download | external_drm_info-6a0d8c85e49e4cdd103005a189f722f7678b0e20.tar.gz external_drm_info-6a0d8c85e49e4cdd103005a189f722f7678b0e20.tar.bz2 external_drm_info-6a0d8c85e49e4cdd103005a189f722f7678b0e20.zip |
Handle all drmMode* errors
And remove extraneous checks for zero object IDs. See [1].
[1]: https://github.com/ascent12/drm_info/pull/46#discussion_r365556824
-rw-r--r-- | json.c | 20 |
1 files changed, 14 insertions, 6 deletions
@@ -183,6 +183,10 @@ static struct json_object *in_formats_info(int fd, uint32_t blob_id) struct json_object *arr = json_object_new_array(); drmModePropertyBlobRes *blob = drmModeGetPropertyBlob(fd, blob_id); + if (!blob) { + perror("drmModeGetPropertyBlob"); + return NULL; + } struct drm_format_modifier_blob *data = blob->data; @@ -243,12 +247,12 @@ static struct json_object *mode_info(const drmModeModeInfo *mode) static struct json_object *mode_id_info(int fd, uint32_t blob_id) { - if (blob_id == 0) { + drmModePropertyBlobRes *blob = drmModeGetPropertyBlob(fd, blob_id); + if (!blob) { + perror("drmModeGetPropertyBlob"); return NULL; } - drmModePropertyBlobRes *blob = drmModeGetPropertyBlob(fd, blob_id); - drmModeModeInfo *mode = blob->data; struct json_object *obj = mode_info(mode); @@ -263,6 +267,10 @@ static struct json_object *writeback_pixel_formats_info(int fd, uint32_t blob_id struct json_object *arr = json_object_new_array(); drmModePropertyBlobRes *blob = drmModeGetPropertyBlob(fd, blob_id); + if (!blob) { + perror("drmModeGetPropertyBlob"); + return NULL; + } uint32_t *fmts = blob->data; uint32_t fmts_len = blob->length / sizeof(uint32_t); @@ -277,12 +285,12 @@ static struct json_object *writeback_pixel_formats_info(int fd, uint32_t blob_id static struct json_object *path_info(int fd, uint32_t blob_id) { - if (blob_id == 0) { + drmModePropertyBlobRes *blob = drmModeGetPropertyBlob(fd, blob_id); + if (!blob) { + perror("drmModeGetPropertyBlob"); return NULL; } - drmModePropertyBlobRes *blob = drmModeGetPropertyBlob(fd, blob_id); - struct json_object *obj = json_object_new_string_len(blob->data, blob->length); drmModeFreePropertyBlob(blob); |