dmresrc.c (123315) | dmresrc.c (126372) |
---|---|
1/******************************************************************************* 2 * 3 * Module Name: dmresrc.c - Resource Descriptor disassembly | 1/******************************************************************************* 2 * 3 * Module Name: dmresrc.c - Resource Descriptor disassembly |
4 * $Revision: 10 $ | 4 * $Revision: 13 $ |
5 * 6 ******************************************************************************/ 7 8/****************************************************************************** 9 * 10 * 1. Copyright Notice 11 * | 5 * 6 ******************************************************************************/ 7 8/****************************************************************************** 9 * 10 * 1. Copyright Notice 11 * |
12 * Some or all of this work - Copyright (c) 1999 - 2003, Intel Corp. | 12 * Some or all of this work - Copyright (c) 1999 - 2004, Intel Corp. |
13 * All rights reserved. 14 * 15 * 2. License 16 * 17 * 2.1. This is your license from Intel Corp. under its intellectual property 18 * rights. You may have additional license terms from the party that provided 19 * you this software, covering your right to use that party's intellectual 20 * property rights. --- 407 unchanged lines hidden (view full) --- 428 return (FALSE); 429 } 430 431 /* Extract the data pointer and data length */ 432 433 ByteCount = (UINT32) NextOp->Common.Value.Integer; 434 ByteData = NextOp->Named.Data; 435 | 13 * All rights reserved. 14 * 15 * 2. License 16 * 17 * 2.1. This is your license from Intel Corp. under its intellectual property 18 * rights. You may have additional license terms from the party that provided 19 * you this software, covering your right to use that party's intellectual 20 * property rights. --- 407 unchanged lines hidden (view full) --- 428 return (FALSE); 429 } 430 431 /* Extract the data pointer and data length */ 432 433 ByteCount = (UINT32) NextOp->Common.Value.Integer; 434 ByteData = NextOp->Named.Data; 435 |
436 /* The list must have a valid END_TAG */ | 436 /* Absolute minimum descriptor is an END_TAG (2 bytes) */ |
437 | 437 |
438 if (ByteData[ByteCount-1] != (ACPI_RDESC_TYPE_END_TAG | 1)) | 438 if (ByteCount < 2) |
439 { | 439 { |
440 return (FALSE); 441 } 442 443 /* The list must have a valid 2-byte END_TAG */ 444 445 if (ByteData[ByteCount-2] != (ACPI_RDESC_TYPE_END_TAG | 1)) 446 { |
|
440 return FALSE; 441 } 442 443 /* 444 * Walk the byte list. Abort on any invalid descriptor ID or 445 * or length 446 */ | 447 return FALSE; 448 } 449 450 /* 451 * Walk the byte list. Abort on any invalid descriptor ID or 452 * or length 453 */ |
447 for (CurrentByteOffset = 0; CurrentByteOffset < ByteCount; ) | 454 for (CurrentByteOffset = 0; CurrentByteOffset < ByteCount;) |
448 { 449 CurrentByte = ByteData[CurrentByteOffset]; 450 451 /* Large or small resource? */ 452 453 if (CurrentByte & ACPI_RDESC_TYPE_LARGE) 454 { 455 DescriptorId = CurrentByte; --- 18 unchanged lines hidden (view full) --- 474 */ 475 case ACPI_RDESC_TYPE_IRQ_FORMAT: 476 case ACPI_RDESC_TYPE_DMA_FORMAT: 477 case ACPI_RDESC_TYPE_START_DEPENDENT: 478 case ACPI_RDESC_TYPE_END_DEPENDENT: 479 case ACPI_RDESC_TYPE_IO_PORT: 480 case ACPI_RDESC_TYPE_FIXED_IO_PORT: 481 case ACPI_RDESC_TYPE_SMALL_VENDOR: | 455 { 456 CurrentByte = ByteData[CurrentByteOffset]; 457 458 /* Large or small resource? */ 459 460 if (CurrentByte & ACPI_RDESC_TYPE_LARGE) 461 { 462 DescriptorId = CurrentByte; --- 18 unchanged lines hidden (view full) --- 481 */ 482 case ACPI_RDESC_TYPE_IRQ_FORMAT: 483 case ACPI_RDESC_TYPE_DMA_FORMAT: 484 case ACPI_RDESC_TYPE_START_DEPENDENT: 485 case ACPI_RDESC_TYPE_END_DEPENDENT: 486 case ACPI_RDESC_TYPE_IO_PORT: 487 case ACPI_RDESC_TYPE_FIXED_IO_PORT: 488 case ACPI_RDESC_TYPE_SMALL_VENDOR: |
489 |
|
482 /* 483 * "Large" type descriptors 484 */ 485 case ACPI_RDESC_TYPE_MEMORY_24: 486 case ACPI_RDESC_TYPE_GENERAL_REGISTER: 487 case ACPI_RDESC_TYPE_LARGE_VENDOR: 488 case ACPI_RDESC_TYPE_MEMORY_32: 489 case ACPI_RDESC_TYPE_FIXED_MEMORY_32: --- 39 unchanged lines hidden --- | 490 /* 491 * "Large" type descriptors 492 */ 493 case ACPI_RDESC_TYPE_MEMORY_24: 494 case ACPI_RDESC_TYPE_GENERAL_REGISTER: 495 case ACPI_RDESC_TYPE_LARGE_VENDOR: 496 case ACPI_RDESC_TYPE_MEMORY_32: 497 case ACPI_RDESC_TYPE_FIXED_MEMORY_32: --- 39 unchanged lines hidden --- |