ACPICA: Add support for zero-length buffer-to-string conversions
authorBob Moore <robert.moore@intel.com>
Sat, 27 Sep 2008 05:27:51 +0000 (13:27 +0800)
committerLen Brown <len.brown@intel.com>
Thu, 23 Oct 2008 03:14:50 +0000 (23:14 -0400)
Allow zero length strings during interpreter buffer-to-string
conversions. For example, during the ToDecimalString and
ToHexString operaters, as well as implicit conversions. Fiodor
Suietov.  ACPICA BZ 585.

http://www.acpica.org/bugzilla/show_bug.cgi?id=585

Signed-off-by: Bob Moore <robert.moore@intel.com>
Signed-off-by: Lin Ming <ming.m.lin@intel.com>
Signed-off-by: Len Brown <len.brown@intel.com>
drivers/acpi/executer/exconvrt.c

index 890378e..1d1f35a 100644 (file)
@@ -512,9 +512,14 @@ acpi_ex_convert_to_string(union acpi_operand_object * obj_desc,
                /*
                 * Create a new string object and string buffer
                 * (-1 because of extra separator included in string_length from above)
+                * Allow creation of zero-length strings from zero-length buffers.
                 */
+               if (string_length) {
+                       string_length--;
+               }
+
                return_desc = acpi_ut_create_string_object((acpi_size)
-                                                          (string_length - 1));
+                                                          string_length);
                if (!return_desc) {
                        return_ACPI_STATUS(AE_NO_MEMORY);
                }
@@ -537,7 +542,9 @@ acpi_ex_convert_to_string(union acpi_operand_object * obj_desc,
                 * Null terminate the string
                 * (overwrites final comma/space from above)
                 */
-               new_buf--;
+               if (obj_desc->buffer.length) {
+                       new_buf--;
+               }
                *new_buf = 0;
                break;