mirror of
https://github.com/NationalSecurityAgency/ghidra.git
synced 2025-10-03 09:49:23 +02:00
Merge remote-tracking branch 'origin/patch'
This commit is contained in:
commit
825e8b811d
3 changed files with 18 additions and 7 deletions
|
@ -32,7 +32,8 @@ import ghidra.app.services.DataTypeManagerService;
|
|||
import ghidra.app.util.datatype.DataTypeSelectionEditor;
|
||||
import ghidra.app.util.datatype.NavigationDirection;
|
||||
import ghidra.program.model.address.Address;
|
||||
import ghidra.program.model.data.*;
|
||||
import ghidra.program.model.data.AbstractFloatDataType;
|
||||
import ghidra.program.model.data.DataType;
|
||||
import ghidra.program.model.lang.Register;
|
||||
import ghidra.program.model.listing.*;
|
||||
import ghidra.util.HelpLocation;
|
||||
|
@ -132,12 +133,12 @@ public class StorageAddressEditorDialog extends DialogComponentProvider
|
|||
private void setDataType(DataType dt) {
|
||||
currentDataType = dt;
|
||||
size = dt.getLength();
|
||||
boolean unconstrained = (dt instanceof AbstractFloatDataType) || Undefined.isUndefined(dt);
|
||||
boolean unconstrained = (dt instanceof AbstractFloatDataType) || (dt == DataType.DEFAULT);
|
||||
model.setRequiredSize(size, unconstrained);
|
||||
if (sizeLabel != null) {
|
||||
sizeLabel.setText(Integer.toString(size));
|
||||
dataChanged();
|
||||
}
|
||||
model.notifyDataChanged();
|
||||
}
|
||||
|
||||
private void maybeHandleTabNavigation() {
|
||||
|
|
|
@ -155,7 +155,6 @@ class StorageAddressModel {
|
|||
|
||||
void notifyDataChanged() {
|
||||
validate();
|
||||
|
||||
SwingUtilities.invokeLater(() -> listener.dataChanged());
|
||||
}
|
||||
|
||||
|
@ -174,6 +173,7 @@ class StorageAddressModel {
|
|||
}
|
||||
else if (currentSize < requiredSize) {
|
||||
statusText = "Warning: Not enough storage space allocated";
|
||||
return false;
|
||||
}
|
||||
else if (currentSize > requiredSize) {
|
||||
statusText = "Warning: Too much storage space allocated";
|
||||
|
|
|
@ -155,7 +155,14 @@ class VarnodeTableModel extends AbstractGTableModel<VarnodeInfo> {
|
|||
return;
|
||||
}
|
||||
if (aValue instanceof Address) {
|
||||
storageModel.setVarnode(varnode, (Address) aValue, varnode.getSize());
|
||||
Integer size = varnode.getSize();
|
||||
if (size == null) {
|
||||
size = storageModel.getRequiredSize() - storageModel.getCurrentSize();
|
||||
if (size <= 0) {
|
||||
size = 1;
|
||||
}
|
||||
}
|
||||
storageModel.setVarnode(varnode, (Address) aValue, size);
|
||||
}
|
||||
else if (aValue instanceof Register) {
|
||||
storageModel.setVarnode(varnode, (Register) aValue);
|
||||
|
@ -187,6 +194,9 @@ class VarnodeTableModel extends AbstractGTableModel<VarnodeInfo> {
|
|||
}
|
||||
Address address = varnode.getAddress();
|
||||
int size = (Integer) aValue;
|
||||
if (size <= 0) {
|
||||
return;
|
||||
}
|
||||
if (address != null) {
|
||||
Register reg = varnode.getRegister();
|
||||
if (reg != null && reg.isBigEndian()) {
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue