aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBob Moore <robert.moore@intel.com>2008-09-27 01:27:51 -0400
committerLen Brown <len.brown@intel.com>2008-10-22 23:14:50 -0400
commit4ca846e9270f305ad19e61f6654664f31459f332 (patch)
treeecea9b480c8fc02ffed9de7865ed4394908501d2
parente8707b340fb5b6313cde784b944a568dfd770ddd (diff)
ACPICA: Add support for zero-length buffer-to-string conversions
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>
-rw-r--r--drivers/acpi/executer/exconvrt.c11
1 files changed, 9 insertions, 2 deletions
diff --git a/drivers/acpi/executer/exconvrt.c b/drivers/acpi/executer/exconvrt.c
index 890378e789a4..1d1f35adddde 100644
--- a/drivers/acpi/executer/exconvrt.c
+++ b/drivers/acpi/executer/exconvrt.c
@@ -512,9 +512,14 @@ acpi_ex_convert_to_string(union acpi_operand_object * obj_desc,
512 /* 512 /*
513 * Create a new string object and string buffer 513 * Create a new string object and string buffer
514 * (-1 because of extra separator included in string_length from above) 514 * (-1 because of extra separator included in string_length from above)
515 * Allow creation of zero-length strings from zero-length buffers.
515 */ 516 */
517 if (string_length) {
518 string_length--;
519 }
520
516 return_desc = acpi_ut_create_string_object((acpi_size) 521 return_desc = acpi_ut_create_string_object((acpi_size)
517 (string_length - 1)); 522 string_length);
518 if (!return_desc) { 523 if (!return_desc) {
519 return_ACPI_STATUS(AE_NO_MEMORY); 524 return_ACPI_STATUS(AE_NO_MEMORY);
520 } 525 }
@@ -537,7 +542,9 @@ acpi_ex_convert_to_string(union acpi_operand_object * obj_desc,
537 * Null terminate the string 542 * Null terminate the string
538 * (overwrites final comma/space from above) 543 * (overwrites final comma/space from above)
539 */ 544 */
540 new_buf--; 545 if (obj_desc->buffer.length) {
546 new_buf--;
547 }
541 *new_buf = 0; 548 *new_buf = 0;
542 break; 549 break;
543 550