Merge remote-tracking branch 'origin/patch'

This commit is contained in:
ghidra1
2026-06-02 12:16:35 -04:00
3 changed files with 30 additions and 10 deletions

View File

@@ -141,8 +141,14 @@ public class RemoteInputBlockStreamHandle extends RemoteBlockStreamHandle<InputB
try (OutputStream out = getBlockInputStream(socket)) {
copyBlockData(inputBlockStream, out);
// Done with compressed stream, force compressed data to flush
// before final handshake occurs
if (out instanceof RemoteDeflaterOutputStream deflatorOut) {
deflatorOut.finish();
}
// perform final handshake before close (uncompressed)
// Perform final handshake before close (uncompressed)
writeStreamEnd(socket);
readStreamEnd(socket, false);
}

View File

@@ -367,7 +367,7 @@ public abstract class LocalFolderItem implements FolderItem {
File dataDir = getDataDir();
File chkDir = new File(dataDir.getParentFile(), dataDir.getName() + ".delete");
FileUtilities.deleteDir(chkDir);
if (useDataDir && dataDir.exists() && !dataDir.renameTo(chkDir)) {
if (dataDir.exists() && !dataDir.renameTo(chkDir)) {
throw new FileInUseException(getName() + " is in use");
}
boolean success = false;
@@ -380,15 +380,13 @@ public abstract class LocalFolderItem implements FolderItem {
}
finally {
if (!success) {
if (useDataDir && !dataDir.exists() && chkDir.exists() &&
if (!dataDir.exists() && chkDir.exists() &&
propertyFile.exists()) {
chkDir.renameTo(dataDir);
}
}
else {
if (useDataDir) {
FileUtilities.deleteDir(chkDir);
}
FileUtilities.deleteDir(chkDir);
log("file deleted", user);
}
}
@@ -785,13 +783,16 @@ public abstract class LocalFolderItem implements FolderItem {
* Returns the appropriate instantiation of a LocalFolderItem
* based upon a specified property file which resides within a
* LocalFileSystem.
* <p>
* {@link LocalUnknownFolderItem} will be returned for unknown/unsupported content.
*
* @param fileSystem local file system which contains property file
* @param propertyFile property file which identifies the folder item.
* @return folder item
* @return folder item or null if invalid item.
*/
static LocalFolderItem getFolderItem(LocalFileSystem fileSystem,
ItemPropertyFile propertyFile) {
int fileType = propertyFile.getInt(FILE_TYPE, UNKNOWN_FILE_TYPE);
int fileType = propertyFile.getInt(FILE_TYPE, Integer.MIN_VALUE);
try {
if (fileType == DATAFILE_FILE_TYPE) {
return new LocalDataFileItem(fileSystem, propertyFile);
@@ -802,9 +803,15 @@ public abstract class LocalFolderItem implements FolderItem {
else if (fileType == LINK_FILE_TYPE) {
return new LocalTextDataItem(fileSystem, propertyFile);
}
else if (fileType == UNKNOWN_FILE_TYPE) {
log.error("Folder item has unspecified file type: " + new File(
else if (fileType == Integer.MIN_VALUE) {
// Item not properly created and in bad state
// Use badItem instance to remove all related storage
LocalUnknownFolderItem badItem =
new LocalUnknownFolderItem(fileSystem, propertyFile);
badItem.delete(LATEST_VERSION, "REPAIR");
log.error("Removing folder item with unspecified file type: " + new File(
propertyFile.getParentStorageDirectory(), propertyFile.getStorageName()));
return null; // triggers storage deallocation
}
else {
log.error("Folder item has unsupported file type (" + fileType + "): " + new File(

View File

@@ -29,6 +29,7 @@ import javax.rmi.ssl.SslRMIClientSocketFactory;
import org.apache.commons.lang3.RandomStringUtils;
import db.buffers.DataBuffer;
import generic.hash.HashUtilities;
import generic.test.*;
import ghidra.framework.Application;
@@ -92,6 +93,8 @@ public class ServerTestUtil {
private static final int SERVER_STARTUP_MAXWAIT_MS = 20000;
public static boolean enableCompressionOnServerStart = true;
private static IOThread cmdOut;
private static IOThread cmdErr;
private static Process serverProcess;
@@ -413,6 +416,9 @@ public class ServerTestUtil {
boolean enableAltLoginName, boolean enableSSHAuthentication,
boolean enableAnonymousAuthentication) throws IOException {
// Set client-side compression to match server
DataBuffer.enableCompressedSerializationOutput(enableCompressionOnServerStart);
if (port == 0) {
port = GHIDRA_TEST_SERVER_PORT;
}
@@ -442,6 +448,7 @@ public class ServerTestUtil {
argList.add("-Xdebug");
argList.add("-Xnoagent");
argList.add("-Djava.compiler=NONE");
argList.add("-Ddb.buffers.DataBuffer.compressedOutput=" + enableCompressionOnServerStart);
argList.add("-D" + DefaultTrustManagerFactory.GHIDRA_CACERTS_PATH_PROPERTY + "=" +
getTestPkiCACertsPath());
argList.add("-D" + DefaultKeyManagerFactory.KEYSTORE_PATH_PROPERTY + "=" +