Received: by 2002:a05:6a10:1d13:0:0:0:0 with SMTP id pp19csp1180755pxb; Thu, 19 Aug 2021 23:04:16 -0700 (PDT) X-Google-Smtp-Source: ABdhPJxdLmL53AdQ3Uuj3JAq5aQnvLe/nTjeOhXsfuXWe9pNec3NDHvefEpSMRG7gX4j1GZpt8IY X-Received: by 2002:a5e:df0d:: with SMTP id f13mr14547725ioq.108.1629439456738; Thu, 19 Aug 2021 23:04:16 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1629439456; cv=none; d=google.com; s=arc-20160816; b=MuR7QeppgPwS3Du9NY9L2boONFokM1aPXgmlmANGBZHo834lrBU3ZJ5OyMmmdKpAlz Q+ie91WKzuEJP4XhJp1Um5p8HGe9ht4GsLX+x8f9gTOdpafQjm4BnBTbRK6kcsJW29x0 cJMJgDMVOO+M+bWhskxMDxSEGOgo/D4a0fjWyeTMxJsyWxfinde5ANK1BZkZ7KeKzB7I rEsNPY2FEkiGQSH13RbBwn3aU7quupK/jSh/qz+d0iyckZP1c7cp3AGrvcw7PLhcOAPF Ug8y5KJkU+CIjal6z7NkUq6diGv4wYeNyqKJN0gebH7Zpaq+3l1quEaGZlVZYNLLj3IU zyNw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:cc:to:subject:message-id:date:from:in-reply-to :references:mime-version:dkim-signature; bh=48Hb/Qgy2m5wWev5VsfncYKR1cJzadSWEDW/hiW1JKE=; b=zJz/z7AbWkLnLUWUklpwdhlHJXf9VRVqasINlp/vp4krImWVWOZeRz3YwvKxNh/luZ OcxeD1NvBgnqVzf9XM4jy/MB0r2vC3zsZB/Ja32Hzu9AGT3Qsarg8DH4oSJVHbJtuTIU LL+mLlE4TjD+7ZOEBmIRN5OKsna+J58bKQJ4XrlXh6ieK8RqPPleoQtsyJMkW7vs4ZWL teKDY2KMY6PBSCWZaKXcQZybAvjbPpBcNYNGsRCcvzHZJICNbTur6yRJk7tni8Xv3ruE 4E/KuGYr0DAumxAgq3fdJ6p1Up5wRfbaPl0u5byr9xvbO+BUzv9VCRutciF1Wa2CvBoy Ktwg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b="uU6/WcBR"; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Return-Path: Received: from vger.kernel.org (vger.kernel.org. [23.128.96.18]) by mx.google.com with ESMTP id s14si5413576jar.33.2021.08.19.23.03.38; Thu, 19 Aug 2021 23:04:16 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) client-ip=23.128.96.18; Authentication-Results: mx.google.com; dkim=pass header.i=@gmail.com header.s=20161025 header.b="uU6/WcBR"; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 23.128.96.18 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=QUARANTINE dis=NONE) header.from=gmail.com Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S235390AbhHTF7l (ORCPT + 99 others); Fri, 20 Aug 2021 01:59:41 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:58240 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232500AbhHTF7k (ORCPT ); Fri, 20 Aug 2021 01:59:40 -0400 Received: from mail-lj1-x22e.google.com (mail-lj1-x22e.google.com [IPv6:2a00:1450:4864:20::22e]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 5F795C061575; Thu, 19 Aug 2021 22:59:03 -0700 (PDT) Received: by mail-lj1-x22e.google.com with SMTP id y6so15474992lje.2; Thu, 19 Aug 2021 22:59:03 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20161025; h=mime-version:references:in-reply-to:from:date:message-id:subject:to :cc; bh=48Hb/Qgy2m5wWev5VsfncYKR1cJzadSWEDW/hiW1JKE=; b=uU6/WcBRyLDu0UTuJ8Px/JqtCnevMORcSNmDk1Xqt0LVStFW3tSw6p+WwlTt7j48Wk hlJ6rviDndHRe9M8CyNHjlCDqvPtc3wsKEaDKi4lcmDG02yRpq6QgDrVo41ApjAYeNuw CV5jcXpcEBBy9Zf7ilQd7SqCEHtOjD82AkPGc9fN8EdAnhf3z8rmoxfwo+h6Sf+r26kU DUaCMI7TACT7qoWCB3+6xDBE/p3ty5dIkel8Vm+WWENUNrzFlxRGgILdfMx69jYjn3I7 FvcOmHHMFA6+uHEopjdtF86P0Um69G3GtgJCW9ZTRFwzFEr4Ga0UgwaUZy4TK4GdDi2+ PtTQ== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20161025; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc; bh=48Hb/Qgy2m5wWev5VsfncYKR1cJzadSWEDW/hiW1JKE=; b=bY5inNMA6qG1ml7oE5iN0j7ujiwTop68u35OUVFipGQHPCSYitQ9ovx94kv/Ka3438 R+45f2bQ3vCqR8p+dkjy5e7db0cKQEnIf/ibUyIkIVjECDCfMFjvCTLxZTJEANsfS7LD L/P4sk4nrRlQuLd+NdsqMZrO+SiOjKVhft1Hh66M2y9lN9vsHqvbOi8NmTP3bwph+j9j bOUmB+K/j4JvHYEdthwdSkGtMzkukIXkT1KPKqotIqa5O9+HX7l/UVaZZjvUymdKdAO4 vwKxj99G4ApvpVtAdfZfGeOE+4UdJKb6+k2OhxFpKVmpwbeibrcWB69llEw8vUxchZEL WZXg== X-Gm-Message-State: AOAM531bt1Df84bFif7/1dmHsxAOBe4pXBKxnAApJNNmFGWoFvkNfbTR C3w20hLdrahsSUqX1fQdxzvvfFusc5RhApc2O1s= X-Received: by 2002:a2e:2417:: with SMTP id k23mr14866266ljk.256.1629439141581; Thu, 19 Aug 2021 22:59:01 -0700 (PDT) MIME-Version: 1.0 References: <20210817102709.15046-1-len.baker@gmx.com> <2f3a644e279a8a0933343339fa0add8e76276bf8.camel@kernel.org> In-Reply-To: <2f3a644e279a8a0933343339fa0add8e76276bf8.camel@kernel.org> From: Steve French Date: Fri, 20 Aug 2021 00:58:50 -0500 Message-ID: Subject: Re: [PATCH] CIFS: Fix a potencially linear read overflow To: Jeff Layton Cc: Len Baker , Steve French , Suresh Jayaraman , CIFS , samba-technical , LKML , Kees Cook , linux-hardening@vger.kernel.org Content-Type: text/plain; charset="UTF-8" Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Added RB and repushed to cifs-2.6.git for-next On Wed, Aug 18, 2021 at 8:22 AM Jeff Layton wrote: > > On Tue, 2021-08-17 at 12:27 +0200, Len Baker wrote: > > strlcpy() reads the entire source buffer first. This read may exceed the > > destination size limit. This is both inefficient and can lead to linear > > read overflows if a source string is not NUL-terminated. > > > > Also, the strnlen() call does not avoid the read overflow in the strlcpy > > function when a not NUL-terminated string is passed. > > > > So, replace this block by a call to kstrndup() that avoids this type of > > overflow and does the same. > > > > Fixes: 066ce6899484d ("cifs: rename cifs_strlcpy_to_host and make it use new functions") > > Signed-off-by: Len Baker > > --- > > fs/cifs/cifs_unicode.c | 9 ++------- > > 1 file changed, 2 insertions(+), 7 deletions(-) > > > > diff --git a/fs/cifs/cifs_unicode.c b/fs/cifs/cifs_unicode.c > > index 9bd03a231032..171ad8b42107 100644 > > --- a/fs/cifs/cifs_unicode.c > > +++ b/fs/cifs/cifs_unicode.c > > @@ -358,14 +358,9 @@ cifs_strndup_from_utf16(const char *src, const int maxlen, > > if (!dst) > > return NULL; > > cifs_from_utf16(dst, (__le16 *) src, len, maxlen, codepage, > > - NO_MAP_UNI_RSVD); > > + NO_MAP_UNI_RSVD); > > } else { > > - len = strnlen(src, maxlen); > > - len++; > > - dst = kmalloc(len, GFP_KERNEL); > > - if (!dst) > > - return NULL; > > - strlcpy(dst, src, len); > > + dst = kstrndup(src, maxlen, GFP_KERNEL); > > } > > > > return dst; > > -- > > 2.25.1 > > > > Reviewed-by: Jeff Layton > -- Thanks, Steve