Show a cover letter.

GET /api/covers/52198/?format=api
HTTP 200 OK
Allow: GET, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept

{
    "id": 52198,
    "url": "http://patches.dpdk.org/api/covers/52198/?format=api",
    "web_url": "http://patches.dpdk.org/project/dpdk/cover/20190403144505.46234-1-bruce.richardson@intel.com/",
    "project": {
        "id": 1,
        "url": "http://patches.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": "<20190403144505.46234-1-bruce.richardson@intel.com>",
    "list_archive_url": "https://inbox.dpdk.org/dev/20190403144505.46234-1-bruce.richardson@intel.com",
    "date": "2019-04-03T14:45:00",
    "name": "[0/5] clean up snprintf use for string copying",
    "submitter": {
        "id": 20,
        "url": "http://patches.dpdk.org/api/people/20/?format=api",
        "name": "Bruce Richardson",
        "email": "bruce.richardson@intel.com"
    },
    "mbox": "http://patches.dpdk.org/project/dpdk/cover/20190403144505.46234-1-bruce.richardson@intel.com/mbox/",
    "series": [
        {
            "id": 4091,
            "url": "http://patches.dpdk.org/api/series/4091/?format=api",
            "web_url": "http://patches.dpdk.org/project/dpdk/list/?series=4091",
            "date": "2019-04-03T14:45:00",
            "name": "clean up snprintf use for string copying",
            "version": 1,
            "mbox": "http://patches.dpdk.org/series/4091/mbox/"
        }
    ],
    "comments": "http://patches.dpdk.org/api/covers/52198/comments/",
    "headers": {
        "Return-Path": "<dev-bounces@dpdk.org>",
        "X-Original-To": "patchwork@dpdk.org",
        "Delivered-To": "patchwork@dpdk.org",
        "Received": [
            "from [92.243.14.124] (localhost [127.0.0.1])\n\tby dpdk.org (Postfix) with ESMTP id 552C91B442;\n\tWed,  3 Apr 2019 16:45:14 +0200 (CEST)",
            "from mga14.intel.com (mga14.intel.com [192.55.52.115])\n\tby dpdk.org (Postfix) with ESMTP id 114E25A6E\n\tfor <dev@dpdk.org>; Wed,  3 Apr 2019 16:45:12 +0200 (CEST)",
            "from orsmga005.jf.intel.com ([10.7.209.41])\n\tby fmsmga103.fm.intel.com with ESMTP/TLS/DHE-RSA-AES256-GCM-SHA384;\n\t03 Apr 2019 07:45:11 -0700",
            "from silpixa00399126.ir.intel.com (HELO\n\tsilpixa00399126.ger.corp.intel.com) ([10.237.222.236])\n\tby orsmga005.jf.intel.com with ESMTP; 03 Apr 2019 07:45:10 -0700"
        ],
        "X-Amp-Result": "SKIPPED(no attachment in message)",
        "X-Amp-File-Uploaded": "False",
        "X-ExtLoop1": "1",
        "X-IronPort-AV": "E=Sophos;i=\"5.60,304,1549958400\"; d=\"scan'208\";a=\"312832681\"",
        "From": "Bruce Richardson <bruce.richardson@intel.com>",
        "To": "dev@dpdk.org",
        "Cc": "Bruce Richardson <bruce.richardson@intel.com>",
        "Date": "Wed,  3 Apr 2019 15:45:00 +0100",
        "Message-Id": "<20190403144505.46234-1-bruce.richardson@intel.com>",
        "X-Mailer": "git-send-email 2.20.1",
        "MIME-Version": "1.0",
        "Content-Transfer-Encoding": "8bit",
        "Subject": "[dpdk-dev] [PATCH 0/5] clean up snprintf use for string copying",
        "X-BeenThere": "dev@dpdk.org",
        "X-Mailman-Version": "2.1.15",
        "Precedence": "list",
        "List-Id": "DPDK patches and discussions <dev.dpdk.org>",
        "List-Unsubscribe": "<https://mails.dpdk.org/options/dev>,\n\t<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\t<mailto:dev-request@dpdk.org?subject=subscribe>",
        "Errors-To": "dev-bounces@dpdk.org",
        "Sender": "\"dev\" <dev-bounces@dpdk.org>"
    },
    "content": "There are quite a few instances remaining in DPDK where snprintf is being\nused for string copying. These were not being picked up by our existing\ncoccinelle script, but that can be fixed by editing the script and running\nit against our code. In the process a bug was found and fixed in the\nbonding pmd, where we were incorrectly specifiying the buffer length\nparameter to snprintf.\n\nThe actual replacement was done in two phases - first replacing all\ninstances where only the snprintf line in question needed changing, then\nfixing the other instances where we also needed to add in the header\ninclude. [Using two stages allowed the header addition to be automated too,\nsince we had a list of files where every one needed the header inclusion]\n\n\nBruce Richardson (5):\n  net/bonding: fix buffer length when printing strings\n  devtools/cocci: make strlcpy replacement smarter\n  devtools/cocci: create safer version of strlcpy script\n  replace snprintf with strlcpy without adding extra include\n  replace snprintf with strlcpy\n\n app/pdump/main.c                              |  4 +--\n app/proc-info/main.c                          |  2 +-\n app/test-acl/main.c                           |  3 +-\n app/test-bbdev/main.c                         |  5 ++-\n app/test-eventdev/evt_options.c               |  3 +-\n app/test-pmd/cmdline_flow.c                   | 13 +++----\n app/test/test_cmdline_etheraddr.c             |  3 +-\n app/test/test_cmdline_num.c                   |  3 +-\n app/test/test_compressdev.c                   |  2 +-\n app/test/test_eal_flags.c                     |  2 +-\n app/test/test_table_acl.c                     | 11 +++---\n devtools/cocci/strlcpy-with-header.cocci      | 12 +++++++\n devtools/cocci/strlcpy.cocci                  |  3 +-\n drivers/bus/dpaa/base/fman/of.c               |  7 ++--\n drivers/bus/pci/bsd/pci.c                     |  2 +-\n drivers/bus/pci/linux/pci_uio.c               |  3 +-\n drivers/bus/vdev/vdev.c                       |  2 +-\n .../crypto/aesni_mb/rte_aesni_mb_pmd_ops.c    |  3 +-\n .../aesni_mb/rte_aesni_mb_pmd_ops_compat.c    |  3 +-\n drivers/crypto/ccp/rte_ccp_pmd.c              |  6 ++--\n .../scheduler/rte_cryptodev_scheduler.c       |  8 ++---\n drivers/event/opdl/opdl_ring.c                |  3 +-\n drivers/net/af_packet/rte_eth_af_packet.c     |  5 +--\n drivers/net/ark/ark_pktchkr.c                 |  3 +-\n drivers/net/ark/ark_pktgen.c                  |  3 +-\n drivers/net/atlantic/atl_ethdev.c             |  5 +--\n drivers/net/bnx2x/bnx2x_ethdev.c              |  8 ++---\n drivers/net/bnxt/bnxt_stats.c                 | 36 +++++++++----------\n drivers/net/bonding/rte_eth_bond_pmd.c        | 23 ++++++------\n drivers/net/dpaa/dpaa_ethdev.c                |  8 ++---\n drivers/net/dpaa2/dpaa2_ethdev.c              |  7 ++--\n drivers/net/e1000/igb_ethdev.c                | 17 ++++-----\n drivers/net/ena/ena_ethdev.c                  | 11 +++---\n drivers/net/failsafe/failsafe_args.c          |  2 +-\n drivers/net/failsafe/failsafe_eal.c           |  6 ++--\n drivers/net/i40e/i40e_ethdev.c                | 12 +++----\n drivers/net/i40e/rte_pmd_i40e.c               |  5 +--\n drivers/net/ice/ice_ethdev.c                  | 11 +++---\n drivers/net/ixgbe/ixgbe_ethdev.c              | 35 +++++++++---------\n drivers/net/kni/rte_eth_kni.c                 |  3 +-\n drivers/net/liquidio/lio_ethdev.c             |  5 +--\n drivers/net/mvneta/mvneta_ethdev.c            |  3 +-\n drivers/net/mvpp2/mrvl_ethdev.c               |  5 +--\n drivers/net/pcap/rte_eth_pcap.c               |  8 ++---\n drivers/net/qede/qede_ethdev.c                | 22 ++++++------\n drivers/net/ring/rte_eth_ring.c               |  3 +-\n drivers/net/softnic/rte_eth_softnic_tap.c     |  2 +-\n drivers/net/tap/rte_eth_tap.c                 |  9 +++--\n drivers/net/virtio/virtio_user/vhost_user.c   |  3 +-\n .../net/virtio/virtio_user/virtio_user_dev.c  |  3 +-\n examples/cmdline/commands.c                   |  2 +-\n examples/cmdline/parse_obj_list.c             |  2 +-\n examples/ethtool/lib/rte_ethtool.c            |  8 ++---\n examples/exception_path/main.c                |  4 +--\n examples/ip_pipeline/kni.c                    |  2 +-\n examples/ip_pipeline/tap.c                    |  2 +-\n examples/l2fwd-crypto/main.c                  |  4 +--\n examples/l3fwd-power/main.c                   |  2 +-\n .../multi_process/simple_mp/mp_commands.c     |  2 +-\n examples/netmap_compat/bridge/bridge.c        |  4 +--\n examples/netmap_compat/lib/compat_netmap.c    |  2 +-\n examples/tep_termination/main.c               |  2 +-\n examples/vhost/main.c                         |  2 +-\n examples/vhost_scsi/scsi.c                    |  9 +++--\n examples/vm_power_manager/channel_manager.c   |  7 ++--\n examples/vm_power_manager/channel_monitor.c   | 14 ++++----\n lib/librte_acl/rte_acl.c                      |  3 +-\n lib/librte_bbdev/rte_bbdev.c                  |  3 +-\n lib/librte_cfgfile/rte_cfgfile.c              | 22 ++++++------\n lib/librte_cmdline/cmdline.c                  |  2 +-\n lib/librte_cmdline/cmdline_parse.c            |  5 +--\n lib/librte_cmdline/cmdline_parse_num.c        |  2 +-\n lib/librte_compressdev/rte_compressdev.c      |  5 +--\n lib/librte_compressdev/rte_compressdev_pmd.c  |  3 +-\n lib/librte_cryptodev/rte_cryptodev.c          |  4 +--\n lib/librte_cryptodev/rte_cryptodev_pmd.c      |  3 +-\n lib/librte_distributor/rte_distributor.c      |  2 +-\n lib/librte_distributor/rte_distributor_v20.c  |  2 +-\n lib/librte_eal/common/eal_common_memzone.c    |  2 +-\n lib/librte_eal/common/eal_common_options.c    |  3 +-\n lib/librte_eal/common/eal_common_tailqs.c     |  2 +-\n lib/librte_efd/rte_efd.c                      |  3 +-\n lib/librte_ethdev/rte_ethdev.c                |  6 ++--\n lib/librte_eventdev/rte_eventdev.c            |  4 +--\n lib/librte_flow_classify/rte_flow_classify.c  |  4 +--\n lib/librte_hash/rte_cuckoo_hash.c             |  2 +-\n lib/librte_hash/rte_fbk_hash.c                |  2 +-\n lib/librte_jobstats/rte_jobstats.c            |  3 +-\n lib/librte_kni/rte_kni.c                      |  6 ++--\n lib/librte_latencystats/rte_latencystats.c    |  5 +--\n lib/librte_lpm/rte_lpm.c                      |  4 +--\n lib/librte_lpm/rte_lpm6.c                     |  2 +-\n lib/librte_member/rte_member.c                |  3 +-\n lib/librte_mempool/rte_mempool.c              |  2 +-\n lib/librte_mempool/rte_mempool_ops.c          |  3 +-\n lib/librte_pdump/rte_pdump.c                  |  8 ++---\n lib/librte_pipeline/rte_pipeline.c            |  2 +-\n lib/librte_power/power_acpi_cpufreq.c         |  3 +-\n lib/librte_power/power_pstate_cpufreq.c       |  3 +-\n lib/librte_rawdev/rte_rawdev.c                |  3 +-\n lib/librte_reorder/rte_reorder.c              |  5 +--\n lib/librte_ring/rte_ring.c                    |  2 +-\n 102 files changed, 302 insertions(+), 270 deletions(-)\n create mode 100644 devtools/cocci/strlcpy-with-header.cocci"
}