mirror of
https://github.com/NationalSecurityAgency/ghidra.git
synced 2025-02-16 23:50:14 +00:00
GT-3521 fix problem with "Method is not Remote" when connecting
A recent change in java's RemoteObjectInvocationHandler added an
additional check to ensure that the interface a method was declared on
was also marked with the Remote marker interface. Previously the check
was looser and only checked if the entire proxied object implemented
Remote.
The change was made in commit be35f9ef53774a87662ad7a0bb978986ea56ca78:
be35f9ef53
The error the user would encounter would say something about "Method is
not Remote" and something about "RepositoryServerHandle.isReadOnly()".
This commit is contained in:
parent
30da09cce2
commit
4342b5b9a9
@ -15,12 +15,73 @@
|
||||
*/
|
||||
package db.buffers;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.rmi.Remote;
|
||||
import java.util.NoSuchElementException;
|
||||
|
||||
/**
|
||||
* <code>RemoteBufferFileHandle</code> facilitates access to a remote BufferFile
|
||||
* via RMI.
|
||||
* <p>
|
||||
* Methods from {@link BufferFileHandle} <b>must</b> be re-declared here to mark them as rmi-able.
|
||||
*/
|
||||
public interface RemoteBufferFileHandle extends BufferFileHandle, Remote {
|
||||
// provides combined interface
|
||||
@Override
|
||||
public boolean isReadOnly() throws IOException;
|
||||
|
||||
@Override
|
||||
public boolean setReadOnly() throws IOException;
|
||||
|
||||
@Override
|
||||
public int getParameter(String name) throws NoSuchElementException, IOException;
|
||||
|
||||
@Override
|
||||
public void setParameter(String name, int value) throws IOException;
|
||||
|
||||
@Override
|
||||
public void clearParameters() throws IOException;
|
||||
|
||||
@Override
|
||||
public String[] getParameterNames() throws IOException;
|
||||
|
||||
@Override
|
||||
public int getBufferSize() throws IOException;
|
||||
|
||||
@Override
|
||||
public int getIndexCount() throws IOException;
|
||||
|
||||
@Override
|
||||
public int[] getFreeIndexes() throws IOException;
|
||||
|
||||
@Override
|
||||
public void setFreeIndexes(int[] indexes) throws IOException;
|
||||
|
||||
@Override
|
||||
public void close() throws IOException;
|
||||
|
||||
@Override
|
||||
public boolean delete() throws IOException;
|
||||
|
||||
@Override
|
||||
public DataBuffer get(int index) throws IOException;
|
||||
|
||||
@Override
|
||||
public void put(DataBuffer buf, int index) throws IOException;
|
||||
|
||||
@Override
|
||||
public void dispose() throws IOException;
|
||||
|
||||
@Override
|
||||
public InputBlockStream getInputBlockStream() throws IOException;
|
||||
|
||||
@Override
|
||||
public OutputBlockStream getOutputBlockStream(int blockCount) throws IOException;
|
||||
|
||||
@Override
|
||||
public BlockStreamHandle<InputBlockStream> getInputBlockStreamHandle() throws IOException;
|
||||
|
||||
@Override
|
||||
public BlockStreamHandle<OutputBlockStream> getOutputBlockStreamHandle(int blockCount)
|
||||
throws IOException;
|
||||
|
||||
}
|
||||
|
@ -15,12 +15,114 @@
|
||||
*/
|
||||
package db.buffers;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.rmi.Remote;
|
||||
import java.util.NoSuchElementException;
|
||||
|
||||
/**
|
||||
* <code>RemoteManagedBufferFileHandle</code> facilitates access to a ManagedBufferFile
|
||||
* via RMI.
|
||||
* <p>
|
||||
* Methods from {@link BufferFileHandle} and {@link ManagedBufferFile} <b>must</b> be re-declared
|
||||
* here to mark them as rmi-able.
|
||||
*
|
||||
*/
|
||||
public interface RemoteManagedBufferFileHandle extends ManagedBufferFileHandle, Remote {
|
||||
// provides combined interface
|
||||
|
||||
//--------------------------------------------------------------------------
|
||||
// BufferFileHandle methods
|
||||
//--------------------------------------------------------------------------
|
||||
@Override
|
||||
public boolean isReadOnly() throws IOException;
|
||||
|
||||
@Override
|
||||
public boolean setReadOnly() throws IOException;
|
||||
|
||||
@Override
|
||||
public int getParameter(String name) throws NoSuchElementException, IOException;
|
||||
|
||||
@Override
|
||||
public void setParameter(String name, int value) throws IOException;
|
||||
|
||||
@Override
|
||||
public void clearParameters() throws IOException;
|
||||
|
||||
@Override
|
||||
public String[] getParameterNames() throws IOException;
|
||||
|
||||
@Override
|
||||
public int getBufferSize() throws IOException;
|
||||
|
||||
@Override
|
||||
public int getIndexCount() throws IOException;
|
||||
|
||||
@Override
|
||||
public int[] getFreeIndexes() throws IOException;
|
||||
|
||||
@Override
|
||||
public void setFreeIndexes(int[] indexes) throws IOException;
|
||||
|
||||
@Override
|
||||
public void close() throws IOException;
|
||||
|
||||
@Override
|
||||
public boolean delete() throws IOException;
|
||||
|
||||
@Override
|
||||
public DataBuffer get(int index) throws IOException;
|
||||
|
||||
@Override
|
||||
public void put(DataBuffer buf, int index) throws IOException;
|
||||
|
||||
@Override
|
||||
public void dispose() throws IOException;
|
||||
|
||||
@Override
|
||||
public InputBlockStream getInputBlockStream() throws IOException;
|
||||
|
||||
@Override
|
||||
public OutputBlockStream getOutputBlockStream(int blockCount) throws IOException;
|
||||
|
||||
@Override
|
||||
public BlockStreamHandle<InputBlockStream> getInputBlockStreamHandle() throws IOException;
|
||||
|
||||
@Override
|
||||
public BlockStreamHandle<OutputBlockStream> getOutputBlockStreamHandle(int blockCount)
|
||||
throws IOException;
|
||||
|
||||
//--------------------------------------------------------------------------
|
||||
// ManagedBufferFileHandle methods
|
||||
//--------------------------------------------------------------------------
|
||||
|
||||
@Override
|
||||
public ManagedBufferFileHandle getSaveFile() throws IOException;
|
||||
|
||||
@Override
|
||||
public void saveCompleted(boolean commit) throws IOException;
|
||||
|
||||
@Override
|
||||
public boolean canSave() throws IOException;
|
||||
|
||||
@Override
|
||||
public void setVersionComment(String comment) throws IOException;
|
||||
|
||||
@Override
|
||||
public BufferFileHandle getNextChangeDataFile(boolean getFirst) throws IOException;
|
||||
|
||||
@Override
|
||||
public BufferFileHandle getSaveChangeDataFile() throws IOException;
|
||||
|
||||
@Override
|
||||
public long getCheckinID() throws IOException;
|
||||
|
||||
@Override
|
||||
public byte[] getForwardModMapData(int oldVersion) throws IOException;
|
||||
|
||||
@Override
|
||||
public InputBlockStream getInputBlockStream(byte[] changeMapData) throws IOException;
|
||||
|
||||
@Override
|
||||
public BlockStreamHandle<InputBlockStream> getInputBlockStreamHandle(byte[] changeMapData)
|
||||
throws IOException;
|
||||
|
||||
}
|
||||
|
@ -15,11 +15,117 @@
|
||||
*/
|
||||
package ghidra.framework.remote;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.rmi.Remote;
|
||||
|
||||
import db.buffers.ManagedBufferFileHandle;
|
||||
import ghidra.framework.store.*;
|
||||
import ghidra.util.InvalidNameException;
|
||||
|
||||
/**
|
||||
* <code>RepositoryHandle</code> provides access to a remote repository via RMI.
|
||||
* <p>
|
||||
* Methods from {@link RepositoryHandle} <b>must</b> be re-declared here to mark them as rmi-able.
|
||||
*/
|
||||
public interface RemoteRepositoryHandle extends RepositoryHandle, Remote {
|
||||
@Override
|
||||
String getName() throws IOException;
|
||||
|
||||
@Override
|
||||
User getUser() throws IOException;
|
||||
|
||||
@Override
|
||||
User[] getUserList() throws IOException;
|
||||
|
||||
@Override
|
||||
boolean anonymousAccessAllowed() throws IOException;
|
||||
|
||||
@Override
|
||||
String[] getServerUserList() throws IOException;
|
||||
|
||||
@Override
|
||||
void setUserList(User[] users, boolean anonymousAccessAllowed) throws IOException;
|
||||
|
||||
@Override
|
||||
String[] getSubfolderList(String folderPath) throws IOException;
|
||||
|
||||
@Override
|
||||
int getItemCount() throws IOException;
|
||||
|
||||
@Override
|
||||
RepositoryItem[] getItemList(String folderPath) throws IOException;
|
||||
|
||||
@Override
|
||||
RepositoryItem getItem(String parentPath, String name) throws IOException;
|
||||
|
||||
@Override
|
||||
RepositoryItem getItem(String fileID) throws IOException;
|
||||
|
||||
@Override
|
||||
ManagedBufferFileHandle createDatabase(String parentPath, String itemName, String fileID,
|
||||
int bufferSize, String contentType, String projectPath)
|
||||
throws IOException, InvalidNameException;
|
||||
|
||||
@Override
|
||||
ManagedBufferFileHandle openDatabase(String parentPath, String itemName, int version,
|
||||
int minChangeDataVer) throws IOException;
|
||||
|
||||
@Override
|
||||
ManagedBufferFileHandle openDatabase(String parentPath, String itemName, long checkoutId)
|
||||
throws IOException;
|
||||
|
||||
@Override
|
||||
Version[] getVersions(String parentPath, String itemName) throws IOException;
|
||||
|
||||
@Override
|
||||
void deleteItem(String parentPath, String itemName, int version) throws IOException;
|
||||
|
||||
@Override
|
||||
void moveFolder(String oldParentPath, String newParentPath, String oldFolderName,
|
||||
String newFolderName) throws InvalidNameException, IOException;
|
||||
|
||||
@Override
|
||||
void moveItem(String oldParentPath, String newParentPath, String oldItemName,
|
||||
String newItemName) throws InvalidNameException, IOException;
|
||||
|
||||
@Override
|
||||
ItemCheckoutStatus checkout(String parentPath, String itemName, CheckoutType checkoutType,
|
||||
String projectPath) throws IOException;
|
||||
|
||||
@Override
|
||||
void terminateCheckout(String parentPath, String itemName, long checkoutId, boolean notify)
|
||||
throws IOException;
|
||||
|
||||
@Override
|
||||
ItemCheckoutStatus getCheckout(String parentPath, String itemName, long checkoutId)
|
||||
throws IOException;
|
||||
|
||||
@Override
|
||||
ItemCheckoutStatus[] getCheckouts(String parentPath, String itemName) throws IOException;
|
||||
|
||||
@Override
|
||||
boolean folderExists(String folderPath) throws IOException;
|
||||
|
||||
@Override
|
||||
boolean fileExists(String parentPath, String itemName) throws IOException;
|
||||
|
||||
@Override
|
||||
long getLength(String parentPath, String itemName) throws IOException;
|
||||
|
||||
@Override
|
||||
boolean hasCheckouts(String parentPath, String itemName) throws IOException;
|
||||
|
||||
@Override
|
||||
boolean isCheckinActive(String parentPath, String itemName) throws IOException;
|
||||
|
||||
@Override
|
||||
void updateCheckoutVersion(String parentPath, String itemName, long checkoutId,
|
||||
int checkoutVersion) throws IOException;
|
||||
|
||||
@Override
|
||||
RepositoryChangeEvent[] getEvents() throws IOException;
|
||||
|
||||
@Override
|
||||
void close() throws IOException;
|
||||
|
||||
}
|
||||
|
@ -15,11 +15,50 @@
|
||||
*/
|
||||
package ghidra.framework.remote;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.rmi.Remote;
|
||||
|
||||
/**
|
||||
* <code>RepositoryServerHandle</code> provides access to a remote repository server via RMI.
|
||||
* <p>
|
||||
* Methods from {@link RepositoryServerHandle} <b>must</b> be re-declared here to mark them as rmi-able.
|
||||
*/
|
||||
public interface RemoteRepositoryServerHandle extends RepositoryServerHandle, Remote {
|
||||
|
||||
@Override
|
||||
boolean anonymousAccessAllowed() throws IOException;
|
||||
|
||||
@Override
|
||||
boolean isReadOnly() throws IOException;
|
||||
|
||||
@Override
|
||||
RepositoryHandle createRepository(String name) throws IOException;
|
||||
|
||||
@Override
|
||||
RepositoryHandle getRepository(String name) throws IOException;
|
||||
|
||||
@Override
|
||||
void deleteRepository(String name) throws IOException;
|
||||
|
||||
@Override
|
||||
String[] getRepositoryNames() throws IOException;
|
||||
|
||||
@Override
|
||||
String getUser() throws IOException;
|
||||
|
||||
@Override
|
||||
String[] getAllUsers() throws IOException;
|
||||
|
||||
@Override
|
||||
boolean canSetPassword() throws IOException;
|
||||
|
||||
@Override
|
||||
long getPasswordExpiration() throws IOException;
|
||||
|
||||
@Override
|
||||
boolean setPassword(char[] saltedSHA256PasswordHash) throws IOException;
|
||||
|
||||
@Override
|
||||
void connected() throws IOException;
|
||||
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user