From 5f92906b876d5463efba3ffb19c1de0dcb3c755f Mon Sep 17 00:00:00 2001 From: Emil Velikov Date: Mon, 23 Nov 2015 20:26:55 +0000 Subject: [PATCH] pipe-loader: check if winsys.name is non-null prior to strcmp In theory this wouldn't be an issue, as we'll find the correct name and break out of the loop before we hit the sentinel. Let's fix this and avoid issues in the future. Spotted by Coverity (CID 1339869, 1339870, 1339871) Cc: mesa-stable@lists.freedesktop.org Signed-off-by: Emil Velikov --- src/gallium/auxiliary/pipe-loader/pipe_loader_sw.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/src/gallium/auxiliary/pipe-loader/pipe_loader_sw.c b/src/gallium/auxiliary/pipe-loader/pipe_loader_sw.c index 02ceb44c4d3..c8e1f134c99 100644 --- a/src/gallium/auxiliary/pipe-loader/pipe_loader_sw.c +++ b/src/gallium/auxiliary/pipe-loader/pipe_loader_sw.c @@ -137,7 +137,7 @@ pipe_loader_sw_probe_dri(struct pipe_loader_device **devs, struct drisw_loader_f if (!pipe_loader_sw_probe_init_common(sdev)) goto fail; - for (i = 0; sdev->dd->winsys; i++) { + for (i = 0; sdev->dd->winsys[i].name; i++) { if (strcmp(sdev->dd->winsys[i].name, "dri") == 0) { sdev->ws = sdev->dd->winsys[i].create_winsys(drisw_lf); break; @@ -169,7 +169,7 @@ pipe_loader_sw_probe_kms(struct pipe_loader_device **devs, int fd) if (!pipe_loader_sw_probe_init_common(sdev)) goto fail; - for (i = 0; sdev->dd->winsys; i++) { + for (i = 0; sdev->dd->winsys[i].name; i++) { if (strcmp(sdev->dd->winsys[i].name, "kms_dri") == 0) { sdev->ws = sdev->dd->winsys[i].create_winsys(fd); break; @@ -200,7 +200,7 @@ pipe_loader_sw_probe_null(struct pipe_loader_device **devs) if (!pipe_loader_sw_probe_init_common(sdev)) goto fail; - for (i = 0; sdev->dd->winsys; i++) { + for (i = 0; sdev->dd->winsys[i].name; i++) { if (strcmp(sdev->dd->winsys[i].name, "null") == 0) { sdev->ws = sdev->dd->winsys[i].create_winsys(); break; @@ -245,7 +245,7 @@ pipe_loader_sw_probe_wrapped(struct pipe_loader_device **dev, if (!pipe_loader_sw_probe_init_common(sdev)) goto fail; - for (i = 0; sdev->dd->winsys; i++) { + for (i = 0; sdev->dd->winsys[i].name; i++) { if (strcmp(sdev->dd->winsys[i].name, "wrapped") == 0) { sdev->ws = sdev->dd->winsys[i].create_winsys(screen); break; -- 2.30.2