ACPICA: Fix possible negative array index in acpi_ut_validate_exception
authorBob Moore <robert.moore@intel.com>
Tue, 10 Jun 2008 04:53:01 +0000 (12:53 +0800)
committerAndi Kleen <andi@basil.nowhere.org>
Wed, 16 Jul 2008 21:27:03 +0000 (23:27 +0200)
Added NULL fields to the exception string arrays to eliminate
the -1 subtraction on the SubStatus field.

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>
Signed-off-by: Andi Kleen <ak@linux.intel.com>
drivers/acpi/utilities/utmisc.c
include/acpi/acexcep.h

index 1f057b71db1a4aca5c68f271ff9c50d4a04acec5..47354d9b0e568e365bb6cea8d2e15491dcb43c10 100644 (file)
@@ -64,7 +64,7 @@ ACPI_MODULE_NAME("utmisc")
  ******************************************************************************/
 const char *acpi_ut_validate_exception(acpi_status status)
 {
-       acpi_status sub_status;
+       u32 sub_status;
        const char *exception = NULL;
 
        ACPI_FUNCTION_ENTRY();
@@ -85,32 +85,28 @@ const char *acpi_ut_validate_exception(acpi_status status)
        case AE_CODE_PROGRAMMER:
 
                if (sub_status <= AE_CODE_PGM_MAX) {
-                       exception =
-                           acpi_gbl_exception_names_pgm[sub_status - 1];
+                       exception = acpi_gbl_exception_names_pgm[sub_status];
                }
                break;
 
        case AE_CODE_ACPI_TABLES:
 
                if (sub_status <= AE_CODE_TBL_MAX) {
-                       exception =
-                           acpi_gbl_exception_names_tbl[sub_status - 1];
+                       exception = acpi_gbl_exception_names_tbl[sub_status];
                }
                break;
 
        case AE_CODE_AML:
 
                if (sub_status <= AE_CODE_AML_MAX) {
-                       exception =
-                           acpi_gbl_exception_names_aml[sub_status - 1];
+                       exception = acpi_gbl_exception_names_aml[sub_status];
                }
                break;
 
        case AE_CODE_CONTROL:
 
                if (sub_status <= AE_CODE_CTRL_MAX) {
-                       exception =
-                           acpi_gbl_exception_names_ctrl[sub_status - 1];
+                       exception = acpi_gbl_exception_names_ctrl[sub_status];
                }
                break;
 
index ea627ed2420da3fbaa10b176cb6e2d145a240266..e5a890ffeb02c26ec55f73ff4a0ff58912306087 100644 (file)
@@ -226,6 +226,7 @@ char const *acpi_gbl_exception_names_env[] = {
 };
 
 char const *acpi_gbl_exception_names_pgm[] = {
+       NULL,
        "AE_BAD_PARAMETER",
        "AE_BAD_CHARACTER",
        "AE_BAD_PATHNAME",
@@ -239,6 +240,7 @@ char const *acpi_gbl_exception_names_pgm[] = {
 };
 
 char const *acpi_gbl_exception_names_tbl[] = {
+       NULL,
        "AE_BAD_SIGNATURE",
        "AE_BAD_HEADER",
        "AE_BAD_CHECKSUM",
@@ -248,6 +250,7 @@ char const *acpi_gbl_exception_names_tbl[] = {
 };
 
 char const *acpi_gbl_exception_names_aml[] = {
+       NULL,
        "AE_AML_ERROR",
        "AE_AML_PARSE",
        "AE_AML_BAD_OPCODE",
@@ -285,6 +288,7 @@ char const *acpi_gbl_exception_names_aml[] = {
 };
 
 char const *acpi_gbl_exception_names_ctrl[] = {
+       NULL,
        "AE_CTRL_RETURN_VALUE",
        "AE_CTRL_PENDING",
        "AE_CTRL_TERMINATE",