get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

GET /api/1.2/patches/2222563/?format=api
HTTP 200 OK
Allow: GET, PUT, PATCH, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept

{
    "id": 2222563,
    "url": "http://patchwork.ozlabs.org/api/1.2/patches/2222563/?format=api",
    "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=api",
        "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=api",
        "name": "Rasmus Villemoes",
        "email": "ravi@prevas.dk"
    },
    "delegate": {
        "id": 3651,
        "url": "http://patchwork.ozlabs.org/api/1.2/users/3651/?format=api",
        "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=api",
            "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"
    ]
}