mirror of
https://github.com/Alfresco/alfresco-community-repo.git
synced 2025-08-07 17:49:17 +00:00
.externalToolBuilders
config
source
cpp
java
org
alfresco
example
filesys
alfresco
avm
ftp
locking
netbios
server
smb
dcerpc
info
server
DCEBuffer.java
DCEBufferException.java
DCECommand.java
DCEDataPacker.java
DCEException.java
DCEList.java
DCEPipeType.java
DCEReadable.java
DCEReadableList.java
DCEWriteable.java
DCEWriteableList.java
PolicyHandle.java
PolicyHandleCache.java
Srvsvc.java
UUID.java
Wkssvc.java
mailslot
server
Capability.java
DataType.java
Dialect.java
DialectSelector.java
DirectoryWatcher.java
FileInfoLevel.java
FindFirstNext.java
InvalidUNCPathException.java
LockingAndX.java
NTIOCtl.java
NTTime.java
NetworkSession.java
PCShare.java
PacketType.java
Protocol.java
SMBDate.java
SMBDeviceType.java
SMBErrorText.java
SMBException.java
SMBStatus.java
SeekType.java
ServerType.java
SharingMode.java
TcpipSMB.java
TransactBuffer.java
TransactionNames.java
WinNT.java
util
CIFSServer.java
FTPServer.java
NFSServer.java
jcr
model
repo
service
tools
util
apache
ehcache.xml
hibernate.cfg.xml
queryRegister.dtd
test-resources
web
.classpath
.project
build.xml
git-svn-id: https://svn.alfresco.com/repos/alfresco-enterprise/alfresco/HEAD/root@5186 c4b6b30b-aa2e-2d43-bbcb-ca4b014f7261
110 lines
3.3 KiB
Java
110 lines
3.3 KiB
Java
/*
|
|
* Copyright (C) 2005-2007 Alfresco Software Limited.
|
|
*
|
|
* This program is free software; you can redistribute it and/or
|
|
* modify it under the terms of the GNU General Public License
|
|
* as published by the Free Software Foundation; either version 2
|
|
* of the License, or (at your option) any later version.
|
|
|
|
* This program is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
* GNU General Public License for more details.
|
|
|
|
* You should have received a copy of the GNU General Public License
|
|
* along with this program; if not, write to the Free Software
|
|
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
|
|
|
|
* As a special exception to the terms and conditions of version 2.0 of
|
|
* the GPL, you may redistribute this Program in connection with Free/Libre
|
|
* and Open Source Software ("FLOSS") applications as described in Alfresco's
|
|
* FLOSS exception. You should have recieved a copy of the text describing
|
|
* the FLOSS exception, and it is also available here:
|
|
* http://www.alfresco.com/legal/licensing"
|
|
*/
|
|
package org.alfresco.filesys.smb.dcerpc;
|
|
|
|
import org.alfresco.filesys.util.DataPacker;
|
|
|
|
/**
|
|
* DCE Data Packer Class
|
|
*/
|
|
public class DCEDataPacker
|
|
{
|
|
|
|
/**
|
|
* Unpack a DCE string from the buffer
|
|
*
|
|
* @param buf byte[]
|
|
* @param off int
|
|
* @return String
|
|
* @exception java.lang.IndexOutOfBoundsException If there is not enough data in the buffer.
|
|
*/
|
|
public final static String getDCEString(byte[] buf, int off) throws IndexOutOfBoundsException
|
|
{
|
|
|
|
// Check if the buffer is big enough to hold the String header
|
|
|
|
if (buf.length < off + 12)
|
|
throw new IndexOutOfBoundsException();
|
|
|
|
// Get the maximum and actual string length
|
|
|
|
int maxLen = DataPacker.getIntelInt(buf, off);
|
|
int strLen = DataPacker.getIntelInt(buf, off + 8);
|
|
|
|
// Read the Unicode string
|
|
|
|
return DataPacker.getUnicodeString(buf, off + 12, strLen);
|
|
}
|
|
|
|
/**
|
|
* Pack a DCE string into the buffer
|
|
*
|
|
* @param buf byte[]
|
|
* @param off int
|
|
* @param str String
|
|
* @param incNul boolean
|
|
* @return int
|
|
*/
|
|
public final static int putDCEString(byte[] buf, int off, String str, boolean incNul)
|
|
{
|
|
|
|
// Pack the string header
|
|
|
|
DataPacker.putIntelInt(str.length() + 1, buf, off);
|
|
DataPacker.putZeros(buf, off + 4, 4);
|
|
|
|
if (incNul == false)
|
|
DataPacker.putIntelInt(str.length(), buf, off + 8);
|
|
else
|
|
DataPacker.putIntelInt(str.length() + 1, buf, off + 8);
|
|
|
|
// Pack the string
|
|
|
|
return DataPacker.putUnicodeString(str, buf, off + 12, incNul);
|
|
}
|
|
|
|
/**
|
|
* Align a buffer offset on a longword boundary
|
|
*
|
|
* @param pos int
|
|
* @return int
|
|
*/
|
|
public final static int wordAlign(int pos)
|
|
{
|
|
return (pos + 1) & 0xFFFFFFFE;
|
|
}
|
|
|
|
/**
|
|
* Align a buffer offset on a longword boundary
|
|
*
|
|
* @param pos int
|
|
* @return int
|
|
*/
|
|
public final static int longwordAlign(int pos)
|
|
{
|
|
return (pos + 3) & 0xFFFFFFFC;
|
|
}
|
|
}
|