{"id":2222563,"url":"http://patchwork.ozlabs.org/api/1.2/patches/2222563/?format=json","web_url":"http://patchwork.ozlabs.org/project/uboot/patch/20260412195947.1982729-6-ravi@prevas.dk/","project":{"id":18,"url":"http://patchwork.ozlabs.org/api/1.2/projects/18/?format=json","name":"U-Boot","link_name":"uboot","list_id":"u-boot.lists.denx.de","list_email":"u-boot@lists.denx.de","web_url":null,"scm_url":null,"webscm_url":null,"list_archive_url":"","list_archive_url_format":"","commit_url_format":""},"msgid":"<20260412195947.1982729-6-ravi@prevas.dk>","list_archive_url":null,"date":"2026-04-12T19:59:44","name":"[5/8] lib/string.c: implement strdup() and strndup() in terms of memdup_nul()","commit_ref":null,"pull_url":null,"state":"new","archived":false,"hash":"b2ae894de974c0ecef3456ebbb8909ad723e458b","submitter":{"id":89443,"url":"http://patchwork.ozlabs.org/api/1.2/people/89443/?format=json","name":"Rasmus Villemoes","email":"ravi@prevas.dk"},"delegate":{"id":3651,"url":"http://patchwork.ozlabs.org/api/1.2/users/3651/?format=json","username":"trini","first_name":"Tom","last_name":"Rini","email":"trini@ti.com"},"mbox":"http://patchwork.ozlabs.org/project/uboot/patch/20260412195947.1982729-6-ravi@prevas.dk/mbox/","series":[{"id":499629,"url":"http://patchwork.ozlabs.org/api/1.2/series/499629/?format=json","web_url":"http://patchwork.ozlabs.org/project/uboot/list/?series=499629","date":"2026-04-12T19:59:41","name":"add memdup_nul(), use it and memdup() in a few places","version":1,"mbox":"http://patchwork.ozlabs.org/series/499629/mbox/"}],"comments":"http://patchwork.ozlabs.org/api/patches/2222563/comments/","check":"pending","checks":"http://patchwork.ozlabs.org/api/patches/2222563/checks/","tags":{},"related":[],"headers":{"Return-Path":"<u-boot-bounces@lists.denx.de>","X-Original-To":"incoming@patchwork.ozlabs.org","Delivered-To":"patchwork-incoming@legolas.ozlabs.org","Authentication-Results":["legolas.ozlabs.org;\n\tdkim=pass (1024-bit key;\n unprotected) header.d=prevas.dk header.i=@prevas.dk header.a=rsa-sha256\n header.s=selector1 header.b=SvFdpjrc;\n\tdkim-atps=neutral","legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=lists.denx.de\n (client-ip=85.214.62.61; helo=phobos.denx.de;\n envelope-from=u-boot-bounces@lists.denx.de; receiver=patchwork.ozlabs.org)","phobos.denx.de;\n dmarc=pass (p=reject dis=none) header.from=prevas.dk","phobos.denx.de;\n spf=pass smtp.mailfrom=u-boot-bounces@lists.denx.de","phobos.denx.de;\n\tdkim=pass (1024-bit key;\n unprotected) header.d=prevas.dk header.i=@prevas.dk header.b=\"SvFdpjrc\";\n\tdkim-atps=neutral","phobos.denx.de;\n dmarc=pass (p=reject dis=none) header.from=prevas.dk","phobos.denx.de;\n spf=pass smtp.mailfrom=rasmus.villemoes@prevas.dk","dkim=none (message not signed)\n header.d=none;dmarc=none action=none header.from=prevas.dk;"],"Received":["from phobos.denx.de (phobos.denx.de [85.214.62.61])\n\t(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n\t key-exchange x25519)\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4fv1dB2nwLz1yGg\n\tfor <incoming@patchwork.ozlabs.org>; Mon, 13 Apr 2026 06:01:18 +1000 (AEST)","from h2850616.stratoserver.net (localhost [IPv6:::1])\n\tby phobos.denx.de (Postfix) with ESMTP id 6AABB84206;\n\tSun, 12 Apr 2026 22:00:10 +0200 (CEST)","by phobos.denx.de (Postfix, from userid 109)\n id 2390484198; Sun, 12 Apr 2026 22:00:08 +0200 (CEST)","from DB3PR0202CU003.outbound.protection.outlook.com\n (mail-northeuropeazlp170100001.outbound.protection.outlook.com\n [IPv6:2a01:111:f403:c200::1])\n (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits))\n (No client certificate requested)\n by phobos.denx.de (Postfix) with ESMTPS id 9AFF083EC6\n for <u-boot@lists.denx.de>; Sun, 12 Apr 2026 22:00:01 +0200 (CEST)","from AS5PR10MB8243.EURPRD10.PROD.OUTLOOK.COM (2603:10a6:20b:681::18)\n by GV2PR10MB9930.EURPRD10.PROD.OUTLOOK.COM (2603:10a6:150:341::22)\n with Microsoft SMTP Server (version=TLS1_2,\n cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.48; Sun, 12 Apr\n 2026 20:00:00 +0000","from AS5PR10MB8243.EURPRD10.PROD.OUTLOOK.COM\n ([fe80::ebc6:4e0d:5d6b:95d8]) by AS5PR10MB8243.EURPRD10.PROD.OUTLOOK.COM\n ([fe80::ebc6:4e0d:5d6b:95d8%5]) with mapi id 15.20.9769.046; Sun, 12 Apr 2026\n 20:00:00 +0000"],"X-Spam-Checker-Version":"SpamAssassin 3.4.2 (2018-09-13) on phobos.denx.de","X-Spam-Level":"","X-Spam-Status":"No, score=-2.1 required=5.0 tests=BAYES_00,DKIM_SIGNED,\n DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,RCVD_IN_DNSWL_BLOCKED,\n SPF_HELO_PASS,SPF_PASS autolearn=ham autolearn_force=no version=3.4.2","ARC-Seal":"i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;\n b=WY66xGLD3eg7++R2r6exSOgDf+5AdKJoX349omQuFpBd2egfN7gplwMOjMqErWDV7q/PP/VjHy9xOY72IVqswiZVIqYY4MCvHJwkHfuJMfPEkPDfx+Gg9dUzTmg/M1ZfwkNBZsMcbFDLYf3KAkpy7GAWu1f/pusqK6PNbiW2Q0WFxotEeka+4QQqLUNDJggalGRaFLZbP+L5U1huYcVMN+cewyVTjw1uqf9tyX6EDHbNNor867LyAAUMlJtzTiRTjeyyUPnzJyL/BXcP9P14oq+esB5gNCm+21h7cg4MsJisAqpsaNBvMK93Mhw/Elmidvseb5gXDlUNHzZiLSU7cg==","ARC-Message-Signature":"i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;\n s=arcselector10001;\n h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1;\n bh=jXOC+UotCZduEDYkyfIVNnb/BulrkVIjiCvsKPX05H8=;\n b=hecDOZ5tfZPwxxgaB8drt05gyK7UyBH084Uy4+Yk3Ae/J+9Ec548Kvzr+ETNvjkf7DxcrQLZ8fGjVhJvSEJdn6GDzeAkmDT/JD4jfY7flwje13BX0ZSrx0Jxx+IKhUDEU3/6RBJfRfg7WUNUBwZUZeoXqDPik8Uu7JFaDEfG1Yt4L8Y2hABX4oyf6aW/KVUL1niYqA29xNZNbhOmvP579rGy2GOaxvgwt7EgqywsvRcDqn2EbTO/dkIObBYSjcfenVevnJg7+ndM2VJBB5K6R2uHiycz1bP7Xntb/W81J7P21t3sS82/EWHzRYIXCoRv+2ncV+SK5Yu4PdDDW08PBg==","ARC-Authentication-Results":"i=1; mx.microsoft.com 1; spf=pass\n smtp.mailfrom=prevas.dk; dmarc=pass action=none header.from=prevas.dk;\n dkim=pass header.d=prevas.dk; arc=none","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed; d=prevas.dk;\n s=selector1;\n h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;\n bh=jXOC+UotCZduEDYkyfIVNnb/BulrkVIjiCvsKPX05H8=;\n b=SvFdpjrc5ixLBSvcEURkRDjjoiL/8OjA2vWzpctEMnzY0MBtTLvAtgCrHjIXGgmpALNN1Cf8+zgRYy72wJCWqJ8SbjeduTiIuA39cFAtPamdwkXzbCWUS2IE5tSbq3j4ydFIa/qh5m0R+g/wHqsnnQCTuxNwBfbXA7d6s1US6FA=","From":"Rasmus Villemoes <ravi@prevas.dk>","To":"u-boot@lists.denx.de","Cc":"Tom Rini <trini@konsulko.com>, Simon Glass <sjg@chromium.org>,\n Rasmus Villemoes <ravi@prevas.dk>","Subject":"[PATCH 5/8] lib/string.c: implement strdup() and strndup() in terms\n of memdup_nul()","Date":"Sun, 12 Apr 2026 21:59:44 +0200","Message-ID":"<20260412195947.1982729-6-ravi@prevas.dk>","X-Mailer":"git-send-email 2.53.0","In-Reply-To":"<20260412195947.1982729-1-ravi@prevas.dk>","References":"<20260412195947.1982729-1-ravi@prevas.dk>","Content-Transfer-Encoding":"8bit","Content-Type":"text/plain","X-ClientProxiedBy":"CPBP307CA0004.DNKP307.PROD.OUTLOOK.COM\n (2603:10a6:380:1::13) To AS5PR10MB8243.EURPRD10.PROD.OUTLOOK.COM\n (2603:10a6:20b:681::18)","MIME-Version":"1.0","X-MS-PublicTrafficType":"Email","X-MS-TrafficTypeDiagnostic":"AS5PR10MB8243:EE_|GV2PR10MB9930:EE_","X-MS-Office365-Filtering-Correlation-Id":"14d5155d-37a9-4470-1d4e-08de98ce1417","X-MS-Exchange-SenderADCheck":"1","X-MS-Exchange-AntiSpam-Relay":"0","X-Microsoft-Antispam":"BCL:0;\n ARA:13230040|52116014|376014|1800799024|366016|38350700014|18002099003|56012099003|22082099003;","X-Microsoft-Antispam-Message-Info":"\n tOtszktiJeuIoYeZjj9iY7WHW2QPOOZ5pbelv5iGImb/KlVYV8esWcg1FMbPvJVd+j8IsNLamO+NlWWOtjbKYGvJoeQZM9Zcf2M9+LS4rcITiptbR+bl7ygT1xW3rV65DXnDBj/Qkpn81taNGWeWyh3EmNvEFtb1Ltz6osmYPsyX14yMICKhJecBOD3HvKpFBre/7DbSqllY5s1zPrZKlK/vPyzFPw+M4Kww+cSYLGlQBfemaaFNKh95XvnkF+oCQJ4nYm0rU6pU0qLvsNVBQCs946KLDN38/5oYe8hofgYtkiGw/RYpkOKwFQE0JZbki7GsG5/uH/VH5/g/LfdxX3dVqpYx27GkEINNb+DLBW4KR5lkKxjhrya+6n/FmP5oTnbz64L+lTsy/ESFO2bCFH9wBLEzEbqgJQBjVZExjXDcbxbdhnI+2oAW2+xKH695sWHZ2Jwq4UPikiSfdC/uQB3JooyMk8g7EqODGkAz7aRVpwlXGWdQ4N/QORIKVQNBaklT9r6tgz1Jt3wTmhE4nynCK4Tmcujuo9r+5uCNXjBTl/GKReXEh4XiuNfHeqz9+uC4jo/7pfL3nkflPw82MilaTr5ynvhNPvd2X/vPUVPnI5XsVkVWRv65yesI75tKwcogukbeVEJt0eG+wjXkW5H+W75SBDshKLvnDFJszti3tn+ZUtYj+6sGF84f3q0GMjnfWuOnrOP1qkPFC249QOmQmWZLXewmXfhPjqVdopjiN6w4b2Oa2U9N5Tc82S/F0CKaJ40jU/Ugmm5Jy7gWUwmj/+Olzr4iDMZtgsslDaE=","X-Forefront-Antispam-Report":"CIP:255.255.255.255; CTRY:; LANG:en; SCL:1; SRV:;\n IPV:NLI; SFV:NSPM; H:AS5PR10MB8243.EURPRD10.PROD.OUTLOOK.COM; PTR:; CAT:NONE;\n SFS:(13230040)(52116014)(376014)(1800799024)(366016)(38350700014)(18002099003)(56012099003)(22082099003);\n DIR:OUT; SFP:1101;","X-MS-Exchange-AntiSpam-MessageData-ChunkCount":"1","X-MS-Exchange-AntiSpam-MessageData-0":"\n KOMMkeD/FT3X4twK0LWkOU5X3HqJ1kNDmRD4tCMbIkCgTgB52gC1VxwdkkaFXH0DyAD4BvXPOrLgwf9ZWfy26q9gz7/9sFLApikEhBBoPmPreMR/FBr8RpcEgkVSPb+02f61fADS/Rl1IDKcTGdIFrfWnoCRXFZSFHYo/JCRrD3g8uD2pBYExGqRnTdGqwWz8rdtQuAiC5ObDFQONfJ1ypDQ4TSziMLpWEfsi+LQO4UFVWfi/VcLgxT62IJerKIs6sehkIDiprn70ztrJZvvqHWrC4xdTsC0z96W7CKjEwrAP3I/RQByVQkuSEYPQ7GcN4ZN/TlbKaut2cuCQF1IVPrz2xDYcYZavv9WXT/43mWeeqrwscLR6uYBLZMEEQ+B6fb+3O0grSwRoWd4bmENnRVbaLJTnSDIwepxrAtsn5+Gv7JlkQJrGjVqIv3Hptw8IFnnPtYZ0F1mO0chy2lypm30C+WQV0BYU7Mlyv+HaBqL5LSuYp9wpK3Kea5Td4vNrVFve3zrHSEOY/iheSY/CYD8d/fJCJ7OCJeejzGJwF+XXH3XtX69gUqtXRRZKNrrSzAdGqOALmdNZQrKQ7h2uvhBgQfK6pEfzwYLrpjUjJAfWpBtnhsXoORta+Y7gW/W7XhlZLIL/SFt46Zcm+pmSkFmDUp0vlMDPS2v6DNMqM325atmv2WvwhHD6EiApZQdpOsHkfjh3+ShZPtBbo9a5F4zDm8XOhq9tLRNuB51vuxUUBBQGPvfzJ9e6MIh756ZtsIJezlG8lObvN9baPmZuAcZDt8cXCL0eQfk391Utuxm6hu+bJauW20YUTVN4522ER2EmMYhLeGv6aP9ICcbIOMlAEJDVUGM2Phvhg/75MtnO+pzrzlWeRT7Jjo1iNEsgGLIgjkl9i7W3He2yfqAiM2cWYcQ7YgpZENxoVQH3r5Cs2Lj895uHXM4f08ILL+z3L+oMHaqX1TKqT8bRJgqBwH/4HahEPW3b1nCeEgkwPjDZJo/pJYlHzb49SP+ytLq64XTR+szwcv4lmWMB3UKygNTJ+T3Anh/Gs6xU+jK1tkCu6nD/6opFiVltq7pJthFqce2liv0Y365NKKrFgPi640BsyEW3zbeECd5E0nztF+nFQIJC0L7DyZmC6U9IkW5+cfx6ASRsmvAeZJ2szz8wBzNvklQFQTtWhQf3M3WCnvPL4egYBowx/+YeYXEjX81Z/4Q+JUWKMxnRYtXycxeOVWfGQsBFXNtGhcm427rbmZgSZVEbECfeZF0RKVJWYyMl9PCTdBS3nJMPFnmX9H6xXHG7sgkdgv/0MoQuX0MSOFyjZsfNhYBeKoaD9yAaoOEKxys6DBi0B91OlBz/Qp3wx3Img0eHuKuu/rgXdvID1D483FHNC7Fwx3LFYJBuyRiKftNaepaF0H/wUHVqNeUGidJYAuKKbIFjT31umlGD27O8mCnY9ayLaLb1G4t7AcWoQBQG8qtIGkI9+f2IpNi3qtzNeR09qVO0X4dUJ42spYB44kzwsPkLrZE/DnMLryMJjDh0jTy03d2oxLADBVWPBlIOErvSTsnC32AN+1HjY0fNXAPSpix8wV2leH7BrIoVoD5md7S6bmXE+2YGBrrMuNf+Sm6tjMj1oggacXbNZtoMgihzx/kkiwXHvFvatzW8NcKLAb+n346+lwSZ1yO1FODXydjZn6MWUOXJpP1iDnuToauAFqlopf1C1sY7NrNUi9ptHvDu1mg7GMzGGi11G6GHWKPl5q5T2w8AW5g7Bw=","X-OriginatorOrg":"prevas.dk","X-MS-Exchange-CrossTenant-Network-Message-Id":"\n 14d5155d-37a9-4470-1d4e-08de98ce1417","X-MS-Exchange-CrossTenant-AuthSource":"AS5PR10MB8243.EURPRD10.PROD.OUTLOOK.COM","X-MS-Exchange-CrossTenant-AuthAs":"Internal","X-MS-Exchange-CrossTenant-OriginalArrivalTime":"12 Apr 2026 20:00:00.1693 (UTC)","X-MS-Exchange-CrossTenant-FromEntityHeader":"Hosted","X-MS-Exchange-CrossTenant-Id":"d350cf71-778d-4780-88f5-071a4cb1ed61","X-MS-Exchange-CrossTenant-MailboxType":"HOSTED","X-MS-Exchange-CrossTenant-UserPrincipalName":"\n swRULQuGg104C/JO+Re/eM21+eC354LKJMPI9sMRgN4IZns5GMsTqEBbDWq/V5IJOeRN9FxwUM0RMQ6CtMOf/pYk37Ubnnh/p76EaubkSa4=","X-MS-Exchange-Transport-CrossTenantHeadersStamped":"GV2PR10MB9930","X-BeenThere":"u-boot@lists.denx.de","X-Mailman-Version":"2.1.39","Precedence":"list","List-Id":"U-Boot discussion <u-boot.lists.denx.de>","List-Unsubscribe":"<https://lists.denx.de/options/u-boot>,\n <mailto:u-boot-request@lists.denx.de?subject=unsubscribe>","List-Archive":"<https://lists.denx.de/pipermail/u-boot/>","List-Post":"<mailto:u-boot@lists.denx.de>","List-Help":"<mailto:u-boot-request@lists.denx.de?subject=help>","List-Subscribe":"<https://lists.denx.de/listinfo/u-boot>,\n <mailto:u-boot-request@lists.denx.de?subject=subscribe>","Errors-To":"u-boot-bounces@lists.denx.de","Sender":"\"U-Boot\" <u-boot-bounces@lists.denx.de>","X-Virus-Scanned":"clamav-milter 0.103.8 at phobos.denx.de","X-Virus-Status":"Clean"},"content":"With the addition of memdup_nul(), strdup() and strndup() can be\nimplemented as one-liners.\n\nWhile not required by POSIX or C, do keep the behaviour of gracefully\naccepting a NULL source and simply return NULL.\n\nSigned-off-by: Rasmus Villemoes <ravi@prevas.dk>\n---\n lib/string.c | 30 ++----------------------------\n 1 file changed, 2 insertions(+), 28 deletions(-)","diff":"diff --git a/lib/string.c b/lib/string.c\nindex 3923cce5561..5ccd1011ab5 100644\n--- a/lib/string.c\n+++ b/lib/string.c\n@@ -360,38 +360,12 @@ void *memdup_nul(const void *src, size_t len)\n \n char * strdup(const char *s)\n {\n-\tchar *new;\n-\n-\tif ((s == NULL)\t||\n-\t    ((new = malloc (strlen(s) + 1)) == NULL) ) {\n-\t\treturn NULL;\n-\t}\n-\n-\tstrcpy (new, s);\n-\treturn new;\n+\treturn s ? memdup_nul(s, strlen(s)) : NULL;\n }\n \n char * strndup(const char *s, size_t n)\n {\n-\tsize_t len;\n-\tchar *new;\n-\n-\tif (s == NULL)\n-\t\treturn NULL;\n-\n-\tlen = strlen(s);\n-\n-\tif (n < len)\n-\t\tlen = n;\n-\n-\tnew = malloc(len + 1);\n-\tif (new == NULL)\n-\t\treturn NULL;\n-\n-\tstrncpy(new, s, len);\n-\tnew[len] = '\\0';\n-\n-\treturn new;\n+\treturn s ? memdup_nul(s, strnlen(s, n)) : NULL;\n }\n \n #ifndef __HAVE_ARCH_STRSPN\n","prefixes":["5/8"]}