drivers/char/tpm/tpm_ppi: use strlcpy instead of strncpy
authorChen Gang <gang.chen@asianux.com>
Thu, 28 Feb 2013 22:24:50 +0000 (16:24 -0600)
committerKent Yoder <key@linux.vnet.ibm.com>
Fri, 12 Apr 2013 17:17:28 +0000 (12:17 -0500)
 Ensure that the 'version' string includes a NULL terminator after its
copied out of the acpi table.

Signed-off-by: Chen Gang <gang.chen@asianux.com>
Signed-off-by: Kent Yoder <key@linux.vnet.ibm.com>
drivers/char/tpm/tpm_ppi.c

index 720ebcf..2168d15 100644 (file)
@@ -158,9 +158,9 @@ static ssize_t tpm_store_ppi_request(struct device *dev,
                                            ACPI_TYPE_STRING);
        if (ACPI_FAILURE(status))
                return -ENOMEM;
-       strncpy(version,
+       strlcpy(version,
                ((union acpi_object *)output.pointer)->string.pointer,
-               PPI_VERSION_LEN);
+               PPI_VERSION_LEN + 1);
        kfree(output.pointer);
        output.length = ACPI_ALLOCATE_BUFFER;
        output.pointer = NULL;
@@ -237,9 +237,9 @@ static ssize_t tpm_show_ppi_transition_action(struct device *dev,
                                            ACPI_TYPE_STRING);
        if (ACPI_FAILURE(status))
                return -ENOMEM;
-       strncpy(version,
+       strlcpy(version,
                ((union acpi_object *)output.pointer)->string.pointer,
-               PPI_VERSION_LEN);
+               PPI_VERSION_LEN + 1);
        /*
         * PPI spec defines params[3].type as empty package, but some platforms
         * (e.g. Capella with PPI 1.0) need integer/string/buffer type, so for
@@ -351,7 +351,7 @@ cleanup:
 static ssize_t show_ppi_operations(char *buf, u32 start, u32 end)
 {
        char *str = buf;
-       char version[PPI_VERSION_LEN];
+       char version[PPI_VERSION_LEN + 1];
        acpi_handle handle;
        acpi_status status;
        struct acpi_object_list input;
@@ -381,9 +381,9 @@ static ssize_t show_ppi_operations(char *buf, u32 start, u32 end)
        if (ACPI_FAILURE(status))
                return -ENOMEM;
 
-       strncpy(version,
+       strlcpy(version,
                ((union acpi_object *)output.pointer)->string.pointer,
-               PPI_VERSION_LEN);
+               PPI_VERSION_LEN + 1);
        kfree(output.pointer);
        output.length = ACPI_ALLOCATE_BUFFER;
        output.pointer = NULL;