From 51dba336ac4db37801527689a8ffd9cf7b0ef290 Mon Sep 17 00:00:00 2001 From: tb <> Date: Wed, 26 Feb 2025 09:52:55 +0000 Subject: obj_dat: don't shift a->length into the sign bit For an OID of excessive length >= 2^12, a->length << 20L is undefined, so add a cast to the target type of (unsigned long). From Kenjiro Nakayama --- src/lib/libcrypto/objects/obj_dat.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/lib/libcrypto/objects/obj_dat.c b/src/lib/libcrypto/objects/obj_dat.c index ed8140b54a..a2de78b545 100644 --- a/src/lib/libcrypto/objects/obj_dat.c +++ b/src/lib/libcrypto/objects/obj_dat.c @@ -1,4 +1,4 @@ -/* $OpenBSD: obj_dat.c,v 1.92 2025/02/26 09:49:54 tb Exp $ */ +/* $OpenBSD: obj_dat.c,v 1.93 2025/02/26 09:52:55 tb Exp $ */ /* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com) * All rights reserved. * @@ -100,7 +100,7 @@ added_obj_hash(const ADDED_OBJ *ca) a = ca->obj; switch (ca->type) { case ADDED_DATA: - ret = a->length << 20L; + ret = (unsigned long)a->length << 20L; p = (unsigned char *)a->data; for (i = 0; i < a->length; i++) ret ^= p[i] << ((i * 3) % 24); -- cgit v1.2.3-55-g6feb