mirror of
https://github.com/NationalSecurityAgency/ghidra.git
synced 2025-10-05 02:39:44 +02:00
GP-0 corrected Data pointer stacking test failures
This commit is contained in:
parent
60fc7a35c2
commit
b3c19de3dd
2 changed files with 14 additions and 12 deletions
|
@ -483,16 +483,17 @@ public class CreateDataCmdTest extends AbstractGenericTest {
|
||||||
pdt = (Pointer) dt;
|
pdt = (Pointer) dt;
|
||||||
assertNull(pdt.getDataType());
|
assertNull(pdt.getDataType());
|
||||||
|
|
||||||
|
// When default pointer is stacked, the resulting pointer size will match
|
||||||
|
// the outmost pointer size - in this case that is 1-byte
|
||||||
cmd = new CreateDataCmd(addr, false, true, new PointerDataType());
|
cmd = new CreateDataCmd(addr, false, true, new PointerDataType());
|
||||||
cmd.applyTo(program);
|
cmd.applyTo(program);
|
||||||
|
|
||||||
d = listing.getDataAt(addr);
|
d = listing.getDataAt(addr);
|
||||||
assertNotNull(d);
|
assertNotNull(d);
|
||||||
assertTrue(d.isDefined());
|
assertTrue(d.isDefined());
|
||||||
assertEquals(addr.getPointerSize(), d.getLength());
|
assertEquals(1, d.getLength());
|
||||||
dt = d.getDataType();
|
dt = d.getDataType();
|
||||||
assertTrue(dt instanceof Pointer);
|
assertTrue(dt instanceof Pointer);
|
||||||
assertEquals(addr.getPointerSize(), dt.getLength());
|
assertEquals(1, dt.getLength());
|
||||||
|
|
||||||
pdt = (Pointer) dt;
|
pdt = (Pointer) dt;
|
||||||
dt = pdt.getDataType();
|
dt = pdt.getDataType();
|
||||||
|
@ -557,16 +558,17 @@ public class CreateDataCmdTest extends AbstractGenericTest {
|
||||||
pdt = (Pointer) dt;
|
pdt = (Pointer) dt;
|
||||||
assertTrue(pdt.getDataType() instanceof ByteDataType);
|
assertTrue(pdt.getDataType() instanceof ByteDataType);
|
||||||
|
|
||||||
|
// When default pointer is stacked, the resulting pointer size will match
|
||||||
|
// the outmost pointer size - in this case that is 1-byte
|
||||||
cmd = new CreateDataCmd(addr, false, true, new PointerDataType());
|
cmd = new CreateDataCmd(addr, false, true, new PointerDataType());
|
||||||
cmd.applyTo(program);
|
cmd.applyTo(program);
|
||||||
|
|
||||||
d = listing.getDataAt(addr);
|
d = listing.getDataAt(addr);
|
||||||
assertNotNull(d);
|
assertNotNull(d);
|
||||||
assertTrue(d.isDefined());
|
assertTrue(d.isDefined());
|
||||||
assertEquals(addr.getPointerSize(), d.getLength());
|
assertEquals(1, d.getLength());
|
||||||
dt = d.getDataType();
|
dt = d.getDataType();
|
||||||
assertTrue(dt instanceof Pointer);
|
assertTrue(dt instanceof Pointer);
|
||||||
assertEquals(addr.getPointerSize(), dt.getLength());
|
assertEquals(1, dt.getLength());
|
||||||
|
|
||||||
pdt = (Pointer) dt;
|
pdt = (Pointer) dt;
|
||||||
dt = pdt.getDataType();
|
dt = pdt.getDataType();
|
||||||
|
@ -630,8 +632,8 @@ public class CreateDataCmdTest extends AbstractGenericTest {
|
||||||
|
|
||||||
// Add external reference from pointer
|
// Add external reference from pointer
|
||||||
program.getReferenceManager()
|
program.getReferenceManager()
|
||||||
.addExternalReference(addr, "OtherFile", "ExtLabel", null,
|
.addExternalReference(addr, "OtherFile", "ExtLabel", null, SourceType.USER_DEFINED,
|
||||||
SourceType.USER_DEFINED, 0, RefType.DATA);
|
0, RefType.DATA);
|
||||||
|
|
||||||
// Undefined* becomes Byte*
|
// Undefined* becomes Byte*
|
||||||
cmd = new CreateDataCmd(addr, false, true, new ByteDataType());
|
cmd = new CreateDataCmd(addr, false, true, new ByteDataType());
|
||||||
|
|
|
@ -166,6 +166,10 @@ public final class DataUtilities {
|
||||||
Reference extRef = null;
|
Reference extRef = null;
|
||||||
if (!isParentData(data, addr)) {
|
if (!isParentData(data, addr)) {
|
||||||
|
|
||||||
|
if (!stackPointers && isDataClearingDenied(existingType, clearMode)) {
|
||||||
|
throw new CodeUnitInsertionException("Could not create Data at address " + addr);
|
||||||
|
}
|
||||||
|
|
||||||
existingLength = data.getLength();
|
existingLength = data.getLength();
|
||||||
|
|
||||||
if (data.isDefined()) {
|
if (data.isDefined()) {
|
||||||
|
@ -185,10 +189,6 @@ public final class DataUtilities {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!stackPointers && isDataClearingDenied(existingType, clearMode)) {
|
|
||||||
throw new CodeUnitInsertionException("Could not create Data at address " + addr);
|
|
||||||
}
|
|
||||||
|
|
||||||
// TODO: This can probably be eliminated
|
// TODO: This can probably be eliminated
|
||||||
// Check for external reference on pointer
|
// Check for external reference on pointer
|
||||||
extRef =
|
extRef =
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue