drm/amd/display: Fix static analysis bug in validate_bksv
authorBhawanpreet Lakha <Bhawanpreet.Lakha@amd.com>
Wed, 6 Nov 2019 19:58:45 +0000 (14:58 -0500)
committerAlex Deucher <alexander.deucher@amd.com>
Tue, 19 Nov 2019 15:12:54 +0000 (10:12 -0500)
[Why]
static analysis throws the error below

Out-of-bounds read (OVERRUN)
Overrunning array of 5 bytes at byte offset 7 by dereferencing pointer
(uint64_t *)hdcp->auth.msg.hdcp1.bksv.

var n is going to contain  r0p and bcaps. if they are non-zero the count
will be wrong

How]
Use memcpy instead to avoid this.

Signed-off-by: Bhawanpreet Lakha <Bhawanpreet.Lakha@amd.com>
Reviewed-by: Harry Wentland <harry.wentland@amd.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/display/modules/hdcp/hdcp1_execution.c

index 4d11041..04845e4 100644 (file)
 
 static inline enum mod_hdcp_status validate_bksv(struct mod_hdcp *hdcp)
 {
-       uint64_t n = *(uint64_t *)hdcp->auth.msg.hdcp1.bksv;
+       uint64_t n = 0;
        uint8_t count = 0;
 
+       memcpy(&n, hdcp->auth.msg.hdcp1.bksv, sizeof(uint64_t));
+
        while (n) {
                count++;
                n &= (n - 1);