From patchwork Fri Mar 3 04:54:19 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: James Almer X-Patchwork-Id: 2741 Delivered-To: ffmpegpatchwork@gmail.com Received: by 10.103.31.14 with SMTP id f14csp90098vsf; Thu, 2 Mar 2017 20:55:45 -0800 (PST) X-Received: by 10.223.144.65 with SMTP id h59mr765461wrh.30.1488516944973; Thu, 02 Mar 2017 20:55:44 -0800 (PST) Return-Path: Received: from ffbox0-bg.mplayerhq.hu (ffbox0-bg.ffmpeg.org. [79.124.17.100]) by mx.google.com with ESMTP id e19si13264916wrc.164.2017.03.02.20.55.44; Thu, 02 Mar 2017 20:55:44 -0800 (PST) Received-SPF: pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) client-ip=79.124.17.100; Authentication-Results: mx.google.com; dkim=neutral (body hash did not verify) header.i=@gmail.com; spf=pass (google.com: domain of ffmpeg-devel-bounces@ffmpeg.org designates 79.124.17.100 as permitted sender) smtp.mailfrom=ffmpeg-devel-bounces@ffmpeg.org; dmarc=fail (p=NONE sp=NONE dis=NONE) header.from=gmail.com Received: from [127.0.1.1] (localhost [127.0.0.1]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTP id 88468681865; Fri, 3 Mar 2017 06:55:29 +0200 (EET) X-Original-To: ffmpeg-devel@ffmpeg.org Delivered-To: ffmpeg-devel@ffmpeg.org Received: from mail-qk0-f196.google.com (mail-qk0-f196.google.com [209.85.220.196]) by ffbox0-bg.mplayerhq.hu (Postfix) with ESMTPS id A79046805A1 for ; Fri, 3 Mar 2017 06:55:22 +0200 (EET) Received: by mail-qk0-f196.google.com with SMTP id s186so24615824qkb.1 for ; Thu, 02 Mar 2017 20:55:34 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=from:to:subject:date:message-id; bh=dhpmBWY07TURnSFlfMOIeITiz/wqpvhFW4IWDbc2tvA=; b=oy/SGjCuEPrmbKCaqOm+1TR+aeXuV3Yg5aKMgIbeGQ7NC3+7vNFZ1xLJd0bnpt3qmA InLUE1iPIy0SfAm64Se8rR4Gt3od8ykw9xPrR0U0eB63xvf08KJeGHO4UWJzDJuXslZ9 1TLqTiW1BvNLTOJ7E/kY17YKuYdCmHa0BsJbi/upqtD21j6HTci3ISIIadku9ZnSIqxq TiYTYTrcEsnFPNIOerj8rP0grTY71j5q5Pbo7JHrRvDhKoMhd+rnJPiDjD5lCINAYry1 k0PJv8yon9W0nxeF1+AtlkOS28USwnpiWB++I8PDGTSzeJ/DoFlge0P2ql2YjfR5FBeO qEww== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:from:to:subject:date:message-id; bh=dhpmBWY07TURnSFlfMOIeITiz/wqpvhFW4IWDbc2tvA=; b=Wjr3pd0dndXR6fWciCeJDl1NyW9fRtp2kHwBowOel3whqvlRvMqYetp58TSGUIv9Im F0dsZ3ZERcvmNViufUSzIoMZ0DA8L9aZuiHGjYcWjCmBBK3bj83FH68XQz8C1uDVsSJZ wAn+/Y19MZgB4qkERltJ4XBErlZID3ctqTy/QbQAF59/ILgms5Xz/9mXlacwA9MRX3kF +Ri5xsfveTZJTg3kbge5oh0fXtmSGov/c1WFlKHnr8/fMlIdbPABAwg/+hUZVlcFMv4r Y3c/mvnEhjrMJVIJq3G3yahYtbZa1YnfPS6MDbdXzaku/m/xBbSbjY1qFyMQ9ID4NKoa 4KFw== X-Gm-Message-State: AMke39mogUi7sxUG80h54dlhwJR7UrxTdInPXsnHwM/7PZJCBne6f6cYyUHm2YP5QrJU9w== X-Received: by 10.200.39.200 with SMTP id x8mr774893qtx.159.1488516932802; Thu, 02 Mar 2017 20:55:32 -0800 (PST) Received: from localhost.localdomain ([181.231.62.139]) by smtp.gmail.com with ESMTPSA id g13sm6959495qtg.8.2017.03.02.20.55.31 for (version=TLS1_2 cipher=ECDHE-RSA-AES128-SHA bits=128/128); Thu, 02 Mar 2017 20:55:32 -0800 (PST) From: James Almer To: ffmpeg-devel@ffmpeg.org Date: Fri, 3 Mar 2017 01:54:19 -0300 Message-Id: <20170303045420.5036-1-jamrial@gmail.com> X-Mailer: git-send-email 2.12.0 Subject: [FFmpeg-devel] [PATCH 1/2] avutil/md5: fix misaligned reads X-BeenThere: ffmpeg-devel@ffmpeg.org X-Mailman-Version: 2.1.20 Precedence: list List-Id: FFmpeg development discussions and patches List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Reply-To: FFmpeg development discussions and patches MIME-Version: 1.0 Errors-To: ffmpeg-devel-bounces@ffmpeg.org Sender: "ffmpeg-devel" This makes ubsan happy and also considerably increases performance on big endian systems. Signed-off-by: James Almer --- libavutil/md5.c | 15 +++++---------- 1 file changed, 5 insertions(+), 10 deletions(-) diff --git a/libavutil/md5.c b/libavutil/md5.c index 8c36aa80c4..d3698dcb1d 100644 --- a/libavutil/md5.c +++ b/libavutil/md5.c @@ -86,14 +86,14 @@ static const uint32_t T[64] = { // T[i]= fabs(sin(i+1)<<32) \ if (i < 32) { \ if (i < 16) \ - a += (d ^ (b & (c ^ d))) + X[ i & 15]; \ + a += (d ^ (b & (c ^ d))) + AV_RL32(X+( i & 15));\ else \ - a += ((d & b) | (~d & c)) + X[(1 + 5*i) & 15]; \ + a += ((d & b) | (~d & c)) + AV_RL32(X+((1 + 5*i) & 15));\ } else { \ if (i < 48) \ - a += (b ^ c ^ d) + X[(5 + 3*i) & 15]; \ + a += (b ^ c ^ d) + AV_RL32(X+((5 + 3*i) & 15));\ else \ - a += (c ^ (b | ~d)) + X[( 7*i) & 15]; \ + a += (c ^ (b | ~d)) + AV_RL32(X+(( 7*i) & 15));\ } \ a = b + (a << t | a >> (32 - t)); \ } while (0) @@ -112,11 +112,6 @@ static void body(uint32_t ABCD[4], uint32_t *src, int nblocks) X = src + n * 16; -#if HAVE_BIGENDIAN - for (i = 0; i < 16; i++) - X[i] = av_bswap32(X[i]); -#endif - #if CONFIG_SMALL for (i = 0; i < 64; i++) { CORE(i, a, b, c, d); @@ -173,7 +168,7 @@ void av_md5_update(AVMD5 *ctx, const uint8_t *src, int len) } end = src + (len & ~63); - if (HAVE_BIGENDIAN || (!HAVE_FAST_UNALIGNED && ((intptr_t)src & 3))) { + if (!HAVE_FAST_UNALIGNED && ((intptr_t)src & 3)) { while (src < end) { memcpy(ctx->block, src, 64); body(ctx->ABCD, (uint32_t *) ctx->block, 1);