From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754313AbZKPVMZ (ORCPT ); Mon, 16 Nov 2009 16:12:25 -0500 Received: (majordomo@vger.kernel.org) by vger.kernel.org id S1754273AbZKPVMY (ORCPT ); Mon, 16 Nov 2009 16:12:24 -0500 Received: from ey-out-2122.google.com ([74.125.78.24]:55809 "EHLO ey-out-2122.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754168AbZKPVMX (ORCPT ); Mon, 16 Nov 2009 16:12:23 -0500 DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=message-id:date:from:user-agent:mime-version:to:cc:subject :references:in-reply-to:content-type:content-transfer-encoding; b=JPXMDEX2ciplcsQlqiOapxKgE+Pm2jOY06+K12QeDSysG2OcSzDehW3/bduFnf2qPw z176gMSEYwmkfIz2vGITERHLhiIu1PD3VteYE7ZaUBuGJEZIlyLzuenRsXXsjL+4ufY3 0XaIwJsi1kdQfmwLWqkc+z0QLrqha971Zq80Q= Message-ID: <4B01C327.7050805@gmail.com> Date: Mon, 16 Nov 2009 22:24:55 +0100 From: Roel Kluin User-Agent: Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.1.4pre) Gecko/20091014 Fedora/3.0-2.8.b4.fc11 Thunderbird/3.0b4 MIME-Version: 1.0 To: Roel Kluin CC: Randy Dunlap , linux-doc@vger.kernel.org, Andrew Morton , LKML , David Wagner Subject: Re: [PATCH] Documentation: Fix NUL termination of strncpy References: <4B018405.2030408@gmail.com> <4B019F52.50509@gmail.com> In-Reply-To: <4B019F52.50509@gmail.com> Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Ensure the copied strings are NUL terminated. Signed-off-by: Roel Kluin --- >> Rationale (please correct me if I'm wrong): I was confused. strncpy requires explicit NUL termination or it depends on a NUL in the source string. Documentation/accounting/getdelays.c | 3 ++- Documentation/hwmon/hpfall.c | 3 ++- Documentation/networking/radiotap-headers.txt | 2 +- .../networking/timestamping/timestamping.c | 6 ++++-- 4 files changed, 9 insertions(+), 5 deletions(-) diff --git a/Documentation/accounting/getdelays.c b/Documentation/accounting/getdelays.c index 6e25c26..ba54b19 100644 --- a/Documentation/accounting/getdelays.c +++ b/Documentation/accounting/getdelays.c @@ -303,7 +303,8 @@ int main(int argc, char *argv[]) err(1, "Invalid rcv buf size\n"); break; case 'm': - strncpy(cpumask, optarg, sizeof(cpumask)); + strncpy(cpumask, optarg, sizeof(cpumask) - 1); + cpumask[sizeof(cpumask) - 1] = '\0'; maskset = 1; printf("cpumask %s maskset %d\n", cpumask, maskset); break; diff --git a/Documentation/hwmon/hpfall.c b/Documentation/hwmon/hpfall.c index 681ec22..4a06c06 100644 --- a/Documentation/hwmon/hpfall.c +++ b/Documentation/hwmon/hpfall.c @@ -27,7 +27,8 @@ int set_unload_heads_path(char *device) if (strlen(device) <= 5 || strncmp(device, "/dev/", 5) != 0) return -EINVAL; - strncpy(devname, device + 5, sizeof(devname)); + strncpy(devname, device + 5, sizeof(devname) - 1); + devname[sizeof(devname) - 1] = '\0'; snprintf(unload_heads_path, sizeof(unload_heads_path), "/sys/block/%s/device/unload_heads", devname); diff --git a/Documentation/networking/radiotap-headers.txt b/Documentation/networking/radiotap-headers.txt index 953331c..447e004 100644 --- a/Documentation/networking/radiotap-headers.txt +++ b/Documentation/networking/radiotap-headers.txt @@ -126,7 +126,7 @@ int MyFunction(u8 * buf, int buflen) case IEEE80211_RADIOTAP_ANTENNA: /* radiotap uses 0 for 1st ant */ - antenna = *iterator.this_arg); + antenna = *iterator.this_arg; break; case IEEE80211_RADIOTAP_DBM_TX_POWER: diff --git a/Documentation/networking/timestamping/timestamping.c b/Documentation/networking/timestamping/timestamping.c index a7936fe..e2a17a4 100644 --- a/Documentation/networking/timestamping/timestamping.c +++ b/Documentation/networking/timestamping/timestamping.c @@ -374,12 +374,14 @@ int main(int argc, char **argv) bail("socket"); memset(&device, 0, sizeof(device)); - strncpy(device.ifr_name, interface, sizeof(device.ifr_name)); + strncpy(device.ifr_name, interface, sizeof(device.ifr_name) - 1); + device.ifr_name[sizeof(device.ifr_name) - 1] = '\0'; if (ioctl(sock, SIOCGIFADDR, &device) < 0) bail("getting interface IP address"); memset(&hwtstamp, 0, sizeof(hwtstamp)); - strncpy(hwtstamp.ifr_name, interface, sizeof(hwtstamp.ifr_name)); + strncpy(hwtstamp.ifr_name, interface, sizeof(hwtstamp.ifr_name) - 1); + hwtstamp.ifr_name[sizeof(hwtstamp.ifr_name) - 1] = '\0'; hwtstamp.ifr_data = (void *)&hwconfig; memset(&hwconfig, 0, sizeof(hwconfig)); hwconfig.tx_type =