get:
Show a patch.

patch:
Update a patch.

put:
Update a patch.

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

{
    "id": 104665,
    "url": "http://patchwork.dpdk.org/api/patches/104665/?format=api",
    "web_url": "http://patchwork.dpdk.org/project/dpdk/patch/20211124123354.6462-1-getelson@nvidia.com/",
    "project": {
        "id": 1,
        "url": "http://patchwork.dpdk.org/api/projects/1/?format=api",
        "name": "DPDK",
        "link_name": "dpdk",
        "list_id": "dev.dpdk.org",
        "list_email": "dev@dpdk.org",
        "web_url": "http://core.dpdk.org",
        "scm_url": "git://dpdk.org/dpdk",
        "webscm_url": "http://git.dpdk.org/dpdk",
        "list_archive_url": "https://inbox.dpdk.org/dev",
        "list_archive_url_format": "https://inbox.dpdk.org/dev/{}",
        "commit_url_format": ""
    },
    "msgid": "<20211124123354.6462-1-getelson@nvidia.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/20211124123354.6462-1-getelson@nvidia.com",
    "date": "2021-11-24T12:33:54",
    "name": "[v3] app/testpmd: fix hex string parser input length",
    "commit_ref": null,
    "pull_url": null,
    "state": "accepted",
    "archived": true,
    "hash": "784d65e6156ba486ed746524be750bde1df28e41",
    "submitter": {
        "id": 1882,
        "url": "http://patchwork.dpdk.org/api/people/1882/?format=api",
        "name": "Gregory Etelson",
        "email": "getelson@nvidia.com"
    },
    "delegate": {
        "id": 319,
        "url": "http://patchwork.dpdk.org/api/users/319/?format=api",
        "username": "fyigit",
        "first_name": "Ferruh",
        "last_name": "Yigit",
        "email": "ferruh.yigit@amd.com"
    },
    "mbox": "http://patchwork.dpdk.org/project/dpdk/patch/20211124123354.6462-1-getelson@nvidia.com/mbox/",
    "series": [
        {
            "id": 20746,
            "url": "http://patchwork.dpdk.org/api/series/20746/?format=api",
            "web_url": "http://patchwork.dpdk.org/project/dpdk/list/?series=20746",
            "date": "2021-11-24T12:33:54",
            "name": "[v3] app/testpmd: fix hex string parser input length",
            "version": 3,
            "mbox": "http://patchwork.dpdk.org/series/20746/mbox/"
        }
    ],
    "comments": "http://patchwork.dpdk.org/api/patches/104665/comments/",
    "check": "success",
    "checks": "http://patchwork.dpdk.org/api/patches/104665/checks/",
    "tags": {},
    "related": [],
    "headers": {
        "Return-Path": "<dev-bounces@dpdk.org>",
        "X-Original-To": "patchwork@inbox.dpdk.org",
        "Delivered-To": "patchwork@inbox.dpdk.org",
        "Received": [
            "from mails.dpdk.org (mails.dpdk.org [217.70.189.124])\n\tby inbox.dpdk.org (Postfix) with ESMTP id 869BDA0C52;\n\tWed, 24 Nov 2021 13:34:13 +0100 (CET)",
            "from [217.70.189.124] (localhost [127.0.0.1])\n\tby mails.dpdk.org (Postfix) with ESMTP id 597FC40DF5;\n\tWed, 24 Nov 2021 13:34:13 +0100 (CET)",
            "from NAM10-MW2-obe.outbound.protection.outlook.com\n (mail-mw2nam10on2042.outbound.protection.outlook.com [40.107.94.42])\n by mails.dpdk.org (Postfix) with ESMTP id F14584003C;\n Wed, 24 Nov 2021 13:34:11 +0100 (CET)",
            "from DM5PR06CA0051.namprd06.prod.outlook.com (2603:10b6:3:37::13) by\n BN8PR12MB3585.namprd12.prod.outlook.com (2603:10b6:408:49::18) with\n Microsoft\n SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id\n 15.20.4734.20; Wed, 24 Nov 2021 12:34:10 +0000",
            "from DM6NAM11FT008.eop-nam11.prod.protection.outlook.com\n (2603:10b6:3:37:cafe::d0) by DM5PR06CA0051.outlook.office365.com\n (2603:10b6:3:37::13) with Microsoft SMTP Server (version=TLS1_2,\n cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.4713.21 via Frontend\n Transport; Wed, 24 Nov 2021 12:34:10 +0000",
            "from mail.nvidia.com (216.228.112.34) by\n DM6NAM11FT008.mail.protection.outlook.com (10.13.172.85) with Microsoft SMTP\n Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384) id\n 15.20.4713.20 via Frontend Transport; Wed, 24 Nov 2021 12:34:09 +0000",
            "from nvidia.com (172.20.187.6) by HQMAIL107.nvidia.com\n (172.20.187.13) with Microsoft SMTP Server (TLS) id 15.0.1497.18; Wed, 24 Nov\n 2021 12:34:06 +0000"
        ],
        "ARC-Seal": "i=1; a=rsa-sha256; s=arcselector9901; d=microsoft.com; cv=none;\n b=X3DHx4OuRktqYqGrBdq+ilozzzLN50n3PRLK56vQgRsk6dHWuymXVDe1apG/Uy04oLpktiqiH4mw76lXGBMA/zAMfoT7L2Dt3oozOFLhisopKS67Gg60oM6NriVvjkAYAEbwLWE3RhWIlERz9mKwK5PbS2WDQWWHLtneOX/eH6aIrgoCVvZ5DQ2LJbVmWZVFnYTzvM5+MrXhWNAW6lD1oc6QPtQjVY9Fib8CgJPIY4JhzerVlYUVl9RF6vr4VADYzFiz4VJkd4ep+W/LrSP2SRqdl64XrjzVNBx/PSsbzalAQXvT8FP7qmusLEH+xX86Gd4uB/H0JE3b8Xqu3YtqOw==",
        "ARC-Message-Signature": "i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;\n s=arcselector9901;\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=5I5/k7aoL9xQG4ItHLgMAjiEJHmSqDRG4vkRVM7X2ro=;\n b=LdyAld7Q1odbCnUx3RNmgdN9t1j/foCdisTt/NYVqoMdjheeQDMHVgv+QIl0J1Ns07pQCTy1MLjhb67v0QzrGc5Q1htABCnVl5/jW7743ep9n70bv/XNCx3lO8u58T4pKLg4HBosTYxtm2JWPI+eti6nn8cc58m/BxslvPlLq9mUlUUS0FYNvq6m4ukjBmQH2rfleQHHeT+cSpZ/B91OgFubbveizb84xEwmjCCzRAd853UL8nQd2KzSdrxdM3uCi3fOdcelGaq21Uhell8KQKjYmFuw+BTsLuosVKDguafCTrfLzb45epKCbTKPZbh7+L9nB5CBRJTaC9GiB8mnJQ==",
        "ARC-Authentication-Results": "i=1; mx.microsoft.com 1; spf=pass (sender ip is\n 216.228.112.34) smtp.rcpttodomain=intel.com smtp.mailfrom=nvidia.com;\n dmarc=pass (p=quarantine sp=quarantine pct=100) action=none\n header.from=nvidia.com; dkim=none (message not signed); arc=none",
        "DKIM-Signature": "v=1; a=rsa-sha256; c=relaxed/relaxed; d=Nvidia.com;\n s=selector2;\n h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;\n bh=5I5/k7aoL9xQG4ItHLgMAjiEJHmSqDRG4vkRVM7X2ro=;\n b=QZ62ha0ULr9nuJGoKtU9pVKcPH4IwB8gaRtzGT7VCjcg6xX2dMGk90N/fqkupkZ6qtKMs7Liw/OvyTkF/6q8GZ8DiESGtiz7SWXvYxswxD1hXPRwheYbz2Jh9N7DCFOxsYhn3pvOppbJQnAwf04R7gN7BEbdSIt2zruQk8FvSYiv9wtZzGiwfMVc9EFLaqHUUy8BgODhKGGrtMjrptwTdoZgMQVUo0XTdkrznVVFQt0JmZRKiyH77PJWcxZJPHoN4wNAtkowUdvcDr2V35yneC/aJp473C956V1bfMzGwGfvwR/4n+g/siO9sSV7bQkBiIx1QUsLqdPvCo3qzNUjzA==",
        "X-MS-Exchange-Authentication-Results": "spf=pass (sender IP is 216.228.112.34)\n smtp.mailfrom=nvidia.com; dkim=none (message not signed)\n header.d=none;dmarc=pass action=none header.from=nvidia.com;",
        "Received-SPF": "Pass (protection.outlook.com: domain of nvidia.com designates\n 216.228.112.34 as permitted sender) receiver=protection.outlook.com;\n client-ip=216.228.112.34; helo=mail.nvidia.com;",
        "From": "Gregory Etelson <getelson@nvidia.com>",
        "To": "<dev@dpdk.org>, <getelson@nvidia.com>",
        "CC": "Ferruh Yigit <ferruh.yigit@intel.com>, <stable@dpdk.org>, \"Viacheslav\n Ovsiienko\" <viacheslavo@nvidia.com>, Ori Kam <orika@nvidia.com>, Xiaoyun Li\n <xiaoyun.li@intel.com>, Wei Zhao <wei.zhao1@intel.com>",
        "Subject": "[PATCH v3] app/testpmd: fix hex string parser input length",
        "Date": "Wed, 24 Nov 2021 14:33:54 +0200",
        "Message-ID": "<20211124123354.6462-1-getelson@nvidia.com>",
        "X-Mailer": "git-send-email 2.34.0",
        "In-Reply-To": "<20211123090005.24707-1-getelson@nvidia.com>",
        "References": "<20211123090005.24707-1-getelson@nvidia.com>",
        "MIME-Version": "1.0",
        "Content-Transfer-Encoding": "8bit",
        "Content-Type": "text/plain",
        "X-Originating-IP": "[172.20.187.6]",
        "X-ClientProxiedBy": "HQMAIL107.nvidia.com (172.20.187.13) To\n HQMAIL107.nvidia.com (172.20.187.13)",
        "X-EOPAttributedMessage": "0",
        "X-MS-PublicTrafficType": "Email",
        "X-MS-Office365-Filtering-Correlation-Id": "bcde1603-c37a-44f2-b92b-08d9af46b6a1",
        "X-MS-TrafficTypeDiagnostic": "BN8PR12MB3585:",
        "X-Microsoft-Antispam-PRVS": "\n <BN8PR12MB3585EE48E37D0DF4679469C4A5619@BN8PR12MB3585.namprd12.prod.outlook.com>",
        "X-MS-Oob-TLC-OOBClassifiers": "OLM:291;",
        "X-MS-Exchange-SenderADCheck": "1",
        "X-MS-Exchange-AntiSpam-Relay": "0",
        "X-Microsoft-Antispam": "BCL:0;",
        "X-Microsoft-Antispam-Message-Info": "\n eZa6U29KRD34RQX+dhO7eMl0faVMnsZ5tkWftExThpzOayWdjSXzKNazKvY6gvN0mwK+UELFvRxWF9+l2zsslVv/d/op8PHD0RIeZR18JyhxYOutsYfsoKLdyUFOzkoVHcpVl0j4lxvtKCBMsXf197rwHYFkKZRssKjlZr09YPls1pmX5JWDsR3WxPJWeiLVmX42uZKmDuVzH0wrqefl9V1b5Fm/pO+krYsNBqGzUKphqJhONefoTJvopWCrSESH34PLegzVxy1IiFupKh/GX+4gbDSQ3DJZQZ+tqJSJ8o3gA/CXVAM8S9tUcMPjr9zWdTyd+8EqCUxeBCFTfqZKs0nxAX9VWVgHGYdeTtFCslb4nfug9YGJwW5yILTxOJHZ4VbSmyOtnz1DMNyGLuw+XFsRdrxjgGgnRs7TomQ7KHslLVugXrzs3PT5txwIIEB1bN9jsefFZxJj3aeNsb6jM6RYgwLjmpV5hSzkJsxwfeWVMCYHi4eZN9tjVe2kOtbsFHJLAJxOqrI5e3V/pB1coy3ZJdZvion8KH6dVKLQktdaBlQVmdBS5p0p+II0tdcEvA23mxX5vNjrKoN/bxDs3vFxYX7XnGUg4lyzxg6AhHEUdUB9wOZxOHHM37/26AWysCoXvOQBC2kMEJp2oOqKETA/H5HMZD299YxY6Z3EiN6I25+dfQLDlmrvhXSAp/6LyhjvJlYECjqZ37sMScfv7g==",
        "X-Forefront-Antispam-Report": "CIP:216.228.112.34; CTRY:US; LANG:en; SCL:1;\n SRV:;\n IPV:NLI; SFV:NSPM; H:mail.nvidia.com; PTR:schybrid03.nvidia.com; CAT:NONE;\n SFS:(4636009)(36840700001)(46966006)(186003)(54906003)(16526019)(7049001)(2906002)(6286002)(7696005)(26005)(7636003)(70586007)(8936002)(508600001)(70206006)(4326008)(55016003)(36860700001)(82310400004)(336012)(316002)(426003)(110136005)(6666004)(1076003)(5660300002)(83380400001)(8676002)(356005)(36756003)(47076005)(2616005)(86362001);\n DIR:OUT; SFP:1101;",
        "X-OriginatorOrg": "Nvidia.com",
        "X-MS-Exchange-CrossTenant-OriginalArrivalTime": "24 Nov 2021 12:34:09.4220 (UTC)",
        "X-MS-Exchange-CrossTenant-Network-Message-Id": "\n bcde1603-c37a-44f2-b92b-08d9af46b6a1",
        "X-MS-Exchange-CrossTenant-Id": "43083d15-7273-40c1-b7db-39efd9ccc17a",
        "X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp": "\n TenantId=43083d15-7273-40c1-b7db-39efd9ccc17a; Ip=[216.228.112.34];\n Helo=[mail.nvidia.com]",
        "X-MS-Exchange-CrossTenant-AuthSource": "\n DM6NAM11FT008.eop-nam11.prod.protection.outlook.com",
        "X-MS-Exchange-CrossTenant-AuthAs": "Anonymous",
        "X-MS-Exchange-CrossTenant-FromEntityHeader": "HybridOnPrem",
        "X-MS-Exchange-Transport-CrossTenantHeadersStamped": "BN8PR12MB3585",
        "X-BeenThere": "dev@dpdk.org",
        "X-Mailman-Version": "2.1.29",
        "Precedence": "list",
        "List-Id": "DPDK patches and discussions <dev.dpdk.org>",
        "List-Unsubscribe": "<https://mails.dpdk.org/options/dev>,\n <mailto:dev-request@dpdk.org?subject=unsubscribe>",
        "List-Archive": "<http://mails.dpdk.org/archives/dev/>",
        "List-Post": "<mailto:dev@dpdk.org>",
        "List-Help": "<mailto:dev-request@dpdk.org?subject=help>",
        "List-Subscribe": "<https://mails.dpdk.org/listinfo/dev>,\n <mailto:dev-request@dpdk.org?subject=subscribe>",
        "Errors-To": "dev-bounces@dpdk.org"
    },
    "content": "Current hex string parser assumes input has even characters number.\nThe parser fails input string with odd length.\n\nThe patch parses hex strings with even and odd length.\nParse result of an input with odd length will match result of\neven length input, that has `0` as MSB, following by the original\nsequence.\nFor example:\n\"0x1\" results in *dst={0x01, 0x00}, *size=1\n\"0xabc\" results in *dst={0x0a, 0xbc, 0x00}, *size=2\n\nCc: stable@dpdk.org\n\nFixes: 169a9fed1f4c (\"app/testpmd: fix hex string parser support for flow API\")\nSigned-off-by: Gregory Etelson <getelson@nvidia.com>\nReviewed-by: Viacheslav Ovsiienko <viacheslavo@nvidia.com>\n---\nv2: Return error after snprintf failure.\nv3: Update returned size.\n    Update the patch comment.\n---\n app/test-pmd/cmdline_flow.c | 29 ++++++++++++++++-------------\n 1 file changed, 16 insertions(+), 13 deletions(-)",
    "diff": "diff --git a/app/test-pmd/cmdline_flow.c b/app/test-pmd/cmdline_flow.c\nindex 1b00ae507b..bbe3dc0115 100644\n--- a/app/test-pmd/cmdline_flow.c\n+++ b/app/test-pmd/cmdline_flow.c\n@@ -7702,9 +7702,8 @@ parse_string(struct context *ctx, const struct token *token,\n static int\n parse_hex_string(const char *src, uint8_t *dst, uint32_t *size)\n {\n-\tchar *c = NULL;\n-\tuint32_t i, len;\n-\tchar tmp[3];\n+\tuint32_t left = *size;\n+\tconst uint8_t *head = dst;\n \n \t/* Check input parameters */\n \tif ((src == NULL) ||\n@@ -7714,19 +7713,23 @@ parse_hex_string(const char *src, uint8_t *dst, uint32_t *size)\n \t\treturn -1;\n \n \t/* Convert chars to bytes */\n-\tfor (i = 0, len = 0; i < *size; i += 2) {\n-\t\tsnprintf(tmp, 3, \"%s\", src + i);\n-\t\tdst[len++] = strtoul(tmp, &c, 16);\n-\t\tif (*c != 0) {\n-\t\t\tlen--;\n-\t\t\tdst[len] = 0;\n-\t\t\t*size = len;\n+\twhile (left) {\n+\t\tchar tmp[3], *end = tmp;\n+\t\tuint32_t read_lim = left & 1 ? 1 : 2;\n+\n+\t\tsnprintf(tmp, read_lim + 1, \"%s\", src);\n+\t\t*dst = strtoul(tmp, &end, 16);\n+\t\tif (*end) {\n+\t\t\t*dst = 0;\n+\t\t\t*size = (uint32_t)(dst - head);\n \t\t\treturn -1;\n \t\t}\n+\t\tleft -= read_lim;\n+\t\tsrc += read_lim;\n+\t\tdst++;\n \t}\n-\tdst[len] = 0;\n-\t*size = len;\n-\n+\t*dst = 0;\n+\t*size = (uint32_t)(dst - head);\n \treturn 0;\n }\n \n",
    "prefixes": [
        "v3"
    ]
}