From: Pierre-Eric Pelloux-Prayer Date: Fri, 3 Apr 2020 07:25:05 +0000 (+0200) Subject: util/xmlconfig: fix sha1 comparison code X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=43f785419cba3072fdfd3130ce3e51b37485739d;p=mesa.git 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 Tested-by: Marge Bot Part-of: --- 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 {