Mesa (master): util/xmlconfig: fix sha1 comparison code

GitLab Mirror gitlab-mirror at kemper.freedesktop.org
Fri Apr 3 10:06:32 UTC 2020


Module: Mesa
Branch: master
Commit: 43f785419cba3072fdfd3130ce3e51b37485739d
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=43f785419cba3072fdfd3130ce3e51b37485739d

Author: Pierre-Eric Pelloux-Prayer <pierre-eric.pelloux-prayer at amd.com>
Date:   Fri Apr  3 09:25:05 2020 +0200

util/xmlconfig: fix sha1 comparison code

Fixes: 8f48e7b1e99 ("util/xmlconfig: add new sha1 application attribute")
Closes: https://gitlab.freedesktop.org/mesa/mesa/-/issues/2730
Reviewed-by: Dave Airlie <airlied at redhat.com>
Tested-by: Marge Bot <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4426>
Part-of: <https://gitlab.freedesktop.org/mesa/mesa/-/merge_requests/4426>

---

 src/util/xmlconfig.c | 9 +++++----
 1 file changed, 5 insertions(+), 4 deletions(-)

diff --git a/src/util/xmlconfig.c b/src/util/xmlconfig.c
index 0ef67ab7b76..4ddad79e8bd 100644
--- a/src/util/xmlconfig.c
+++ b/src/util/xmlconfig.c
@@ -791,7 +791,8 @@ parseAppAttr(struct OptConfData *data, const XML_Char **attr)
     if (exec && strcmp (exec, data->execName)) {
         data->ignoringApp = data->inApp;
     } else if (sha1) {
-        if (strlen(sha1) != 40) {
+        /* SHA1_DIGEST_STRING_LENGTH includes terminating null byte */
+        if (strlen(sha1) != (SHA1_DIGEST_STRING_LENGTH - 1)) {
             XML_WARNING("Incorrect sha1 application attribute");
             data->ignoringApp = data->inApp;
         } else {
@@ -800,13 +801,13 @@ parseAppAttr(struct OptConfData *data, const XML_Char **attr)
             char path[PATH_MAX];
             if (util_get_process_exec_path(path, ARRAY_SIZE(path)) > 0 &&
                 (content = os_read_file(path, &len))) {
-                uint8_t sha1x[20];
-                char sha1s[40];
+                uint8_t sha1x[SHA1_DIGEST_LENGTH];
+                char sha1s[SHA1_DIGEST_STRING_LENGTH];
                 _mesa_sha1_compute(content, len, sha1x);
                 _mesa_sha1_format((char*) sha1s, sha1x);
                 free(content);
 
-                if (memcmp(sha1, sha1s, SHA1_DIGEST_LENGTH)) {
+                if (strcmp(sha1, sha1s)) {
                     data->ignoringApp = data->inApp;
                 }
             } else {



More information about the mesa-commit mailing list