diff options
author | Emil Velikov <[email protected]> | 2015-11-23 20:26:55 +0000 |
---|---|---|
committer | Emil Velikov <[email protected]> | 2015-11-29 14:38:22 +0000 |
commit | 5f92906b876d5463efba3ffb19c1de0dcb3c755f (patch) | |
tree | b0b0e03fa79b1cee52e357bab53eedefffb5db0f /src | |
parent | 866a1f7fddcf38c0cd40fc7b9509e562353e1acc (diff) |
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: [email protected]
Signed-off-by: Emil Velikov <[email protected]>
Diffstat (limited to 'src')
-rw-r--r-- | src/gallium/auxiliary/pipe-loader/pipe_loader_sw.c | 8 |
1 files 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; |