Received: by 2002:a05:6358:11c7:b0:104:8066:f915 with SMTP id i7csp151175rwl; Thu, 6 Apr 2023 16:28:13 -0700 (PDT) X-Google-Smtp-Source: AKy350b51ovDApJyiMuiynyadbiehruidp0u9+6ZIOIpRGP+YeZ5PsSrkiJV3zhXhnbfzdSVEr6s X-Received: by 2002:aa7:c50b:0:b0:4fd:29e6:701b with SMTP id o11-20020aa7c50b000000b004fd29e6701bmr944785edq.38.1680823693259; Thu, 06 Apr 2023 16:28:13 -0700 (PDT) ARC-Seal: i=1; a=rsa-sha256; t=1680823693; cv=none; d=google.com; s=arc-20160816; b=cUtMjgPlHYF4fREh88CwaXF6eLvsJmNHCZUMVuW/llGjdTsTeDaNZ6kmE/nvUkPgr7 PdXLF8cwPrXL5ZH/DC+6x8yy2QKW0gPufnM0Ve6yrE77XURJvXPiEIk4oWzPKIY/QFve yBz9c79y4KttAjMHyyIoUg4TVEeb7RN044KjI1VCMf003esjvdyK5cl3g3fvEbKdMODt paG1qZkK94jM33Tmmcx/VUEPwMGPG7fRsGAGjjIpoSN4YyF7tmx1YAJtTC8iuUYUK2qt xDIwnLzMjkgjynelqEjXLENDTP5Y36GuCQ9L1EPZCqNGq5qhRGiN1Z4Gyzlcz0Ax1yYr TRLQ== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:in-reply-to:content-disposition:mime-version :references:subject:cc:to:from:date:message-id:dkim-signature; bh=ftgRsIRurrmlei9zUcdBf7zAoeZBAD6u0Ofdt2c7jnY=; b=vwvJxyXGvooCFL8HqdEhyyOknt6FbL5bZDcsUl5a0wFl1WM5EC3seq3t+OUb6tYDeW dDkwP+1T/Pl4n6bxQPRWzOs0IL3pgIIIJHA7xDmrXTuTJQ9QxsHU1mM/ghgNu6DVEPvl ZgZ86OJju3rmzfUuNMtOzvsT0C8ZbZoiTrmw6J9wqPwQ7xTeRgy+rsTuJj9T9UqAwIPY MD2d9aslU6GKy23TlHfvPnZv9PxCjth8ELC+FuAYw7xSkeMO/VoGc/o5tlejHryveS1n QHQvVnB2fwo0e5IOCGzkOBVQE0wXNk1vF6mrgzki4WDMz3GeLFiZXaaegmPFZs87RJkP /IZg== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@chromium.org header.s=google header.b="gDI/38A0"; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=chromium.org Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id g24-20020aa7c598000000b005025028826bsi589850edq.296.2023.04.06.16.27.47; Thu, 06 Apr 2023 16:28:13 -0700 (PDT) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@chromium.org header.s=google header.b="gDI/38A0"; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=chromium.org Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S236387AbjDFXHl (ORCPT + 99 others); Thu, 6 Apr 2023 19:07:41 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:34664 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229604AbjDFXHj (ORCPT ); Thu, 6 Apr 2023 19:07:39 -0400 Received: from mail-pl1-x62d.google.com (mail-pl1-x62d.google.com [IPv6:2607:f8b0:4864:20::62d]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id D46B99754 for ; Thu, 6 Apr 2023 16:07:37 -0700 (PDT) Received: by mail-pl1-x62d.google.com with SMTP id ix20so38800493plb.3 for ; Thu, 06 Apr 2023 16:07:37 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=chromium.org; s=google; t=1680822457; h=in-reply-to:content-disposition:mime-version:references:subject:cc :to:from:date:message-id:from:to:cc:subject:date:message-id:reply-to; bh=ftgRsIRurrmlei9zUcdBf7zAoeZBAD6u0Ofdt2c7jnY=; b=gDI/38A0QEyvcJdTvryj/RlJjLyzOWuva3RsRYFTi8qUyOfx3nw3R7QznN+qkPY4XZ ccBxZVG2TeyU8kWTP7Vl9hXvSEQksG56WepXqoO1fxxRZMOCyOw95mzWHTagFgyfM91G 084RlrL1xam833IRUiHKAMotebiV1mYW32ypw= X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; t=1680822457; h=in-reply-to:content-disposition:mime-version:references:subject:cc :to:from:date:message-id:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=ftgRsIRurrmlei9zUcdBf7zAoeZBAD6u0Ofdt2c7jnY=; b=XjpHHcS9XEItZH9w17TpEb9wn328ba1/VPPSyicQ1IJxNuiUVAcIin6WrhqydKoNEr cppOUlSnl74UoznWDXTrVXFXd47riQkD+4gt8HcCH0RKbLJXqICN8Zw9usSrCwZfjBf1 XzFlpJlTsax4KhGiRhpl0/tFGLtLrbswZ/7LgdE0crwkKuv5ECSODpurP2/mJn1I89CD Xc2dZFY015yeNJ41oWUq8HpBev1cr0kZqWVeUaH10Hlyu4CBph2lMjTb29RFb6P/c5+P McwfDJ90u1aQxC3XZS1GtguiXCdbq/Y0J0Qc//YtRHhPYlVaKAtrPiMM2CjduGtHiJcj Evsg== X-Gm-Message-State: AAQBX9eZpW8GWICBW0Fcf16MoXAthW2xjjvCFcUKcvXgZu3/hj1Mu9m0 afTc4l28A2uEAjmJH6pHSfddYw== X-Received: by 2002:a17:90b:1c88:b0:23f:9439:9a27 with SMTP id oo8-20020a17090b1c8800b0023f94399a27mr261706pjb.20.1680822457326; Thu, 06 Apr 2023 16:07:37 -0700 (PDT) Received: from www.outflux.net (198-0-35-241-static.hfc.comcastbusiness.net. [198.0.35.241]) by smtp.gmail.com with ESMTPSA id nn12-20020a17090b38cc00b00231224439c1sm3605704pjb.27.2023.04.06.16.07.36 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Thu, 06 Apr 2023 16:07:36 -0700 (PDT) Message-ID: <642f50b8.170a0220.95ab9.859f@mx.google.com> X-Google-Original-Message-ID: <202304061602.@keescook> Date: Thu, 6 Apr 2023 16:07:35 -0700 From: Kees Cook To: Alexander Potapenko Cc: linux-hardening@vger.kernel.org, Kees Cook , Andy Shevchenko , Cezary Rojewski , Puyou Lu , Mark Brown , Josh Poimboeuf , Peter Zijlstra , Brendan Higgins , David Gow , Andrew Morton , Nathan Chancellor , Zhaoyang Huang , Randy Dunlap , Geert Uytterhoeven , Miguel Ojeda , Nick Desaulniers , Liam Howlett , Vlastimil Babka , Dan Williams , Rasmus Villemoes , Yury Norov , "Jason A. Donenfeld" , Sander Vanheule , Eric Biggers , "Masami Hiramatsu (Google)" , Andrey Konovalov , Linus Walleij , Daniel Latypov , =?iso-8859-1?Q?Jos=E9_Exp=F3sito?= , linux-kernel@vger.kernel.org, kunit-dev@googlegroups.com Subject: Re: [PATCH 3/9] string: Add Kunit tests for strcat() family References: <20230405235832.never.487-kees@kernel.org> <20230406000212.3442647-3-keescook@chromium.org> MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Disposition: inline In-Reply-To: X-Spam-Status: No, score=-0.2 required=5.0 tests=DKIMWL_WL_HIGH,DKIM_SIGNED, DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_NONE, SPF_HELO_NONE,SPF_PASS autolearn=unavailable autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on lindbergh.monkeyblade.net Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org On Thu, Apr 06, 2023 at 11:11:09AM +0200, Alexander Potapenko wrote: > > +static void strncat_test(struct kunit *test) > > +{ > > + char dest[8]; > > + > > + /* Destination is terminated. */ > > + memset(dest, 0, sizeof(dest)); > > + KUNIT_EXPECT_EQ(test, strlen(dest), 0); > > + /* Empty copy of size 0 does nothing. */ > > + KUNIT_EXPECT_TRUE(test, strncat(dest, "", 0) == dest); > > + KUNIT_EXPECT_STREQ(test, dest, ""); > > + /* Empty copy of size 1 does nothing too. */ > > + KUNIT_EXPECT_TRUE(test, strncat(dest, "", 1) == dest); > > + KUNIT_EXPECT_STREQ(test, dest, ""); > > + /* Copy of max 0 characters should do nothing. */ > > + KUNIT_EXPECT_TRUE(test, strncat(dest, "asdf", 0) == dest); > > + KUNIT_EXPECT_STREQ(test, dest, ""); > > + > > + /* 4 characters copied in, even if max is 8. */ > > + KUNIT_EXPECT_TRUE(test, strncat(dest, "four\000123", 8) == dest); > > + KUNIT_EXPECT_STREQ(test, dest, "four"); > > + KUNIT_EXPECT_EQ(test, dest[5], '\0'); > > Maybe also add a test case for strncat(dest, "four", 4) that checks > that the fourth byte of dest is not 0? I think I don't understand what state you want to test for? The line above (STREQ is checking dest is "four". Maybe I should check for dest[6] being 0 as well as dest[5]. But if that's not what you mean, I'm not sure. Is it something here: char dest[16]; memset(dest, 0, sizeof(dest)); // dest == "" strncat(dest, "four", 4); // dest == "four" strncat(dest, "four", 4); // dest == "fourfour" strncat's "n" is how much to reach from source -- dest will always be terminated. -- Kees Cook